From ef290100b98ced55d75e27c8180f81652808b1c2 Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com>
Date: Sat, 27 Jan 2018 03:56:20 -0500
Subject: [PATCH] Update to pull in changes from personal site.

---
 .gitignore                                    |     3 +
 Gemfile                                       |     3 +
 Gemfile.lock                                  |   139 -
 config.rb                                     |    19 +-
 source/.gitignore                             |    21 +
 source/ViewerJS/compatibility.js              |   577 +
 source/ViewerJS/example.local.css             |    27 +
 source/ViewerJS/images/kogmbh.png             |   Bin 0 -> 2835 bytes
 source/ViewerJS/images/nlnet.png              |   Bin 0 -> 5400 bytes
 source/ViewerJS/images/texture.png            |   Bin 0 -> 2459 bytes
 .../images/toolbarButton-download.png         |   Bin 0 -> 512 bytes
 .../images/toolbarButton-fullscreen.png       |   Bin 0 -> 491 bytes
 .../images/toolbarButton-menuArrows.png       |   Bin 0 -> 237 bytes
 .../images/toolbarButton-pageDown.png         |   Bin 0 -> 353 bytes
 .../ViewerJS/images/toolbarButton-pageUp.png  |   Bin 0 -> 344 bytes
 .../images/toolbarButton-presentation.png     |   Bin 0 -> 4366 bytes
 .../ViewerJS/images/toolbarButton-zoomIn.png  |   Bin 0 -> 228 bytes
 .../ViewerJS/images/toolbarButton-zoomOut.png |   Bin 0 -> 143 bytes
 source/ViewerJS/index.html                    |   145 +
 source/ViewerJS/pdf.js                        |  8052 ++++
 source/ViewerJS/pdf.worker.js                 | 39353 ++++++++++++++++
 source/ViewerJS/pdfjsversion.js               |     1 +
 source/ViewerJS/text_layer_builder.js         |   419 +
 source/ViewerJS/ui_utils.js                   |   394 +
 source/ViewerJS/webodf.js                     |   936 +
 source/author.html.haml                       |    34 -
 source/blog.html.haml                         |    19 +
 source/fonts/KaTeX_AMS-Regular.eot            |   Bin 0 -> 71656 bytes
 source/fonts/KaTeX_AMS-Regular.ttf            |   Bin 0 -> 71428 bytes
 source/fonts/KaTeX_AMS-Regular.woff           |   Bin 0 -> 40200 bytes
 source/fonts/KaTeX_AMS-Regular.woff2          |   Bin 0 -> 33188 bytes
 source/fonts/KaTeX_Caligraphic-Bold.eot       |   Bin 0 -> 19836 bytes
 source/fonts/KaTeX_Caligraphic-Bold.ttf       |   Bin 0 -> 19588 bytes
 source/fonts/KaTeX_Caligraphic-Bold.woff      |   Bin 0 -> 12136 bytes
 source/fonts/KaTeX_Caligraphic-Bold.woff2     |   Bin 0 -> 10604 bytes
 source/fonts/KaTeX_Caligraphic-Regular.eot    |   Bin 0 -> 19220 bytes
 source/fonts/KaTeX_Caligraphic-Regular.ttf    |   Bin 0 -> 18960 bytes
 source/fonts/KaTeX_Caligraphic-Regular.woff   |   Bin 0 -> 11868 bytes
 source/fonts/KaTeX_Caligraphic-Regular.woff2  |   Bin 0 -> 10396 bytes
 source/fonts/KaTeX_Fraktur-Bold.eot           |   Bin 0 -> 36200 bytes
 source/fonts/KaTeX_Fraktur-Bold.ttf           |   Bin 0 -> 35968 bytes
 source/fonts/KaTeX_Fraktur-Bold.woff          |   Bin 0 -> 23388 bytes
 source/fonts/KaTeX_Fraktur-Bold.woff2         |   Bin 0 -> 20476 bytes
 source/fonts/KaTeX_Fraktur-Regular.eot        |   Bin 0 -> 34896 bytes
 source/fonts/KaTeX_Fraktur-Regular.ttf        |   Bin 0 -> 34652 bytes
 source/fonts/KaTeX_Fraktur-Regular.woff       |   Bin 0 -> 22844 bytes
 source/fonts/KaTeX_Fraktur-Regular.woff2      |   Bin 0 -> 19868 bytes
 source/fonts/KaTeX_Greek-Bold.woff2           |   Bin 0 -> 2904 bytes
 source/fonts/KaTeX_Greek-BoldItalic.woff2     |   Bin 0 -> 7648 bytes
 source/fonts/KaTeX_Greek-Italic.woff2         |   Bin 0 -> 7436 bytes
 source/fonts/KaTeX_Greek-Regular.woff2        |   Bin 0 -> 3036 bytes
 source/fonts/KaTeX_Main-Bold.eot              |   Bin 0 -> 60688 bytes
 source/fonts/KaTeX_Main-Bold.ttf              |   Bin 0 -> 60468 bytes
 source/fonts/KaTeX_Main-Bold.woff             |   Bin 0 -> 35480 bytes
 source/fonts/KaTeX_Main-Bold.woff2            |   Bin 0 -> 29492 bytes
 source/fonts/KaTeX_Main-Italic.eot            |   Bin 0 -> 44132 bytes
 source/fonts/KaTeX_Main-Italic.ttf            |   Bin 0 -> 43904 bytes
 source/fonts/KaTeX_Main-Italic.woff           |   Bin 0 -> 24880 bytes
 source/fonts/KaTeX_Main-Italic.woff2          |   Bin 0 -> 21032 bytes
 source/fonts/KaTeX_Main-Regular.eot           |   Bin 0 -> 68228 bytes
 source/fonts/KaTeX_Main-Regular.ttf           |   Bin 0 -> 67996 bytes
 source/fonts/KaTeX_Main-Regular.woff          |   Bin 0 -> 37620 bytes
 source/fonts/KaTeX_Main-Regular.woff2         |   Bin 0 -> 31220 bytes
 source/fonts/KaTeX_Math-BoldItalic.eot        |   Bin 0 -> 39990 bytes
 source/fonts/KaTeX_Math-BoldItalic.ttf        |   Bin 0 -> 39744 bytes
 source/fonts/KaTeX_Math-BoldItalic.woff       |   Bin 0 -> 23192 bytes
 source/fonts/KaTeX_Math-BoldItalic.woff2      |   Bin 0 -> 20036 bytes
 source/fonts/KaTeX_Math-Italic.eot            |   Bin 0 -> 41676 bytes
 source/fonts/KaTeX_Math-Italic.ttf            |   Bin 0 -> 41448 bytes
 source/fonts/KaTeX_Math-Italic.woff           |   Bin 0 -> 23820 bytes
 source/fonts/KaTeX_Math-Italic.woff2          |   Bin 0 -> 20432 bytes
 source/fonts/KaTeX_Math-Regular.eot           |   Bin 0 -> 41536 bytes
 source/fonts/KaTeX_Math-Regular.ttf           |   Bin 0 -> 41304 bytes
 source/fonts/KaTeX_Math-Regular.woff          |   Bin 0 -> 23712 bytes
 source/fonts/KaTeX_Math-Regular.woff2         |   Bin 0 -> 20344 bytes
 source/fonts/KaTeX_SansSerif-Bold.eot         |   Bin 0 -> 34204 bytes
 source/fonts/KaTeX_SansSerif-Bold.ttf         |   Bin 0 -> 33964 bytes
 source/fonts/KaTeX_SansSerif-Bold.woff        |   Bin 0 -> 19196 bytes
 source/fonts/KaTeX_SansSerif-Bold.woff2       |   Bin 0 -> 16020 bytes
 source/fonts/KaTeX_SansSerif-Italic.eot       |   Bin 0 -> 31320 bytes
 source/fonts/KaTeX_SansSerif-Italic.ttf       |   Bin 0 -> 31072 bytes
 source/fonts/KaTeX_SansSerif-Italic.woff      |   Bin 0 -> 18080 bytes
 source/fonts/KaTeX_SansSerif-Italic.woff2     |   Bin 0 -> 15152 bytes
 source/fonts/KaTeX_SansSerif-Regular.eot      |   Bin 0 -> 30212 bytes
 source/fonts/KaTeX_SansSerif-Regular.ttf      |   Bin 0 -> 29960 bytes
 source/fonts/KaTeX_SansSerif-Regular.woff     |   Bin 0 -> 16744 bytes
 source/fonts/KaTeX_SansSerif-Regular.woff2    |   Bin 0 -> 13908 bytes
 source/fonts/KaTeX_Script-Regular.eot         |   Bin 0 -> 25104 bytes
 source/fonts/KaTeX_Script-Regular.ttf         |   Bin 0 -> 24864 bytes
 source/fonts/KaTeX_Script-Regular.woff        |   Bin 0 -> 13856 bytes
 source/fonts/KaTeX_Script-Regular.woff2       |   Bin 0 -> 12276 bytes
 source/fonts/KaTeX_Size1-Regular.eot          |   Bin 0 -> 13408 bytes
 source/fonts/KaTeX_Size1-Regular.ttf          |   Bin 0 -> 13172 bytes
 source/fonts/KaTeX_Size1-Regular.woff         |   Bin 0 -> 6980 bytes
 source/fonts/KaTeX_Size1-Regular.woff2        |   Bin 0 -> 5820 bytes
 source/fonts/KaTeX_Size2-Regular.eot          |   Bin 0 -> 12648 bytes
 source/fonts/KaTeX_Size2-Regular.ttf          |   Bin 0 -> 12412 bytes
 source/fonts/KaTeX_Size2-Regular.woff         |   Bin 0 -> 6684 bytes
 source/fonts/KaTeX_Size2-Regular.woff2        |   Bin 0 -> 5560 bytes
 source/fonts/KaTeX_Size3-Regular.eot          |   Bin 0 -> 8596 bytes
 source/fonts/KaTeX_Size3-Regular.ttf          |   Bin 0 -> 8360 bytes
 source/fonts/KaTeX_Size3-Regular.woff         |   Bin 0 -> 4776 bytes
 source/fonts/KaTeX_Size3-Regular.woff2        |   Bin 0 -> 3856 bytes
 source/fonts/KaTeX_Size4-Regular.eot          |   Bin 0 -> 11520 bytes
 source/fonts/KaTeX_Size4-Regular.ttf          |   Bin 0 -> 11284 bytes
 source/fonts/KaTeX_Size4-Regular.woff         |   Bin 0 -> 6456 bytes
 source/fonts/KaTeX_Size4-Regular.woff2        |   Bin 0 -> 5172 bytes
 source/fonts/KaTeX_Typewriter-Regular.eot     |   Bin 0 -> 35784 bytes
 source/fonts/KaTeX_Typewriter-Regular.ttf     |   Bin 0 -> 35528 bytes
 source/fonts/KaTeX_Typewriter-Regular.woff    |   Bin 0 -> 20712 bytes
 source/fonts/KaTeX_Typewriter-Regular.woff2   |   Bin 0 -> 17344 bytes
 source/images/favicon.ico                     |   Bin 318 -> 0 bytes
 source/index.html.haml                        |    38 -
 source/index.html.md                          |     8 +
 source/javascripts/ghoststa.js                |    79 +
 source/javascripts/ghoststa_vendor.js         |  9927 ++++
 source/javascripts/ie/backgroundsize.min.htc  |     7 +
 source/javascripts/ie/html5.js                |     7 +
 source/javascripts/ie/html5shiv.js            |     8 +
 source/javascripts/ie/respond.min.js          |     6 +
 source/javascripts/jquery.min.js              |     5 +
 source/javascripts/jquery.scrollex.min.js     |     2 +
 source/javascripts/jquery.scrolly.min.js      |     2 +
 source/javascripts/katex.js                   |  9075 ++++
 source/javascripts/main.js                    |   100 +
 source/javascripts/navigation.js              |    33 +
 source/javascripts/pseudocode.js              |     4 +
 source/javascripts/skel.min.js                |     2 +
 source/javascripts/util.js                    |   587 +
 source/layouts/layout.haml                    |    94 +-
 source/layouts/page.haml                      |     4 +-
 source/layouts/post.haml                      |    77 +-
 source/shared/_article.haml                   |     2 +-
 source/shared/_disqus.haml                    |    21 +
 source/shared/_navigation.haml                |    14 -
 source/shared/_page_articles.haml             |    25 -
 source/shared/_tags_nav.haml                  |     4 +-
 source/stylesheets/application.css.scss       |    33 +-
 source/stylesheets/font-awesome.min.css       |     4 +
 source/stylesheets/images/arrow.svg           |     6 +
 source/stylesheets/images/bars.svg            |     6 +
 source/stylesheets/images/close.svg           |     5 +
 source/stylesheets/katex.css                  |   976 +
 source/stylesheets/pseudocode.css             |     1 +
 source/tag.html.haml                          |    22 -
 145 files changed, 70905 insertions(+), 421 deletions(-)
 delete mode 100644 Gemfile.lock
 create mode 100644 source/.gitignore
 create mode 100644 source/ViewerJS/compatibility.js
 create mode 100644 source/ViewerJS/example.local.css
 create mode 100644 source/ViewerJS/images/kogmbh.png
 create mode 100644 source/ViewerJS/images/nlnet.png
 create mode 100644 source/ViewerJS/images/texture.png
 create mode 100644 source/ViewerJS/images/toolbarButton-download.png
 create mode 100644 source/ViewerJS/images/toolbarButton-fullscreen.png
 create mode 100644 source/ViewerJS/images/toolbarButton-menuArrows.png
 create mode 100644 source/ViewerJS/images/toolbarButton-pageDown.png
 create mode 100644 source/ViewerJS/images/toolbarButton-pageUp.png
 create mode 100644 source/ViewerJS/images/toolbarButton-presentation.png
 create mode 100644 source/ViewerJS/images/toolbarButton-zoomIn.png
 create mode 100644 source/ViewerJS/images/toolbarButton-zoomOut.png
 create mode 100644 source/ViewerJS/index.html
 create mode 100644 source/ViewerJS/pdf.js
 create mode 100644 source/ViewerJS/pdf.worker.js
 create mode 100644 source/ViewerJS/pdfjsversion.js
 create mode 100644 source/ViewerJS/text_layer_builder.js
 create mode 100644 source/ViewerJS/ui_utils.js
 create mode 100644 source/ViewerJS/webodf.js
 create mode 100644 source/blog.html.haml
 create mode 100644 source/fonts/KaTeX_AMS-Regular.eot
 create mode 100644 source/fonts/KaTeX_AMS-Regular.ttf
 create mode 100644 source/fonts/KaTeX_AMS-Regular.woff
 create mode 100644 source/fonts/KaTeX_AMS-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Caligraphic-Bold.eot
 create mode 100644 source/fonts/KaTeX_Caligraphic-Bold.ttf
 create mode 100644 source/fonts/KaTeX_Caligraphic-Bold.woff
 create mode 100644 source/fonts/KaTeX_Caligraphic-Bold.woff2
 create mode 100644 source/fonts/KaTeX_Caligraphic-Regular.eot
 create mode 100644 source/fonts/KaTeX_Caligraphic-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Caligraphic-Regular.woff
 create mode 100644 source/fonts/KaTeX_Caligraphic-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Fraktur-Bold.eot
 create mode 100644 source/fonts/KaTeX_Fraktur-Bold.ttf
 create mode 100644 source/fonts/KaTeX_Fraktur-Bold.woff
 create mode 100644 source/fonts/KaTeX_Fraktur-Bold.woff2
 create mode 100644 source/fonts/KaTeX_Fraktur-Regular.eot
 create mode 100644 source/fonts/KaTeX_Fraktur-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Fraktur-Regular.woff
 create mode 100644 source/fonts/KaTeX_Fraktur-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Greek-Bold.woff2
 create mode 100644 source/fonts/KaTeX_Greek-BoldItalic.woff2
 create mode 100644 source/fonts/KaTeX_Greek-Italic.woff2
 create mode 100644 source/fonts/KaTeX_Greek-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Main-Bold.eot
 create mode 100644 source/fonts/KaTeX_Main-Bold.ttf
 create mode 100644 source/fonts/KaTeX_Main-Bold.woff
 create mode 100644 source/fonts/KaTeX_Main-Bold.woff2
 create mode 100644 source/fonts/KaTeX_Main-Italic.eot
 create mode 100644 source/fonts/KaTeX_Main-Italic.ttf
 create mode 100644 source/fonts/KaTeX_Main-Italic.woff
 create mode 100644 source/fonts/KaTeX_Main-Italic.woff2
 create mode 100644 source/fonts/KaTeX_Main-Regular.eot
 create mode 100644 source/fonts/KaTeX_Main-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Main-Regular.woff
 create mode 100644 source/fonts/KaTeX_Main-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Math-BoldItalic.eot
 create mode 100644 source/fonts/KaTeX_Math-BoldItalic.ttf
 create mode 100644 source/fonts/KaTeX_Math-BoldItalic.woff
 create mode 100644 source/fonts/KaTeX_Math-BoldItalic.woff2
 create mode 100644 source/fonts/KaTeX_Math-Italic.eot
 create mode 100644 source/fonts/KaTeX_Math-Italic.ttf
 create mode 100644 source/fonts/KaTeX_Math-Italic.woff
 create mode 100644 source/fonts/KaTeX_Math-Italic.woff2
 create mode 100644 source/fonts/KaTeX_Math-Regular.eot
 create mode 100644 source/fonts/KaTeX_Math-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Math-Regular.woff
 create mode 100644 source/fonts/KaTeX_Math-Regular.woff2
 create mode 100644 source/fonts/KaTeX_SansSerif-Bold.eot
 create mode 100644 source/fonts/KaTeX_SansSerif-Bold.ttf
 create mode 100644 source/fonts/KaTeX_SansSerif-Bold.woff
 create mode 100644 source/fonts/KaTeX_SansSerif-Bold.woff2
 create mode 100644 source/fonts/KaTeX_SansSerif-Italic.eot
 create mode 100644 source/fonts/KaTeX_SansSerif-Italic.ttf
 create mode 100644 source/fonts/KaTeX_SansSerif-Italic.woff
 create mode 100644 source/fonts/KaTeX_SansSerif-Italic.woff2
 create mode 100644 source/fonts/KaTeX_SansSerif-Regular.eot
 create mode 100644 source/fonts/KaTeX_SansSerif-Regular.ttf
 create mode 100644 source/fonts/KaTeX_SansSerif-Regular.woff
 create mode 100644 source/fonts/KaTeX_SansSerif-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Script-Regular.eot
 create mode 100644 source/fonts/KaTeX_Script-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Script-Regular.woff
 create mode 100644 source/fonts/KaTeX_Script-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Size1-Regular.eot
 create mode 100644 source/fonts/KaTeX_Size1-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Size1-Regular.woff
 create mode 100644 source/fonts/KaTeX_Size1-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Size2-Regular.eot
 create mode 100644 source/fonts/KaTeX_Size2-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Size2-Regular.woff
 create mode 100644 source/fonts/KaTeX_Size2-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Size3-Regular.eot
 create mode 100644 source/fonts/KaTeX_Size3-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Size3-Regular.woff
 create mode 100644 source/fonts/KaTeX_Size3-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Size4-Regular.eot
 create mode 100644 source/fonts/KaTeX_Size4-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Size4-Regular.woff
 create mode 100644 source/fonts/KaTeX_Size4-Regular.woff2
 create mode 100644 source/fonts/KaTeX_Typewriter-Regular.eot
 create mode 100644 source/fonts/KaTeX_Typewriter-Regular.ttf
 create mode 100644 source/fonts/KaTeX_Typewriter-Regular.woff
 create mode 100644 source/fonts/KaTeX_Typewriter-Regular.woff2
 delete mode 100644 source/images/favicon.ico
 delete mode 100644 source/index.html.haml
 create mode 100644 source/index.html.md
 create mode 100644 source/javascripts/ghoststa.js
 create mode 100644 source/javascripts/ghoststa_vendor.js
 create mode 100644 source/javascripts/ie/backgroundsize.min.htc
 create mode 100644 source/javascripts/ie/html5.js
 create mode 100644 source/javascripts/ie/html5shiv.js
 create mode 100644 source/javascripts/ie/respond.min.js
 create mode 100644 source/javascripts/jquery.min.js
 create mode 100644 source/javascripts/jquery.scrollex.min.js
 create mode 100644 source/javascripts/jquery.scrolly.min.js
 create mode 100644 source/javascripts/katex.js
 create mode 100644 source/javascripts/main.js
 create mode 100644 source/javascripts/navigation.js
 create mode 100644 source/javascripts/pseudocode.js
 create mode 100644 source/javascripts/skel.min.js
 create mode 100644 source/javascripts/util.js
 create mode 100644 source/shared/_disqus.haml
 create mode 100644 source/stylesheets/font-awesome.min.css
 create mode 100644 source/stylesheets/images/arrow.svg
 create mode 100644 source/stylesheets/images/bars.svg
 create mode 100644 source/stylesheets/images/close.svg
 create mode 100644 source/stylesheets/katex.css
 create mode 100644 source/stylesheets/pseudocode.css

diff --git a/.gitignore b/.gitignore
index 2dcd3bb..97840f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,6 @@
 
 # IDEA IDE
 .idea/
+
+#Ruby
+Gemfile.lock
diff --git a/Gemfile b/Gemfile
index aece9be..42e8923 100644
--- a/Gemfile
+++ b/Gemfile
@@ -19,7 +19,10 @@ gem 'builder', '~> 3.2.2'
 
 # Code syntax highlighting
 gem 'middleman-syntax', '~> 3.0.0'
+
+#uncomment the following to use redcarpet instead of kramdown and comment the following block.
 gem 'redcarpet', '~> 3.3.4'
+gem 'kramdown', '~> 1.13.2'
 
 # For "summary"-Helper
 gem 'nokogiri', '~> 1.6.8'
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644
index cf7f4fe..0000000
--- a/Gemfile.lock
+++ /dev/null
@@ -1,139 +0,0 @@
-GEM
-  remote: https://rubygems.org/
-  specs:
-    activesupport (5.0.2)
-      concurrent-ruby (~> 1.0, >= 1.0.2)
-      i18n (~> 0.7)
-      minitest (~> 5.1)
-      tzinfo (~> 1.1)
-    addressable (2.5.0)
-      public_suffix (~> 2.0, >= 2.0.2)
-    backports (3.6.8)
-    builder (3.2.3)
-    coffee-script (2.4.1)
-      coffee-script-source
-      execjs
-    coffee-script-source (1.12.2)
-    compass-import-once (1.0.5)
-      sass (>= 3.2, < 3.5)
-    concurrent-ruby (1.0.5)
-    contracts (0.13.0)
-    dotenv (2.2.0)
-    em-websocket (0.5.1)
-      eventmachine (>= 0.12.9)
-      http_parser.rb (~> 0.6.0)
-    erubis (2.7.0)
-    eventmachine (1.2.3)
-    execjs (2.7.0)
-    fast_blank (1.0.0)
-    fastimage (2.1.0)
-    ffi (1.9.18)
-    haml (4.0.7)
-      tilt
-    hamster (3.0.0)
-      concurrent-ruby (~> 1.0)
-    hashie (3.5.5)
-    http_parser.rb (0.6.0)
-    i18n (0.7.0)
-    kramdown (1.13.2)
-    listen (3.0.8)
-      rb-fsevent (~> 0.9, >= 0.9.4)
-      rb-inotify (~> 0.9, >= 0.9.7)
-    memoist (0.15.0)
-    middleman (4.2.1)
-      coffee-script (~> 2.2)
-      compass-import-once (= 1.0.5)
-      haml (>= 4.0.5)
-      kramdown (~> 1.2)
-      middleman-cli (= 4.2.1)
-      middleman-core (= 4.2.1)
-      sass (>= 3.4.0, < 4.0)
-    middleman-blog (4.0.1)
-      addressable (~> 2.3)
-      middleman-core (>= 4.0.0)
-      tzinfo (>= 0.3.0)
-    middleman-cli (4.2.1)
-      thor (>= 0.17.0, < 2.0)
-    middleman-core (4.2.1)
-      activesupport (>= 4.2, < 5.1)
-      addressable (~> 2.3)
-      backports (~> 3.6)
-      bundler (~> 1.1)
-      contracts (~> 0.13.0)
-      dotenv
-      erubis
-      execjs (~> 2.0)
-      fast_blank
-      fastimage (~> 2.0)
-      hamster (~> 3.0)
-      hashie (~> 3.4)
-      i18n (~> 0.7.0)
-      listen (~> 3.0.0)
-      memoist (~> 0.14)
-      padrino-helpers (~> 0.13.0)
-      parallel
-      rack (>= 1.4.5, < 3)
-      sass (>= 3.4)
-      servolux
-      tilt (~> 2.0)
-      uglifier (~> 3.0)
-    middleman-livereload (3.4.6)
-      em-websocket (~> 0.5.1)
-      middleman-core (>= 3.3)
-      rack-livereload (~> 0.3.15)
-    middleman-sprockets (4.0.0)
-      middleman-core (~> 4.0)
-      sprockets (>= 3.0)
-    middleman-syntax (3.0.0)
-      middleman-core (>= 3.2)
-      rouge (~> 2.0)
-    mini_portile2 (2.1.0)
-    minitest (5.10.1)
-    nokogiri (1.6.8.1)
-      mini_portile2 (~> 2.1.0)
-    padrino-helpers (0.13.3.3)
-      i18n (~> 0.6, >= 0.6.7)
-      padrino-support (= 0.13.3.3)
-      tilt (>= 1.4.1, < 3)
-    padrino-support (0.13.3.3)
-      activesupport (>= 3.1)
-    parallel (1.11.1)
-    public_suffix (2.0.5)
-    rack (2.0.1)
-    rack-livereload (0.3.16)
-      rack
-    rb-fsevent (0.9.8)
-    rb-inotify (0.9.8)
-      ffi (>= 0.5.0)
-    redcarpet (3.3.4)
-    rouge (2.0.7)
-    sass (3.4.23)
-    servolux (0.13.0)
-    sprockets (3.7.1)
-      concurrent-ruby (~> 1.0)
-      rack (> 1, < 3)
-    thor (0.19.4)
-    thread_safe (0.3.6)
-    tilt (2.0.7)
-    tzinfo (1.2.2)
-      thread_safe (~> 0.1)
-    uglifier (3.1.9)
-      execjs (>= 0.3.0, < 3)
-
-PLATFORMS
-  ruby
-
-DEPENDENCIES
-  builder (~> 3.2.2)
-  middleman (~> 4.0)
-  middleman-blog (~> 4.0)
-  middleman-livereload
-  middleman-sprockets (~> 4.0.0)
-  middleman-syntax (~> 3.0.0)
-  nokogiri (~> 1.6.8)
-  redcarpet (~> 3.3.4)
-  tzinfo-data
-  wdm (~> 0.1.1)
-
-BUNDLED WITH
-   1.14.6
diff --git a/config.rb b/config.rb
index 2d10e5c..2b41dfb 100644
--- a/config.rb
+++ b/config.rb
@@ -20,7 +20,8 @@ config[:ghoststa] = {
     twitter: nil # Optional
   },
   navigation: {
-    "Home" => "/"
+    "Home" => "/",
+    "Blog" => "/blog"
   }
 }
 
@@ -112,9 +113,19 @@ activate :directory_indexes
 
 # Middleman-Syntax - https://github.com/middleman/middleman-syntax
 set :haml, { ugly: true }
-set :markdown_engine, :redcarpet
-set :markdown, fenced_code_blocks: true, smartypants: true, footnotes: true,
-  link_attributes: { rel: 'nofollow' }, tables: true
+
+#uncomment the following to use redcarpet instead of kramdown and comment the following block.
+#set :markdown_engine, :redcarpet
+#set :markdown, fenced_code_blocks: true, smartypants: true, footnotes: true,
+#  link_attributes: { rel: 'nofollow' }, tables: true
+set :markdown_engine, :kramdown
+set :markdown, :layout_engine => :haml,
+    :tables             => true,
+    :autolink           => true,
+    :smartypants        => true,
+    :fenced_code_blocks => true,
+    :footnotes          => true
+
 activate :syntax, line_numbers: false
 
 # Middleman-Sprockets - https://github.com/middleman/middleman-sprockets
diff --git a/source/.gitignore b/source/.gitignore
new file mode 100644
index 0000000..2dcd3bb
--- /dev/null
+++ b/source/.gitignore
@@ -0,0 +1,21 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+#
+# If you find yourself ignoring temporary files generated by your text editor
+# or operating system, you probably want to add a global ignore instead:
+# git config --global core.excludesfile ~/.gitignore_global
+
+# Ignore bundler config
+/.bundle
+
+# Ignore the build directory
+/build
+
+# Ignore cache
+/.sass-cache
+/.cache
+
+# Ignore .DS_store file
+.DS_Store
+
+# IDEA IDE
+.idea/
diff --git a/source/ViewerJS/compatibility.js b/source/ViewerJS/compatibility.js
new file mode 100644
index 0000000..06f54bf
--- /dev/null
+++ b/source/ViewerJS/compatibility.js
@@ -0,0 +1,577 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+/* Copyright 2012 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* globals VBArray, PDFJS */
+
+'use strict';
+
+// Initializing PDFJS global object here, it case if we need to change/disable
+// some PDF.js features, e.g. range requests
+if (typeof PDFJS === 'undefined') {
+  (typeof window !== 'undefined' ? window : this).PDFJS = {};
+}
+
+// Checking if the typed arrays are supported
+// Support: iOS<6.0 (subarray), IE<10, Android<4.0
+(function checkTypedArrayCompatibility() {
+  if (typeof Uint8Array !== 'undefined') {
+    // Support: iOS<6.0
+    if (typeof Uint8Array.prototype.subarray === 'undefined') {
+        Uint8Array.prototype.subarray = function subarray(start, end) {
+          return new Uint8Array(this.slice(start, end));
+        };
+        Float32Array.prototype.subarray = function subarray(start, end) {
+          return new Float32Array(this.slice(start, end));
+        };
+    }
+
+    // Support: Android<4.1
+    if (typeof Float64Array === 'undefined') {
+      window.Float64Array = Float32Array;
+    }
+    return;
+  }
+
+  function subarray(start, end) {
+    return new TypedArray(this.slice(start, end));
+  }
+
+  function setArrayOffset(array, offset) {
+    if (arguments.length < 2) {
+      offset = 0;
+    }
+    for (var i = 0, n = array.length; i < n; ++i, ++offset) {
+      this[offset] = array[i] & 0xFF;
+    }
+  }
+
+  function TypedArray(arg1) {
+    var result, i, n;
+    if (typeof arg1 === 'number') {
+      result = [];
+      for (i = 0; i < arg1; ++i) {
+        result[i] = 0;
+      }
+    } else if ('slice' in arg1) {
+      result = arg1.slice(0);
+    } else {
+      result = [];
+      for (i = 0, n = arg1.length; i < n; ++i) {
+        result[i] = arg1[i];
+      }
+    }
+
+    result.subarray = subarray;
+    result.buffer = result;
+    result.byteLength = result.length;
+    result.set = setArrayOffset;
+
+    if (typeof arg1 === 'object' && arg1.buffer) {
+      result.buffer = arg1.buffer;
+    }
+    return result;
+  }
+
+  window.Uint8Array = TypedArray;
+  window.Int8Array = TypedArray;
+
+  // we don't need support for set, byteLength for 32-bit array
+  // so we can use the TypedArray as well
+  window.Uint32Array = TypedArray;
+  window.Int32Array = TypedArray;
+  window.Uint16Array = TypedArray;
+  window.Float32Array = TypedArray;
+  window.Float64Array = TypedArray;
+})();
+
+// URL = URL || webkitURL
+// Support: Safari<7, Android 4.2+
+(function normalizeURLObject() {
+  if (!window.URL) {
+    window.URL = window.webkitURL;
+  }
+})();
+
+// Object.defineProperty()?
+// Support: Android<4.0, Safari<5.1
+(function checkObjectDefinePropertyCompatibility() {
+  if (typeof Object.defineProperty !== 'undefined') {
+    var definePropertyPossible = true;
+    try {
+      // some browsers (e.g. safari) cannot use defineProperty() on DOM objects
+      // and thus the native version is not sufficient
+      Object.defineProperty(new Image(), 'id', { value: 'test' });
+      // ... another test for android gb browser for non-DOM objects
+      var Test = function Test() {};
+      Test.prototype = { get id() { } };
+      Object.defineProperty(new Test(), 'id',
+        { value: '', configurable: true, enumerable: true, writable: false });
+    } catch (e) {
+      definePropertyPossible = false;
+    }
+    if (definePropertyPossible) {
+      return;
+    }
+  }
+
+  Object.defineProperty = function objectDefineProperty(obj, name, def) {
+    delete obj[name];
+    if ('get' in def) {
+      obj.__defineGetter__(name, def['get']);
+    }
+    if ('set' in def) {
+      obj.__defineSetter__(name, def['set']);
+    }
+    if ('value' in def) {
+      obj.__defineSetter__(name, function objectDefinePropertySetter(value) {
+        this.__defineGetter__(name, function objectDefinePropertyGetter() {
+          return value;
+        });
+        return value;
+      });
+      obj[name] = def.value;
+    }
+  };
+})();
+
+
+// No XMLHttpRequest#response?
+// Support: IE<11, Android <4.0
+(function checkXMLHttpRequestResponseCompatibility() {
+  var xhrPrototype = XMLHttpRequest.prototype;
+  var xhr = new XMLHttpRequest();
+  if (!('overrideMimeType' in xhr)) {
+    // IE10 might have response, but not overrideMimeType
+    // Support: IE10
+    Object.defineProperty(xhrPrototype, 'overrideMimeType', {
+      value: function xmlHttpRequestOverrideMimeType(mimeType) {}
+    });
+  }
+  if ('responseType' in xhr) {
+    return;
+  }
+
+  // The worker will be using XHR, so we can save time and disable worker.
+  PDFJS.disableWorker = true;
+
+  Object.defineProperty(xhrPrototype, 'responseType', {
+    get: function xmlHttpRequestGetResponseType() {
+      return this._responseType || 'text';
+    },
+    set: function xmlHttpRequestSetResponseType(value) {
+      if (value === 'text' || value === 'arraybuffer') {
+        this._responseType = value;
+        if (value === 'arraybuffer' &&
+            typeof this.overrideMimeType === 'function') {
+          this.overrideMimeType('text/plain; charset=x-user-defined');
+        }
+      }
+    }
+  });
+
+  // Support: IE9
+  if (typeof VBArray !== 'undefined') {
+    Object.defineProperty(xhrPrototype, 'response', {
+      get: function xmlHttpRequestResponseGet() {
+        if (this.responseType === 'arraybuffer') {
+          return new Uint8Array(new VBArray(this.responseBody).toArray());
+        } else {
+          return this.responseText;
+        }
+      }
+    });
+    return;
+  }
+
+  Object.defineProperty(xhrPrototype, 'response', {
+    get: function xmlHttpRequestResponseGet() {
+      if (this.responseType !== 'arraybuffer') {
+        return this.responseText;
+      }
+      var text = this.responseText;
+      var i, n = text.length;
+      var result = new Uint8Array(n);
+      for (i = 0; i < n; ++i) {
+        result[i] = text.charCodeAt(i) & 0xFF;
+      }
+      return result.buffer;
+    }
+  });
+})();
+
+// window.btoa (base64 encode function) ?
+// Support: IE<10
+(function checkWindowBtoaCompatibility() {
+  if ('btoa' in window) {
+    return;
+  }
+
+  var digits =
+    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+
+  window.btoa = function windowBtoa(chars) {
+    var buffer = '';
+    var i, n;
+    for (i = 0, n = chars.length; i < n; i += 3) {
+      var b1 = chars.charCodeAt(i) & 0xFF;
+      var b2 = chars.charCodeAt(i + 1) & 0xFF;
+      var b3 = chars.charCodeAt(i + 2) & 0xFF;
+      var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
+      var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
+      var d4 = i + 2 < n ? (b3 & 0x3F) : 64;
+      buffer += (digits.charAt(d1) + digits.charAt(d2) +
+                 digits.charAt(d3) + digits.charAt(d4));
+    }
+    return buffer;
+  };
+})();
+
+// window.atob (base64 encode function)?
+// Support: IE<10
+(function checkWindowAtobCompatibility() {
+  if ('atob' in window) {
+    return;
+  }
+
+  // https://github.com/davidchambers/Base64.js
+  var digits =
+    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+  window.atob = function (input) {
+    input = input.replace(/=+$/, '');
+    if (input.length % 4 === 1) {
+      throw new Error('bad atob input');
+    }
+    for (
+      // initialize result and counters
+      var bc = 0, bs, buffer, idx = 0, output = '';
+      // get next character
+      buffer = input.charAt(idx++);
+      // character found in table?
+      // initialize bit storage and add its ascii value
+      ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
+        // and if not first of each 4 characters,
+        // convert the first 8 bits to one ascii character
+        bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
+    ) {
+      // try to find character in table (0-63, not found => -1)
+      buffer = digits.indexOf(buffer);
+    }
+    return output;
+  };
+})();
+
+// Function.prototype.bind?
+// Support: Android<4.0, iOS<6.0
+(function checkFunctionPrototypeBindCompatibility() {
+  if (typeof Function.prototype.bind !== 'undefined') {
+    return;
+  }
+
+  Function.prototype.bind = function functionPrototypeBind(obj) {
+    var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);
+    var bound = function functionPrototypeBindBound() {
+      var args = headArgs.concat(Array.prototype.slice.call(arguments));
+      return fn.apply(obj, args);
+    };
+    return bound;
+  };
+})();
+
+// HTMLElement dataset property
+// Support: IE<11, Safari<5.1, Android<4.0
+(function checkDatasetProperty() {
+  var div = document.createElement('div');
+  if ('dataset' in div) {
+    return; // dataset property exists
+  }
+
+  Object.defineProperty(HTMLElement.prototype, 'dataset', {
+    get: function() {
+      if (this._dataset) {
+        return this._dataset;
+      }
+
+      var dataset = {};
+      for (var j = 0, jj = this.attributes.length; j < jj; j++) {
+        var attribute = this.attributes[j];
+        if (attribute.name.substring(0, 5) !== 'data-') {
+          continue;
+        }
+        var key = attribute.name.substring(5).replace(/\-([a-z])/g,
+          function(all, ch) {
+            return ch.toUpperCase();
+          });
+        dataset[key] = attribute.value;
+      }
+
+      Object.defineProperty(this, '_dataset', {
+        value: dataset,
+        writable: false,
+        enumerable: false
+      });
+      return dataset;
+    },
+    enumerable: true
+  });
+})();
+
+// HTMLElement classList property
+// Support: IE<10, Android<4.0, iOS<5.0
+(function checkClassListProperty() {
+  var div = document.createElement('div');
+  if ('classList' in div) {
+    return; // classList property exists
+  }
+
+  function changeList(element, itemName, add, remove) {
+    var s = element.className || '';
+    var list = s.split(/\s+/g);
+    if (list[0] === '') {
+      list.shift();
+    }
+    var index = list.indexOf(itemName);
+    if (index < 0 && add) {
+      list.push(itemName);
+    }
+    if (index >= 0 && remove) {
+      list.splice(index, 1);
+    }
+    element.className = list.join(' ');
+    return (index >= 0);
+  }
+
+  var classListPrototype = {
+    add: function(name) {
+      changeList(this.element, name, true, false);
+    },
+    contains: function(name) {
+      return changeList(this.element, name, false, false);
+    },
+    remove: function(name) {
+      changeList(this.element, name, false, true);
+    },
+    toggle: function(name) {
+      changeList(this.element, name, true, true);
+    }
+  };
+
+  Object.defineProperty(HTMLElement.prototype, 'classList', {
+    get: function() {
+      if (this._classList) {
+        return this._classList;
+      }
+
+      var classList = Object.create(classListPrototype, {
+        element: {
+          value: this,
+          writable: false,
+          enumerable: true
+        }
+      });
+      Object.defineProperty(this, '_classList', {
+        value: classList,
+        writable: false,
+        enumerable: false
+      });
+      return classList;
+    },
+    enumerable: true
+  });
+})();
+
+// Check console compatibility
+// In older IE versions the console object is not available
+// unless console is open.
+// Support: IE<10
+(function checkConsoleCompatibility() {
+  if (!('console' in window)) {
+    window.console = {
+      log: function() {},
+      error: function() {},
+      warn: function() {}
+    };
+  } else if (!('bind' in console.log)) {
+    // native functions in IE9 might not have bind
+    console.log = (function(fn) {
+      return function(msg) { return fn(msg); };
+    })(console.log);
+    console.error = (function(fn) {
+      return function(msg) { return fn(msg); };
+    })(console.error);
+    console.warn = (function(fn) {
+      return function(msg) { return fn(msg); };
+    })(console.warn);
+  }
+})();
+
+// Check onclick compatibility in Opera
+// Support: Opera<15
+(function checkOnClickCompatibility() {
+  // workaround for reported Opera bug DSK-354448:
+  // onclick fires on disabled buttons with opaque content
+  function ignoreIfTargetDisabled(event) {
+    if (isDisabled(event.target)) {
+      event.stopPropagation();
+    }
+  }
+  function isDisabled(node) {
+    return node.disabled || (node.parentNode && isDisabled(node.parentNode));
+  }
+  if (navigator.userAgent.indexOf('Opera') !== -1) {
+    // use browser detection since we cannot feature-check this bug
+    document.addEventListener('click', ignoreIfTargetDisabled, true);
+  }
+})();
+
+// Checks if possible to use URL.createObjectURL()
+// Support: IE
+(function checkOnBlobSupport() {
+  // sometimes IE loosing the data created with createObjectURL(), see #3977
+  if (navigator.userAgent.indexOf('Trident') >= 0) {
+    PDFJS.disableCreateObjectURL = true;
+  }
+})();
+
+// Checks if navigator.language is supported
+(function checkNavigatorLanguage() {
+  if ('language' in navigator) {
+    return;
+  }
+  PDFJS.locale = navigator.userLanguage || 'en-US';
+})();
+
+(function checkRangeRequests() {
+  // Safari has issues with cached range requests see:
+  // https://github.com/mozilla/pdf.js/issues/3260
+  // Last tested with version 6.0.4.
+  // Support: Safari 6.0+
+  var isSafari = Object.prototype.toString.call(
+                  window.HTMLElement).indexOf('Constructor') > 0;
+
+  // Older versions of Android (pre 3.0) has issues with range requests, see:
+  // https://github.com/mozilla/pdf.js/issues/3381.
+  // Make sure that we only match webkit-based Android browsers,
+  // since Firefox/Fennec works as expected.
+  // Support: Android<3.0
+  var regex = /Android\s[0-2][^\d]/;
+  var isOldAndroid = regex.test(navigator.userAgent);
+
+  // Range requests are broken in Chrome 39 and 40, https://crbug.com/442318
+  var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(navigator.userAgent);
+
+  if (isSafari || isOldAndroid || isChromeWithRangeBug) {
+    PDFJS.disableRange = true;
+    PDFJS.disableStream = true;
+  }
+})();
+
+// Check if the browser supports manipulation of the history.
+// Support: IE<10, Android<4.2
+(function checkHistoryManipulation() {
+  // Android 2.x has so buggy pushState support that it was removed in
+  // Android 3.0 and restored as late as in Android 4.2.
+  // Support: Android 2.x
+  if (!history.pushState || navigator.userAgent.indexOf('Android 2.') >= 0) {
+    PDFJS.disableHistory = true;
+  }
+})();
+
+// Support: IE<11, Chrome<21, Android<4.4, Safari<6
+(function checkSetPresenceInImageData() {
+  // IE < 11 will use window.CanvasPixelArray which lacks set function.
+  if (window.CanvasPixelArray) {
+    if (typeof window.CanvasPixelArray.prototype.set !== 'function') {
+      window.CanvasPixelArray.prototype.set = function(arr) {
+        for (var i = 0, ii = this.length; i < ii; i++) {
+          this[i] = arr[i];
+        }
+      };
+    }
+  } else {
+    // Old Chrome and Android use an inaccessible CanvasPixelArray prototype.
+    // Because we cannot feature detect it, we rely on user agent parsing.
+    var polyfill = false, versionMatch;
+    if (navigator.userAgent.indexOf('Chrom') >= 0) {
+      versionMatch = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
+      // Chrome < 21 lacks the set function.
+      polyfill = versionMatch && parseInt(versionMatch[2]) < 21;
+    } else if (navigator.userAgent.indexOf('Android') >= 0) {
+      // Android < 4.4 lacks the set function.
+      // Android >= 4.4 will contain Chrome in the user agent,
+      // thus pass the Chrome check above and not reach this block.
+      polyfill = /Android\s[0-4][^\d]/g.test(navigator.userAgent);
+    } else if (navigator.userAgent.indexOf('Safari') >= 0) {
+      versionMatch = navigator.userAgent.
+        match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//);
+      // Safari < 6 lacks the set function.
+      polyfill = versionMatch && parseInt(versionMatch[1]) < 6;
+    }
+
+    if (polyfill) {
+      var contextPrototype = window.CanvasRenderingContext2D.prototype;
+      contextPrototype._createImageData = contextPrototype.createImageData;
+      contextPrototype.createImageData = function(w, h) {
+        var imageData = this._createImageData(w, h);
+        imageData.data.set = function(arr) {
+          for (var i = 0, ii = this.length; i < ii; i++) {
+            this[i] = arr[i];
+          }
+        };
+        return imageData;
+      };
+    }
+  }
+})();
+
+// Support: IE<10, Android<4.0, iOS
+(function checkRequestAnimationFrame() {
+  function fakeRequestAnimationFrame(callback) {
+    window.setTimeout(callback, 20);
+  }
+
+  var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
+  if (isIOS) {
+    // requestAnimationFrame on iOS is broken, replacing with fake one.
+    window.requestAnimationFrame = fakeRequestAnimationFrame;
+    return;
+  }
+  if ('requestAnimationFrame' in window) {
+    return;
+  }
+  window.requestAnimationFrame =
+    window.mozRequestAnimationFrame ||
+    window.webkitRequestAnimationFrame ||
+    fakeRequestAnimationFrame;
+})();
+
+(function checkCanvasSizeLimitation() {
+  var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
+  var isAndroid = /Android/g.test(navigator.userAgent);
+  if (isIOS || isAndroid) {
+    // 5MP
+    PDFJS.maxCanvasPixels = 5242880;
+  }
+})();
+
+// Disable fullscreen support for certain problematic configurations.
+// Support: IE11+ (when embedded).
+(function checkFullscreenSupport() {
+  var isEmbeddedIE = (navigator.userAgent.indexOf('Trident') >= 0 &&
+                      window.parent !== window);
+  if (isEmbeddedIE) {
+    PDFJS.disableFullscreen = true;
+  }
+})();
diff --git a/source/ViewerJS/example.local.css b/source/ViewerJS/example.local.css
new file mode 100644
index 0000000..034347d
--- /dev/null
+++ b/source/ViewerJS/example.local.css
@@ -0,0 +1,27 @@
+/* This is just a sample file with CSS rules. You should write your own @font-face declarations
+ * to add support for your desired fonts.
+ */
+
+@font-face {
+  font-family: 'Novecentowide Book';
+  src: url("/ViewerJS/fonts/Novecentowide-Bold-webfont.eot");
+  src: url("/ViewerJS/fonts/Novecentowide-Bold-webfont.eot?#iefix") format("embedded-opentype"),
+  url("/ViewerJS/fonts/Novecentowide-Bold-webfont.woff") format("woff"),
+  url("/fonts/Novecentowide-Bold-webfont.ttf") format("truetype"),
+  url("/fonts/Novecentowide-Bold-webfont.svg#NovecentowideBookBold") format("svg");
+  font-weight: normal;
+  font-style: normal;
+}
+
+@font-face {
+    font-family: 'exotica';
+    src: url('/ViewerJS/fonts/Exotica-webfont.eot');
+    src: url('/ViewerJS/fonts/Exotica-webfont.eot?#iefix') format('embedded-opentype'),
+         url('/ViewerJS/fonts/Exotica-webfont.woff') format('woff'),
+         url('/ViewerJS/fonts/Exotica-webfont.ttf') format('truetype'),
+         url('/ViewerJS/fonts/Exotica-webfont.svg#exoticamedium') format('svg');
+    font-weight: normal;
+    font-style: normal;
+
+}
+
diff --git a/source/ViewerJS/images/kogmbh.png b/source/ViewerJS/images/kogmbh.png
new file mode 100644
index 0000000000000000000000000000000000000000..00e8f4debdda56ba5a57472b43a23b020080bfa9
GIT binary patch
literal 2835
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

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/nlnet.png b/source/ViewerJS/images/nlnet.png
new file mode 100644
index 0000000000000000000000000000000000000000..e75ab2e8f0c6eb71880badd8ddda46ff676aa49d
GIT binary patch
literal 5400
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
C6g8m$

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/texture.png b/source/ViewerJS/images/texture.png
new file mode 100644
index 0000000000000000000000000000000000000000..df00864932368d75024b46b3a1993d0f51f1d59a
GIT binary patch
literal 2459
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
O5r8?-l2B*lk?>!&x?|k{

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/toolbarButton-download.png b/source/ViewerJS/images/toolbarButton-download.png
new file mode 100644
index 0000000000000000000000000000000000000000..8676d8e2c2c0bac77cfce486f6f18639a8caa987
GIT binary patch
literal 512
zcmV+b0{{JqP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzqDe$SRCwBaQ%_3*Q4oKtZM6^)ZEG9U
zC8O-%O>z}Is24wg34Vg0&(Nh)A4KqyCy|cYNsu~v@z2dmB9tj1uH`lp^J3U`8~E{N
z-p=3On^hdg5sIR03L*9Y+kk-hD<6Ofzy>Vo6d1ck4*P?_;4T~v8^TAR$Zf0DN+pxY
zdoYJGiL9nW@D^3_!$~5MNL4D8YtWAX>pTG(3u?~~8-RJKR61@po0nw&j-Zf}uM`Re
z1IBnHvj;%lW(tv*fb&ZHFIX|iIJtqC9%tO<h(scNaC$&QqtQNAqnD7_;Ufs*;8(ic
z?lT-usCPP@cQ{N}M?rT2+vR{2-<WQD&E?wxJ)Oh!g;#=rE5RZbi_KwfY<<MOjquL0
zthw~_O7KHoy<S(-=`_x_qVI@RCX-QXwVKL^_D*1$=B!$+p67D83*1orNAmf+1$Sqm
zP-x~(Aom~+XPl2V9*?zRu{hK;El@6(4|QGVoM22FV%n0#X`|6tWwY5Y>0lVf5?1zr
z%n1($UyPgb4t7C5rMH$zKiPV#uKO2UXNZ0M7GMAtm#g$qt>3!<0000<MNUMnLSTaC
CqvM?b

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/toolbarButton-fullscreen.png b/source/ViewerJS/images/toolbarButton-fullscreen.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa730955054b440a9e32ce282a3361cf13f198fa
GIT binary patch
literal 491
zcmV<H0Tlj;P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzjY&j7R47wLQB5yHK@>gp@kF&{Rb5bN
zGzijG&{UKVshtpNClNu)%Ekhbw2`1J>Z6HtgGN0xKEhh;{0EDsrSU_qGw%`SWF~jc
zxpQak3{VFTy2*App+P}o)NW`Vy70=Y$@eYTjRgDq)}ID15R?~1J&mx+C#(qTX;VcI
z7?3B$uiL;R>R}-rT@%F{Q^f$#FZUOjQcfPeZ$<}E18p$$rORXa`Z6Q;=m%OKw=v~i
zDrMy^zYYg%xi!g`vmMKrqSFdWO=yItW9DoVJ*XuE>5afFEf*aJP=P8AjY%zNU{t}`
z&6S2q!}*1UI~}}%g2r}h|1FKpX|M(R^hMUF<}P<`VJOHX(}C-46~4}~;<03|R$zne
zd{Hvx6aP5;bX<T>PIK`>N>asx-f>p5`o;?TlKMQ-6LJb45R#;%<gl>UHjic=P>Ck@
z+{d0AQcWVHUUFA4oxlhWu<(*~7(R)cs(MMk>=;Zw$5hvZ{W->}h6+FUwIhgP8WFVd
hn-r{!B2=PuoIg4=n|)8MY<2(u002ovPDHLkV1hfJ)Vlxx

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/toolbarButton-menuArrows.png b/source/ViewerJS/images/toolbarButton-menuArrows.png
new file mode 100644
index 0000000000000000000000000000000000000000..31b06b5af9e548b15e274677b8ecaac1c1d06e77
GIT binary patch
literal 237
zcmeAS@N?(olHy`uVBq!ia0vp^>_9BQ!2%=;I@VSLDajJoh?3y^w370~qErUQl>DSr
z1<%~X^wgl##FWaylc_d9Mg5*Gjv*Y;$q5RA21W%&988AFF7neS9({Y$O^hc-fzNvT
zy{kX}UyqMIu=e<Ya|aX(*1Y_`>3{csed~)S6b>9XaCpJd2PXwsj@)uEyTHN9Cd}ro
z5XP`c@(2I(zwen39<Jp1<8V~R?6=qd>2I~4ZeZ0+OPe6@{r)uVcjpxtQ<xdGn^l_C
l1U4U<bN<W$wuuM%8Gh`M-xS!`BnfmHgQu&X%Q~loCIF<8Tc-d3

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/toolbarButton-pageDown.png b/source/ViewerJS/images/toolbarButton-pageDown.png
new file mode 100644
index 0000000000000000000000000000000000000000..762ac43e08cf71f688136dd9c391e1eeac8336b6
GIT binary patch
literal 353
zcmV-n0iOPeP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0003fNkl<Zc-oDU
zu}Z{16h&tv$Rem<VFW?YW?8V>N)i16KOjF~A%cy9L}N?{*aRypMbKt#Y{Wu@^dWzc
zB43gw@m?5VSf4XKI1uvgxkJb(Jp(WVYhVPnHDj;=mcX2{j2A`GW>r;L-}l82ZQFh|
zO*2i?^oZrQ5>KD9SC-`y<adLQuIoN=085sYW!SzR1i?9^w^{1Ce#U-FIcDhl{vm|d
zS@1bi>?f{*0oaG|B7xlwaLz8mj}qKT!aP_teqVs_y##kUGoqtiwOACzF#-<;cM@iX
z4qc!Yz$DM}D=cpR1G99rt30p*4zet}M&QN<Gt6oSF2*cLlH?M>P=Y&2{#AlocLCwd
zgzqHz&yp|<c_U8=pC#E@636igvB=JnF|o<tj|Wxfd89a300000NkvXXu0mjfHK~&F

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/toolbarButton-pageUp.png b/source/ViewerJS/images/toolbarButton-pageUp.png
new file mode 100644
index 0000000000000000000000000000000000000000..3155b8bd235c642f7f495ed8cff2900069162cfd
GIT binary patch
literal 344
zcmV-e0jK_nP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy`bk7VR47w*&pk`SU=)VoyAfVOr6J%V
zIKGg<k5$k~2&HSNjv|6C6&fgYadHTRLdoP*mxh*P36iB93NHR8UFEo>CdBw$>ph$U
z)hTRj6#q=2*TFhKHzx|6MzWGs8Z{*folGT{Oft!nX+2Ts<wP<`3)yl~O%!?&N+NMZ
zvIw_{LdSv3<+WxW7w2|1Lz&4-gV|<C2iiDv=`)h3#E3p!9NJ)DVqxP-Si;4|!o(;)
zIg{rS=lt2}*OUC(bJ?i}M<0(e-tw-o>cPHu_w7sJZOjQKt!iL$+`E7GKObZu1M&0Q
qn}h0!&|(*d3p}p4q{kr^2K)fvg`AtvZ>v!N0000<MNUMnLSTXmnUQ(`

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/toolbarButton-presentation.png b/source/ViewerJS/images/toolbarButton-presentation.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f224232b8c9445344f1df83bbf17a7ddeb05c74
GIT binary patch
literal 4366
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

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/toolbarButton-zoomIn.png b/source/ViewerJS/images/toolbarButton-zoomIn.png
new file mode 100644
index 0000000000000000000000000000000000000000..670acd93f5324c0f32e37e13d43c31890bdd123a
GIT binary patch
literal 228
zcmV<A02}{_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00021Nkl<Zc-pOz
zp$bAl5Je5!G?=yvHU*nt6Z{2(|6tN+HCwG>viSpk+<Fhplx2}+o(~T1a(6hev!hbV
zApR$4d}A>Ka&^`vn5+K)IU-oAe*-xp*r<O2xkuo4UK$7W4<LK*J822H^Rwa(b<b=|
zu+ab31G6nb7F)45PU^2f_TFZ4OOV7wOpTrT3y{6Hnbi9VXCOzOai#tU<cPp`0y!e^
eok02}7{nKK__TCG^~wAI0000<MNUMnLSTYSqh0O*

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/images/toolbarButton-zoomOut.png b/source/ViewerJS/images/toolbarButton-zoomOut.png
new file mode 100644
index 0000000000000000000000000000000000000000..810fbf9895d5b2de15177d60612d5fab2087010b
GIT binary patch
literal 143
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`VV*9IAr-gYUfRgXpvdD8$Zf5=
z=1uGCcWnh6*Nc?ePuKo-VA18ZxzrMWwDZI?X$#2&CN4W?#|upS)oW&Kk9v^$UG#Gp
qcS?wfv+Fe`Il+?x58o@x^8E4lp0QHyUg`s&4Gf;HelF{r5}E)Kcrc&<

literal 0
HcmV?d00001

diff --git a/source/ViewerJS/index.html b/source/ViewerJS/index.html
new file mode 100644
index 0000000..2eb1fd4
--- /dev/null
+++ b/source/ViewerJS/index.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html dir="ltr" lang="en-US">
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+
+<!--
+This is a generated file. DO NOT EDIT.
+
+Copyright (C) 2012-2015 KO GmbH <copyright@kogmbh.com>
+
+@licstart
+This file is the compiled version of the ViewerJS module.
+
+ViewerJS is free software: you can redistribute it and/or modify it
+under the terms of the GNU Affero General Public License (GNU AGPL)
+as published by the Free Software Foundation, either version 3 of
+the License, or (at your option) any later version.
+
+ViewerJS is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with ViewerJS.  If not, see <http://www.gnu.org/licenses/>.
+@licend
+
+@source: http://viewerjs.org/
+@source: http://github.com/kogmbh/ViewerJS
+-->
+
+        <title>ViewerJS</title>
+        <!-- If you want to use custom CSS (@font-face rules, for example) you should uncomment
+             the following reference and use a local.css file for that. See the example.local.css
+             file for a sample.
+        <link rel="stylesheet" type="text/css" href="local.css" media="screen"/>
+        -->
+        <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"/>
+                <script type="text/javascript">
+            ////<![CDATA[
+var ODFViewerPlugin_css="@namespace cursor url(urn:webodf:names:cursor);.caret {opacity: 0 !important;}";function ODFViewerPlugin(){function b(b){var a=document.createElement("script");a.async=!1;a.src="./webodf.js";a.type="text/javascript";a.onload=function(){runtime.loadClass("gui.HyperlinkClickHandler");runtime.loadClass("odf.OdfCanvas");runtime.loadClass("ops.Session");runtime.loadClass("gui.CaretManager");runtime.loadClass("gui.HyperlinkTooltipView");runtime.loadClass("gui.SessionController");runtime.loadClass("gui.SvgSelectionView");runtime.loadClass("gui.SelectionViewManager");runtime.loadClass("gui.ShadowCursor");
+runtime.loadClass("gui.SessionView");b()};document.head.appendChild(a);a=document.createElementNS(document.head.namespaceURI,"style");a.setAttribute("media","screen, print, handheld, projection");a.setAttribute("type","text/css");a.appendChild(document.createTextNode(ODFViewerPlugin_css));document.head.appendChild(a)}var r=this,f=null,x=null,s=null,k=null;this.initialize=function(q,a){b(function(){var e,c,b,q,l,z,u,v;x=document.getElementById("canvas");f=new odf.OdfCanvas(x);f.load(a);f.addListener("statereadychange",
+function(){s=f.odfContainer().rootElement;k=f.odfContainer().getDocumentType(s);if("text"===k){f.enableAnnotations(!0,!1);e=new ops.Session(f);b=e.getOdtDocument();q=new gui.ShadowCursor(b);c=new gui.SessionController(e,"localuser",q,{});v=c.getEventManager();z=new gui.CaretManager(c,f.getViewport());l=new gui.SelectionViewManager(gui.SvgSelectionView);new gui.SessionView({caretAvatarsInitiallyVisible:!1},"localuser",e,c.getSessionConstraints(),z,l);l.registerCursor(q);u=new gui.HyperlinkTooltipView(f,
+c.getHyperlinkClickHandler().getModifier);v.subscribe("mousemove",u.showTooltip);v.subscribe("mouseout",u.hideTooltip);var a=new ops.OpAddMember;a.init({memberid:"localuser",setProperties:{fillName:runtime.tr("Unknown Author"),color:"blue"}});e.enqueue([a]);c.insertLocalCursor()}r.onLoad()})})};this.isSlideshow=function(){return"presentation"===k};this.onLoad=function(){};this.fitToWidth=function(b){f.fitToWidth(b)};this.fitToHeight=function(b){f.fitToHeight(b)};this.fitToPage=function(b,a){f.fitToContainingElement(b,
+a)};this.fitSmart=function(b){f.fitSmart(b)};this.getZoomLevel=function(){return f.getZoomLevel()};this.setZoomLevel=function(b){f.setZoomLevel(b)};this.getPages=function(){var b=Array.prototype.slice.call(s.getElementsByTagNameNS("urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","page")),a=[],e,c;for(e=0;e<b.length;e+=1)c=[b[e].getAttribute("draw:name"),b[e]],a.push(c);return a};this.showPage=function(b){f.showPage(b)};this.getPluginName=function(){return"WebODF"};this.getPluginVersion=function(){return"undefined"!==
+String(typeof webodf)?webodf.Version:"Unknown"};this.getPluginURL=function(){return"http://webodf.org"}};var PDFViewerPlugin_css=".page {margin: 7px auto 7px auto;position: relative;overflow: hidden;background-clip: content-box;background-color: white;box-shadow:         0px 0px 7px rgba(0, 0, 0, 0.75);-webkit-box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.75);-moz-box-shadow:    0px 0px 7px rgba(0, 0, 0, 0.75);-ms-box-shadow:    0px 0px 7px rgba(0, 0, 0, 0.75);-o-box-shadow:    0px 0px 7px rgba(0, 0, 0, 0.75);}.textLayer {position: absolute;left: 0;top: 0;right: 0;bottom: 0;color: #000;font-family: sans-serif;overflow: hidden;}.textLayer > div {color: transparent;position: absolute;line-height: 1;white-space: pre;cursor: text;}::selection { background:rgba(0,0,255,0.3); }::-moz-selection { background:rgba(0,0,255,0.3); }";function PDFViewerPlugin(){function b(d,a){var b=document.createElement("script");b.async=!1;b.src=d;b.type="text/javascript";b.onload=a||b.onload;document.getElementsByTagName("head")[0].appendChild(b)}function r(d){var a;b("./compatibility.js",function(){b("./pdf.js");b("./ui_utils.js");b("./text_layer_builder.js");b("./pdfjsversion.js",d)});a=document.createElementNS(document.head.namespaceURI,"style");a.setAttribute("media","screen, print, handheld, projection");a.setAttribute("type","text/css");
+a.appendChild(document.createTextNode(PDFViewerPlugin_css));document.head.appendChild(a)}function f(d){if("none"===d.style.display)return!1;var a=u.scrollTop,b=a+u.clientHeight,c=d.offsetTop;d=c+d.clientHeight;return c>=a&&c<b||d>=a&&d<b||c<a&&d>=b}function x(d,a,b){var e=c[d.pageIndex],f=e.getElementsByTagName("canvas")[0],h=e.getElementsByTagName("div")[0],k="scale("+g+", "+g+")";e.style.width=a+"px";e.style.height=b+"px";f.width=a;f.height=b;h.style.width=a+"px";h.style.height=b+"px";CustomStyle.setProp("transform",
+h,k);CustomStyle.setProp("transformOrigin",h,"0% 0%");t[d.pageIndex]=t[d.pageIndex]===l.RUNNING?l.RUNNINGOUTDATED:l.BLANK}function s(d){var a,b;t[d.pageIndex]===l.BLANK&&(t[d.pageIndex]=l.RUNNING,a=c[d.pageIndex],b=B[d.pageIndex],a=a.getElementsByTagName("canvas")[0],d.render({canvasContext:a.getContext("2d"),textLayer:b,viewport:d.getViewport(g)}).promise.then(function(){t[d.pageIndex]===l.RUNNINGOUTDATED?(t[d.pageIndex]=l.BLANK,s(d)):t[d.pageIndex]=l.FINISHED}))}function k(){var d=!a.isSlideshow();
+c.forEach(function(a){d&&(a.style.display="block");u.appendChild(a)});a.showPage(1);a.onLoad()}function q(d){var a,b,f,m,h,n;a=d.pageIndex+1;n=d.getViewport(g);h=document.createElement("div");h.id="pageContainer"+a;h.className="page";h.style.display="none";m=document.createElement("canvas");m.id="canvas"+a;b=document.createElement("div");b.className="textLayer";b.id="textLayer"+a;h.appendChild(m);h.appendChild(b);e[d.pageIndex]=d;c[d.pageIndex]=h;t[d.pageIndex]=l.BLANK;x(d,n.width,n.height);y<n.width&&
+(y=n.width);w<n.height&&(w=n.height);n.width<n.height&&(p=!1);f=new TextLayerBuilder({textLayerDiv:b,viewport:n,pageIndex:a-1});d.getTextContent().then(function(a){f.setTextContent(a);f.render(z)});B[d.pageIndex]=f;E+=1;E===v.numPages&&k()}var a=this,e=[],c=[],B=[],t=[],l={BLANK:0,RUNNING:1,FINISHED:2,RUNNINGOUTDATED:3},z=200,u=null,v=null,p=!0,g=1,A=1,y=0,w=0,E=0;this.initialize=function(a,b){var c;r(function(){PDFJS.workerSrc="./pdf.worker.js";PDFJS.getDocument(b).then(function(b){v=b;u=a;for(c=
+0;c<v.numPages;c+=1)v.getPage(c+1).then(q)})})};this.isSlideshow=function(){return p};this.onLoad=function(){};this.getPages=function(){return c};this.fitToWidth=function(d){y!==d&&(d/=y,a.setZoomLevel(d))};this.fitToHeight=function(d){w!==d&&(d/=w,a.setZoomLevel(d))};this.fitToPage=function(d,b){var c=d/y;b/w<c&&(c=b/w);a.setZoomLevel(c)};this.fitSmart=function(d,b){var c=d/y;b&&b/w<c&&(c=b/w);c=Math.min(1,c);a.setZoomLevel(c)};this.setZoomLevel=function(a){var b;if(g!==a)for(g=a,a=0;a<e.length;a+=
+1)b=e[a].getViewport(g),x(e[a],b.width,b.height)};this.getZoomLevel=function(){return g};this.onScroll=function(){var a;for(a=0;a<c.length;a+=1)f(c[a])&&s(e[a])};this.getPageInView=function(){var b;if(a.isSlideshow())return A;for(b=0;b<c.length;b+=1)if(f(c[b]))return b+1};this.showPage=function(b){a.isSlideshow()?(c[A-1].style.display="none",A=b,s(e[b-1]),c[b-1].style.display="block"):(b=c[b-1],b.parentNode.scrollTop=b.offsetTop)};this.getPluginName=function(){return"PDF.js"};this.getPluginVersion=
+function(){return"undefined"!==String(typeof pdfjs_version)?pdfjs_version:"From Source"};this.getPluginURL=function(){return"https://github.com/mozilla/pdf.js/"}};var ViewerJS_version="0.5.8";var viewer_css="* {padding: 0;margin: 0;}html > body {font-family: sans-serif;overflow: hidden;}.titlebar > span,.toolbarLabel,input,button,select {font: message-box;}#titlebar {position: absolute;z-index: 2;top: 0px;left: 0px;height: 32px;width: 100%;overflow: hidden;-webkit-box-shadow: 0px 1px 3px rgba(50, 50, 50, 0.75);-moz-box-shadow:    0px 1px 3px rgba(50, 50, 50, 0.75);box-shadow:         0px 1px 3px rgba(50, 50, 50, 0.75);background-image: url(images/texture.png), linear-gradient(rgba(69, 69, 69, .95), rgba(82, 82, 82, .99));background-image: url(images/texture.png), -webkit-linear-gradient(rgba(69, 69, 69, .95), rgba(82, 82, 82, .99));background-image: url(images/texture.png), -moz-linear-gradient(rgba(69, 69, 69, .95), rgba(82, 82, 82, .99));background-image: url(images/texture.png), -ms-linear-gradient(rgba(69, 69, 69, .95), rgba(82, 82, 82, .99));background-image: url(images/texture.png), -o-linear-gradient(rgba(69, 69, 69, .95), rgba(82, 82, 82, .99));}#titlebar a, #aboutDialog a, #titlebar a:visited, #aboutDialog a:visited {color: #ccc;}#documentName {margin-right: 10px;margin-left: 10px;margin-top: 8px;color: #F2F2F2;line-height: 14px;font-family: sans-serif;}#documentName {font-size: 14px;}#toolbarContainer {position: absolute;z-index: 2;bottom: 0px;left: 0px;height: 32px;width: 100%;overflow: hidden;-webkit-box-shadow: 0px -1px 3px rgba(50, 50, 50, 0.75);-moz-box-shadow:    0px -1px 3px rgba(50, 50, 50, 0.75);box-shadow:         0px -1px 3px rgba(50, 50, 50, 0.75);background-image: url(images/texture.png), linear-gradient(rgba(82, 82, 82, .99), rgba(69, 69, 69, .95));background-image: url(images/texture.png), -webkit-linear-gradient(rgba(82, 82, 82, .99), rgba(69, 69, 69, .95));background-image: url(images/texture.png), -moz-linear-gradient(rgba(82, 82, 82, .99), rgba(69, 69, 69, .95));background-image: url(images/texture.png), -ms-linear-gradient(rgba(82, 82, 82, .99), rgba(69, 69, 69, .95));background-image: url(images/texture.png), -o-linear-gradient(rgba(82, 82, 82, .99), rgba(69, 69, 69, .95));}#toolbar {position: relative;}#toolbarMiddleContainer, #toolbarLeft {visibility: hidden;}html[dir='ltr'] #toolbarLeft {margin-left: -1px;}html[dir='rtl'] #toolbarRight,html[dir='rtl'] #titlebarRight {margin-left: -1px;}html[dir='ltr'] #toolbarLeft,html[dir='rtl'] #toolbarRight,html[dir='rtl'] #titlebarRight {position: absolute;top: 0;left: 0;}html[dir='rtl'] #toolbarLeft,html[dir='ltr'] #toolbarRight,html[dir='ltr'] #titlebarRight {position: absolute;top: 0;right: 0;}html[dir='ltr'] #toolbarLeft > *,html[dir='ltr'] #toolbarMiddle > *,html[dir='ltr'] #toolbarRight > *,html[dir='ltr'] #titlebarRight > * {float: left;}html[dir='rtl'] #toolbarLeft > *,html[dir='rtl'] #toolbarMiddle > *,html[dir='rtl'] #toolbarRight > *,html[dir='rtl'] #titlebarRight > * {float: right;}html[dir='ltr'] .outerCenter {float: right;position: relative;right: 50%;}html[dir='rtl'] .outerCenter {float: left;position: relative;left: 50%;}html[dir='ltr'] .innerCenter {float: right;position: relative;right: -50%;}html[dir='rtl'] .innerCenter {float: left;position: relative;left: -50%;}html[dir='ltr'] .splitToolbarButton {margin: 3px 2px 4px 0;display: inline-block;}html[dir='rtl'] .splitToolbarButton {margin: 3px 0 4px 2px;display: inline-block;}html[dir='ltr'] .splitToolbarButton > .toolbarButton {border-radius: 0;float: left;}html[dir='rtl'] .splitToolbarButton > .toolbarButton {border-radius: 0;float: right;}.splitToolbarButton.toggled .toolbarButton {margin: 0;}.toolbarButton {border: 0 none;background-color: rgba(0, 0, 0, 0);min-width: 32px;height: 25px;border-radius: 2px;background-image: none;}html[dir='ltr'] .toolbarButton,html[dir='ltr'] .dropdownToolbarButton {margin: 3px 2px 4px 0;}html[dir='rtl'] .toolbarButton,html[dir='rtl'] .dropdownToolbarButton {margin: 3px 0 4px 2px;}.toolbarButton:hover,.toolbarButton:focus,.dropdownToolbarButton {background-color: hsla(0,0%,0%,.12);background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -webkit-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -moz-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -ms-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -o-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-clip: padding-box;border: 1px solid hsla(0,0%,0%,.35);border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,0 0 1px hsla(0,0%,100%,.15) inset,0 1px 0 hsla(0,0%,100%,.05);}.toolbarButton:hover:active,.dropdownToolbarButton:hover:active {background-color: hsla(0,0%,0%,.2);background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -webkit-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -moz-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -ms-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -o-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45);box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,0 0 1px hsla(0,0%,0%,.2) inset,0 1px 0 hsla(0,0%,100%,.05);}.splitToolbarButton:hover > .toolbarButton,.splitToolbarButton:focus > .toolbarButton,.splitToolbarButton.toggled > .toolbarButton,.toolbarButton.textButton {background-color: hsla(0,0%,0%,.12);background-image: -webkit-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -moz-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -ms-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -o-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-clip: padding-box;border: 1px solid hsla(0,0%,0%,.35);border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,0 0 1px hsla(0,0%,100%,.15) inset,0 1px 0 hsla(0,0%,100%,.05);-webkit-transition-property: background-color, border-color, box-shadow;-webkit-transition-duration: 150ms;-webkit-transition-timing-function: ease;-moz-transition-property: background-color, border-color, box-shadow;-moz-transition-duration: 150ms;-moz-transition-timing-function: ease;-ms-transition-property: background-color, border-color, box-shadow;-ms-transition-duration: 150ms;-ms-transition-timing-function: ease;-o-transition-property: background-color, border-color, box-shadow;-o-transition-duration: 150ms;-o-transition-timing-function: ease;transition-property: background-color, border-color, box-shadow;transition-duration: 150ms;transition-timing-function: ease;}.splitToolbarButton > .toolbarButton:hover,.splitToolbarButton > .toolbarButton:focus,.dropdownToolbarButton:hover,.toolbarButton.textButton:hover,.toolbarButton.textButton:focus {background-color: hsla(0,0%,0%,.2);box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,0 0 1px hsla(0,0%,100%,.15) inset,0 0 1px hsla(0,0%,0%,.05);z-index: 199;}.splitToolbarButton:hover > .toolbarButton,.splitToolbarButton:focus > .toolbarButton,.splitToolbarButton.toggled > .toolbarButton,.toolbarButton.textButton {background-color: hsla(0,0%,0%,.12);background-image: -webkit-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -moz-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -ms-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: -o-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-clip: padding-box;border: 1px solid hsla(0,0%,0%,.35);border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,0 0 1px hsla(0,0%,100%,.15) inset,0 1px 0 hsla(0,0%,100%,.05);-webkit-transition-property: background-color, border-color, box-shadow;-webkit-transition-duration: 150ms;-webkit-transition-timing-function: ease;-moz-transition-property: background-color, border-color, box-shadow;-moz-transition-duration: 150ms;-moz-transition-timing-function: ease;-ms-transition-property: background-color, border-color, box-shadow;-ms-transition-duration: 150ms;-ms-transition-timing-function: ease;-o-transition-property: background-color, border-color, box-shadow;-o-transition-duration: 150ms;-o-transition-timing-function: ease;transition-property: background-color, border-color, box-shadow;transition-duration: 150ms;transition-timing-function: ease;}.splitToolbarButton > .toolbarButton:hover,.splitToolbarButton > .toolbarButton:focus,.dropdownToolbarButton:hover,.toolbarButton.textButton:hover,.toolbarButton.textButton:focus {background-color: hsla(0,0%,0%,.2);box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,0 0 1px hsla(0,0%,100%,.15) inset,0 0 1px hsla(0,0%,0%,.05);z-index: 199;}.dropdownToolbarButton {border: 1px solid #333 !important;}.toolbarButton,.dropdownToolbarButton {min-width: 16px;padding: 2px 6px 2px;border: 1px solid transparent;border-radius: 2px;color: hsl(0,0%,95%);font-size: 12px;line-height: 14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor: default;-webkit-transition-property: background-color, border-color, box-shadow;-webkit-transition-duration: 150ms;-webkit-transition-timing-function: ease;-moz-transition-property: background-color, border-color, box-shadow;-moz-transition-duration: 150ms;-moz-transition-timing-function: ease;-ms-transition-property: background-color, border-color, box-shadow;-ms-transition-duration: 150ms;-ms-transition-timing-function: ease;-o-transition-property: background-color, border-color, box-shadow;-o-transition-duration: 150ms;-o-transition-timing-function: ease;transition-property: background-color, border-color, box-shadow;transition-duration: 150ms;transition-timing-function: ease;}html[dir='ltr'] .toolbarButton,html[dir='ltr'] .dropdownToolbarButton {margin: 3px 2px 4px 0;}html[dir='rtl'] .toolbarButton,html[dir='rtl'] .dropdownToolbarButton {margin: 3px 0 4px 2px;}.splitToolbarButton:hover > .splitToolbarButtonSeparator,.splitToolbarButton.toggled > .splitToolbarButtonSeparator {padding: 12px 0;margin: 0;box-shadow: 0 0 0 1px hsla(0,0%,100%,.03);-webkit-transition-property: padding;-webkit-transition-duration: 10ms;-webkit-transition-timing-function: ease;-moz-transition-property: padding;-moz-transition-duration: 10ms;-moz-transition-timing-function: ease;-ms-transition-property: padding;-ms-transition-duration: 10ms;-ms-transition-timing-function: ease;-o-transition-property: padding;-o-transition-duration: 10ms;-o-transition-timing-function: ease;transition-property: padding;transition-duration: 10ms;transition-timing-function: ease;}.toolbarButton.toggled:hover:active,.splitToolbarButton > .toolbarButton:hover:active {background-color: hsla(0,0%,0%,.4);border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.5) hsla(0,0%,0%,.55);box-shadow: 0 1px 1px hsla(0,0%,0%,.2) inset,0 0 1px hsla(0,0%,0%,.3) inset,0 1px 0 hsla(0,0%,100%,.05);}html[dir='ltr'] .splitToolbarButton > .toolbarButton:first-child,html[dir='rtl'] .splitToolbarButton > .toolbarButton:last-child {position: relative;margin: 0;margin-left: 4px;margin-right: -1px;border-top-left-radius: 2px;border-bottom-left-radius: 2px;border-right-color: transparent;}html[dir='ltr'] .splitToolbarButton > .toolbarButton:last-child,html[dir='rtl'] .splitToolbarButton > .toolbarButton:first-child {position: relative;margin: 0;margin-left: -1px;border-top-right-radius: 2px;border-bottom-right-radius: 2px;border-left-color: transparent;}.splitToolbarButtonSeparator {padding: 8px 0;width: 1px;background-color: hsla(0,0%,00%,.5);z-index: 99;box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);display: inline-block;margin: 5px 0;}html[dir='ltr'] .splitToolbarButtonSeparator {float:left;}html[dir='rtl'] .splitToolbarButtonSeparator {float:right;}.dropdownToolbarButton {min-width: 120px;max-width: 120px;padding: 4px 2px 4px;overflow: hidden;background: url(images/toolbarButton-menuArrows.png) no-repeat;}.dropdownToolbarButton > select {-webkit-appearance: none;-moz-appearance: none;min-width: 140px;font-size: 12px;color: hsl(0,0%,95%);margin:0;padding:0;border:none;background: rgba(0,0,0,0);}.dropdownToolbarButton > select > option {background: hsl(0,0%,24%);}#pageWidthOption {border-bottom: 1px rgba(255, 255, 255, .5) solid;}html[dir='ltr'] .dropdownToolbarButton {background-position: 95%;}html[dir='rtl'] .dropdownToolbarButton {background-position: 5%;}.toolbarButton.fullscreen::before {display: inline-block;content: url(images/toolbarButton-fullscreen.png);}.toolbarButton.presentation::before {display: inline-block;content: url(images/toolbarButton-presentation.png);}.toolbarButton.download::before {display: inline-block;content: url(images/toolbarButton-download.png);}.toolbarButton.about {color: #F2F2F2;font-size: 14px;font-weight: bold;line-height: 14px;font-family: sans-serif;}.toolbarButton.about::before {display: inline-block;}.toolbarButton.zoomOut::before {display: inline-block;content: url(images/toolbarButton-zoomOut.png);}.toolbarButton.zoomIn::before {display: inline-block;content: url(images/toolbarButton-zoomIn.png);}.toolbarButton.pageUp::before {display: inline-block;content: url(images/toolbarButton-pageUp.png);}.toolbarButton.pageDown::before {display: inline-block;content: url(images/toolbarButton-pageDown.png);}.toolbarField.pageNumber {min-width: 16px;text-align: right;width: 40px;}.toolbarField {padding: 3px 6px;margin: 4px 0 4px 0;border: 1px solid transparent;border-radius: 2px;background-color: hsla(0,0%,100%,.09);background-image: -moz-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));background-clip: padding-box;border: 1px solid hsla(0,0%,0%,.35);border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);box-shadow: 0 1px 0 hsla(0,0%,0%,.05) inset,0 1px 0 hsla(0,0%,100%,.05);color: hsl(0,0%,95%);font-size: 12px;line-height: 14px;outline-style: none;-moz-transition-property: background-color, border-color, box-shadow;-moz-transition-duration: 150ms;-moz-transition-timing-function: ease;}.toolbarField.pageNumber::-webkit-inner-spin-button,.toolbarField.pageNumber::-webkit-outer-spin-button {-webkit-appearance: none;margin: 0;}.toolbarField:hover {background-color: hsla(0,0%,100%,.11);border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.43) hsla(0,0%,0%,.45);}.toolbarField:focus {background-color: hsla(0,0%,100%,.15);border-color: hsla(204,100%,65%,.8) hsla(204,100%,65%,.85) hsla(204,100%,65%,.9);}.toolbarLabel {min-width: 16px;padding: 3px 6px 3px 2px;margin: 4px 2px 4px 0;border: 1px solid transparent;border-radius: 2px;color: hsl(0,0%,85%);font-size: 12px;line-height: 14px;text-align: left;-webkit-user-select:none;-moz-user-select:none;cursor: default;}#canvasContainer {overflow: auto;padding-top: 6px;padding-bottom: 6px;position: absolute;top: 32px;right: 0;bottom: 32px;left: 0;text-align: center;background-color: #888;background-image: url(images/texture.png);}#canvasContainer.slideshow {padding: 0;overflow: hidden;}#canvasContainer.slideshow > * {margin: auto;position: absolute;top: 0;left: 0;right: 0;bottom: 0;}.presentationMode {top: 0 !important;bottom: 0 !important;background-color: black !important;cursor: default !important;}#canvas {box-shadow:         0px 0px 7px rgba(0, 0, 0, 0.75);-webkit-box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.75);-moz-box-shadow:    0px 0px 7px rgba(0, 0, 0, 0.75);-ms-box-shadow:    0px 0px 7px rgba(0, 0, 0, 0.75);-o-box-shadow:    0px 0px 7px rgba(0, 0, 0, 0.75);overflow: hidden;}#sliderContainer {visibility: hidden;}#overlayNavigator {position: absolute;width: 100%;height: 0;top: calc(50% - 50px);background-color: rgba(0, 0, 0, 0);z-index: 3;opacity: 0;-webkit-transition: opacity 1s ease-out;-moz-transition: opacity 1s ease-out;transition: opacity 1s ease-out;}#previousPage {float: left;margin-left: 10px;border-top: 50px solid transparent;border-bottom: 50px solid transparent;border-right: 50px solid black;opacity: 0.5;}#nextPage {float: right;margin-right: 10px;border-top: 50px solid transparent;border-bottom: 50px solid transparent;border-left: 50px solid black;opacity: 0.5;}#previousPage:active {opacity: 0.8;}#nextPage:active {opacity: 0.8;}#overlayCloseButton {position: absolute;top: 10px;right: 10px;z-index: 3;font-size: 35px;color: white;background-color: black;opacity: 0.5;width: 40px;height: 40px;-webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 20px;text-align: center;cursor: pointer;display: none;}#overlayCloseButton:active {background-color: red;}#aboutDialogCentererTable {display: table;width:100%;height:100%;}#aboutDialogCentererCell {vertical-align: middle;text-align:center;display: table-cell;}#aboutDialog {width: 280px;background-color: #666;color: white;text-align: center;border-radius: 2px;box-shadow: 0px 1px 6px black;padding: 5px;font-style: sans-serif;display: inline-block;}#aboutDialog h1 {font-size: 25pt;}#aboutDialog p {font-size: 10pt;}#aboutDialog > * {margin: 10px;}#dialogOverlay {position: absolute;left: 0px;top: 0px;width:100%;height:100%;z-index: 3;background-color: rgba(0,0,0,.5);overflow: auto;display: none;}#blanked {display: none;cursor: none;position: absolute;left: 0px;top: 0px;width:100%;height:100%;z-index: 3;}";var viewerTouch_css="#canvasContainer {top: 0;bottom: 0;}#overlayNavigator {height: 100px;pointer-events: none;}#nextPage, #previousPage {pointer-events: all;}#titlebar, #toolbarContainer {background-color: rgba(0, 0, 0, 0.6);background-image: none;-webkit-transition: all 0.5s;-moz-transition: all 0.5s;transition: all 0.5s;}#titlebar {top: -32px;}#titlebar.viewer-touched {top: 0px;}#toolbarContainer {bottom: -32px;}#toolbarContainer.viewer-touched {bottom: 0px;}.viewer-touched {display: block;opacity: 1 !important;}#next, #previous {display: none;}";function Viewer(b,r){function f(){var a,c,d,e,g,f;f="undefined"!==String(typeof ViewerJS_version)?ViewerJS_version:"From Source";b&&(d=b.getPluginName(),e=b.getPluginVersion(),g=b.getPluginURL());a=document.createElement("div");a.id="aboutDialogCentererTable";c=document.createElement("div");c.id="aboutDialogCentererCell";I=document.createElement("div");I.id="aboutDialog";I.innerHTML='<h1>ViewerJS</h1><p>Open Source document viewer for webpages, built with HTML and JavaScript.</p><p>Learn more and get your own copy on the <a href="http://viewerjs.org/" target="_blank">ViewerJS website</a>.</p>'+
+(b?'<p>Using the <a href = "'+g+'" target="_blank">'+d+'</a> (<span id = "pluginVersion">'+e+"</span>) plugin to show you this document.</p>":"")+"<p>Version "+f+'</p><p>Supported by <a href="https://nlnet.nl" target="_blank"><br><img src="images/nlnet.png" width="160" height="60" alt="NLnet Foundation"></a></p><p>Made by <a href="http://kogmbh.com" target="_blank"><br><img src="images/kogmbh.png" width="172" height="40" alt="KO GmbH"></a></p><button id = "aboutDialogCloseButton" class = "toolbarButton textButton">Close</button>';
+K.appendChild(a);a.appendChild(c);c.appendChild(I);a=document.createElement("button");a.id="about";a.className="toolbarButton textButton about";a.title="About";a.innerHTML="ViewerJS";Q.appendChild(a);a.addEventListener("click",function(){K.style.display="block"});document.getElementById("aboutDialogCloseButton").addEventListener("click",function(){K.style.display="none"})}function x(a){var b=R.options,c,d=!1,e;for(e=0;e<b.length;e+=1)c=b[e],c.value!==a?c.selected=!1:d=c.selected=!0;return d}function s(a,
+b){if(a!==g.getZoomLevel()){g.setZoomLevel(a);var c=document.createEvent("UIEvents");c.initUIEvent("scalechange",!1,!1,window,0);c.scale=a;c.resetAutoSettings=b;window.dispatchEvent(c)}}function k(){var a;if(b.onScroll)b.onScroll();b.getPageInView&&(a=b.getPageInView())&&(F=a,document.getElementById("pageNumber").value=a)}function q(a){window.clearTimeout(M);M=window.setTimeout(function(){k()},a)}function a(a,c){var d,e;if(d="custom"===a?parseFloat(document.getElementById("customScaleOption").textContent)/
+100:parseFloat(a))s(d,!0);else{d=h.clientWidth-A;e=h.clientHeight-A;switch(a){case "page-actual":s(1,c);break;case "page-width":b.fitToWidth(d);break;case "page-height":b.fitToHeight(e);break;case "page-fit":b.fitToPage(d,e);break;case "auto":b.isSlideshow()?b.fitToPage(d+A,e+A):b.fitSmart(d)}x(a)}q(300)}function e(a){var b;return-1!==["auto","page-actual","page-width"].indexOf(a)?a:(b=parseFloat(a))&&y<=b&&b<=w?a:E}function c(a){a=parseInt(a,10);return isNaN(a)?1:a}function B(){D=!D;d&&!D&&g.togglePresentationMode()}
+function t(){if(d||b.isSlideshow())n.className="viewer-touched",window.clearTimeout(N),N=window.setTimeout(function(){n.className=""},5E3)}function l(){C.classList.add("viewer-touched");G.classList.add("viewer-touched");window.clearTimeout(O);O=window.setTimeout(function(){z()},5E3)}function z(){C.classList.remove("viewer-touched");G.classList.remove("viewer-touched")}function u(){C.classList.contains("viewer-touched")?z():l()}function v(a){blanked.style.display="block";blanked.style.backgroundColor=
+a;z()}function p(a,b){var c=document.getElementById(a);c.addEventListener("click",function(){b();c.blur()})}var g=this,A=40,y=0.25,w=4,E="auto",d=!1,D=!1,L=!1,J,m=document.getElementById("viewer"),h=document.getElementById("canvasContainer"),n=document.getElementById("overlayNavigator"),C=document.getElementById("titlebar"),G=document.getElementById("toolbarContainer"),P=document.getElementById("toolbarLeft"),S=document.getElementById("toolbarMiddleContainer"),R=document.getElementById("scaleSelect"),
+K=document.getElementById("dialogOverlay"),Q=document.getElementById("toolbarRight"),I,H=[],F,M,N,O;this.initialize=function(){var d;d=e(r.zoom);J=r.documentUrl;document.title=r.title;var f=document.getElementById("documentName");f.innerHTML="";f.appendChild(f.ownerDocument.createTextNode(r.title));b.onLoad=function(){document.getElementById("pluginVersion").innerHTML=b.getPluginVersion();b.isSlideshow()?(h.classList.add("slideshow"),P.style.visibility="visible"):(S.style.visibility="visible",b.getPageInView&&
+(P.style.visibility="visible"));L=!0;H=b.getPages();document.getElementById("numPages").innerHTML="of "+H.length;g.showPage(c(r.startpage));a(d);h.onscroll=k;q()};b.initialize(h,J)};this.showPage=function(a){0>=a?a=1:a>H.length&&(a=H.length);b.showPage(a);F=a;document.getElementById("pageNumber").value=F};this.showNextPage=function(){g.showPage(F+1)};this.showPreviousPage=function(){g.showPage(F-1)};this.download=function(){var a=J.split("#")[0];window.open(a+"#viewer.action=download","_parent")};
+this.toggleFullScreen=function(){D?document.exitFullscreen?document.exitFullscreen():document.cancelFullScreen?document.cancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen():m.requestFullscreen?m.requestFullscreen():m.mozRequestFullScreen?m.mozRequestFullScreen():m.webkitRequestFullscreen?m.webkitRequestFullscreen():
+m.webkitRequestFullScreen?m.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT):m.msRequestFullscreen&&m.msRequestFullscreen()};this.togglePresentationMode=function(){var b=document.getElementById("overlayCloseButton");d?("block"===blanked.style.display&&(blanked.style.display="none",u()),C.style.display=G.style.display="block",b.style.display="none",h.classList.remove("presentationMode"),h.onmouseup=function(){},h.oncontextmenu=function(){},h.onmousedown=function(){},a("auto")):(C.style.display=
+G.style.display="none",b.style.display="block",h.classList.add("presentationMode"),h.onmousedown=function(a){a.preventDefault()},h.oncontextmenu=function(a){a.preventDefault()},h.onmouseup=function(a){a.preventDefault();1===a.which?g.showNextPage():g.showPreviousPage()},a("page-fit"));d=!d};this.getZoomLevel=function(){return b.getZoomLevel()};this.setZoomLevel=function(a){b.setZoomLevel(a)};this.zoomOut=function(){var b=(g.getZoomLevel()/1.1).toFixed(2),b=Math.max(y,b);a(b,!0)};this.zoomIn=function(){var b=
+(1.1*g.getZoomLevel()).toFixed(2),b=Math.min(w,b);a(b,!0)};(function(){f();b&&(g.initialize(),document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.webkitExitFullscreen||document.webkitCancelFullScreen||document.msExitFullscreen||(document.getElementById("fullscreen").style.visibility="hidden",document.getElementById("presentation").style.visibility="hidden"),p("overlayCloseButton",g.toggleFullScreen),p("fullscreen",g.toggleFullScreen),p("presentation",function(){D||
+g.toggleFullScreen();g.togglePresentationMode()}),document.addEventListener("fullscreenchange",B),document.addEventListener("webkitfullscreenchange",B),document.addEventListener("mozfullscreenchange",B),document.addEventListener("MSFullscreenChange",B),p("download",g.download),p("zoomOut",g.zoomOut),p("zoomIn",g.zoomIn),p("previous",g.showPreviousPage),p("next",g.showNextPage),p("previousPage",g.showPreviousPage),p("nextPage",g.showNextPage),document.getElementById("pageNumber").addEventListener("change",
+function(){g.showPage(this.value)}),document.getElementById("scaleSelect").addEventListener("change",function(){a(this.value)}),h.addEventListener("click",t),n.addEventListener("click",t),h.addEventListener("click",u),C.addEventListener("click",l),G.addEventListener("click",l),window.addEventListener("scalechange",function(a){var b=document.getElementById("customScaleOption"),c=x(String(a.scale));b.selected=!1;c||(b.textContent=Math.round(1E4*a.scale)/100+"%",b.selected=!0)},!0),window.addEventListener("resize",
+function(b){L&&(document.getElementById("pageWidthOption").selected||document.getElementById("pageAutoOption").selected)&&a(document.getElementById("scaleSelect").value);t()}),window.addEventListener("keydown",function(a){var b=a.keyCode;a=a.shiftKey;if("block"===blanked.style.display)switch(b){case 16:case 17:case 18:case 91:case 93:case 224:case 225:break;default:blanked.style.display="none",u()}else switch(b){case 8:case 33:case 37:case 38:case 80:g.showPreviousPage();break;case 13:case 34:case 39:case 40:case 78:g.showNextPage();
+break;case 32:a?g.showPreviousPage():g.showNextPage();break;case 66:case 190:d&&v("#000");break;case 87:case 188:d&&v("#FFF");break;case 36:g.showPage(1);break;case 35:g.showPage(H.length)}}))})()};(function(){function b(a,b){var c=new XMLHttpRequest;c.onreadystatechange=function(){var a,f;4===c.readyState&&((200<=c.status&&300>c.status||0===c.status)&&(a=c.getResponseHeader("content-type"))&&q.some(function(b){return b.supportsMimetype(a)?(f=b,console.log("Found plugin by mimetype and xhr head: "+a),!0):!1}),b(f))};c.open("HEAD",a,!0);c.send()}function r(a){var b;q.some(function(c){return c.supportsFileExtension(a)?(b=c,!0):!1});return b}function f(a){var b=r(a);b&&console.log("Found plugin by parameter type: "+
+a);return b}function x(a){a=a.split("?")[0].split(".").pop();var b=r(a);b&&console.log("Found plugin by file extension from path: "+a);return b}function s(a){var b={};(a.search||"?").substr(1).split("&").forEach(function(a){a&&(a=a.split("=",2),b[decodeURIComponent(a[0])]=decodeURIComponent(a[1]))});return b}var k,q=[function(){var a="application/vnd.oasis.opendocument.text application/vnd.oasis.opendocument.text-flat-xml application/vnd.oasis.opendocument.text-template application/vnd.oasis.opendocument.presentation application/vnd.oasis.opendocument.presentation-flat-xml application/vnd.oasis.opendocument.presentation-template application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.spreadsheet-flat-xml application/vnd.oasis.opendocument.spreadsheet-template".split(" "),
+b="odt fodt ott odp fodp otp ods fods ots".split(" ");return{supportsMimetype:function(b){return-1!==a.indexOf(b)},supportsFileExtension:function(a){return-1!==b.indexOf(a)},path:"./ODFViewerPlugin",getClass:function(){return ODFViewerPlugin}}}(),{supportsMimetype:function(a){return"application/pdf"===a},supportsFileExtension:function(a){return"pdf"===a},path:"./PDFViewerPlugin",getClass:function(){return PDFViewerPlugin}}];window.onload=function(){var a=document.location.hash.substring(1),e=s(document.location),
+c;a?(e.title||(e.title=a.replace(/^.*[\\\/]/,"")),e.documentUrl=a,b(a,function(b){b||(b=e.type?f(e.type):x(a));b?"undefined"!==String(typeof loadPlugin)?loadPlugin(b.path,function(){c=b.getClass();new Viewer(new c,e)}):(c=b.getClass(),new Viewer(new c,e)):new Viewer})):new Viewer};k=document.createElementNS(document.head.namespaceURI,"style");k.setAttribute("media","screen");k.setAttribute("type","text/css");k.appendChild(document.createTextNode(viewer_css));document.head.appendChild(k);k=document.createElementNS(document.head.namespaceURI,
+"style");k.setAttribute("media","only screen and (max-device-width: 800px) and (max-device-height: 800px)");k.setAttribute("type","text/css");k.setAttribute("viewerTouch","1");k.appendChild(document.createTextNode(viewerTouch_css));document.head.appendChild(k)})();
+
+//]]>
+        </script>
+    </head>
+
+    <body>
+        <div id = "viewer">
+            <div id = "titlebar">
+                <div id = "documentName"></div>
+                <div id = "titlebarRight">
+                    <button id = "presentation" class = "toolbarButton presentation" title = "Presentation"></button>
+                    <button id = "fullscreen" class = "toolbarButton fullscreen" title = "Fullscreen"></button>
+                    <button id = "download" class = "toolbarButton download" title = "Download"></button>
+                </div>
+           </div>
+            <div id = "toolbarContainer">
+                <div id = "toolbar">
+                    <div id = "toolbarLeft">
+                        <div id = "navButtons" class = "splitToolbarButton">
+                            <button id = "previous" class = "toolbarButton pageUp" title = "Previous Page"></button>
+                            <div class="splitToolbarButtonSeparator"></div>
+                            <button id = "next" class = "toolbarButton pageDown" title = "Next Page"></button>
+                        </div>
+                        <label id = "pageNumberLabel" class = "toolbarLabel" for = "pageNumber">Page:</label>
+                        <input type = "number" id = "pageNumber" class = "toolbarField pageNumber"/>
+                        <span id = "numPages" class = "toolbarLabel"></span>
+                    </div>
+                    <div id = "toolbarMiddleContainer" class = "outerCenter">
+                        <div id = "toolbarMiddle" class = "innerCenter">
+                            <div id = 'zoomButtons' class = "splitToolbarButton">
+                                <button id = "zoomOut" class = "toolbarButton zoomOut" title = "Zoom Out"></button>
+                                <div class="splitToolbarButtonSeparator"></div>
+                                <button id = "zoomIn" class = "toolbarButton zoomIn" title = "Zoom In"></button>
+                            </div>
+                            <span id="scaleSelectContainer" class="dropdownToolbarButton">
+                                <select id="scaleSelect" title="Zoom" oncontextmenu="return false;">
+                                    <option id="pageAutoOption" value="auto" selected>Automatic</option>
+                                    <option id="pageActualOption" value="page-actual">Actual Size</option>
+                                    <option id="pageWidthOption" value="page-width">Full Width</option>
+                                    <option id="customScaleOption" value="custom"> </option>
+                                    <option value="0.5">50%</option>
+                                    <option value="0.75">75%</option>
+                                    <option value="1">100%</option>
+                                    <option value="1.25">125%</option>
+                                    <option value="1.5">150%</option>
+                                    <option value="2">200%</option>
+                                </select>
+                            </span>
+                            <div id = "sliderContainer">
+                                <div id = "slider"></div>
+                            </div>
+                        </div>
+                    </div>
+                    <div id = "toolbarRight">
+                    </div>
+                </div>
+            </div>
+            <div id = "canvasContainer">
+                <div id = "canvas"></div>
+            </div>
+            <div id = "overlayNavigator">
+                <div id = "previousPage"></div>
+                <div id = "nextPage"></div>
+            </div>
+            <div id = "overlayCloseButton">
+            &#10006;
+            </div>
+            <div id = "dialogOverlay"></div>
+            <div id = "blanked"></div>
+        </div>
+    </body>
+</html>
diff --git a/source/ViewerJS/pdf.js b/source/ViewerJS/pdf.js
new file mode 100644
index 0000000..463d7d0
--- /dev/null
+++ b/source/ViewerJS/pdf.js
@@ -0,0 +1,8052 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+/* Copyright 2012 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*jshint globalstrict: false */
+/* globals PDFJS */
+
+// Initializing PDFJS global object (if still undefined)
+if (typeof PDFJS === 'undefined') {
+  (typeof window !== 'undefined' ? window : this).PDFJS = {};
+}
+
+PDFJS.version = '1.1.114';
+PDFJS.build = '3fd44fd';
+
+(function pdfjsWrapper() {
+  // Use strict in our context only - users might not want it
+  'use strict';
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+/* Copyright 2012 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* globals Cmd, ColorSpace, Dict, MozBlobBuilder, Name, PDFJS, Ref, URL,
+           Promise */
+
+'use strict';
+
+var globalScope = (typeof window === 'undefined') ? this : window;
+
+var isWorker = (typeof window === 'undefined');
+
+var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
+
+var TextRenderingMode = {
+  FILL: 0,
+  STROKE: 1,
+  FILL_STROKE: 2,
+  INVISIBLE: 3,
+  FILL_ADD_TO_PATH: 4,
+  STROKE_ADD_TO_PATH: 5,
+  FILL_STROKE_ADD_TO_PATH: 6,
+  ADD_TO_PATH: 7,
+  FILL_STROKE_MASK: 3,
+  ADD_TO_PATH_FLAG: 4
+};
+
+var ImageKind = {
+  GRAYSCALE_1BPP: 1,
+  RGB_24BPP: 2,
+  RGBA_32BPP: 3
+};
+
+var AnnotationType = {
+  WIDGET: 1,
+  TEXT: 2,
+  LINK: 3
+};
+
+var StreamType = {
+  UNKNOWN: 0,
+  FLATE: 1,
+  LZW: 2,
+  DCT: 3,
+  JPX: 4,
+  JBIG: 5,
+  A85: 6,
+  AHX: 7,
+  CCF: 8,
+  RL: 9
+};
+
+var FontType = {
+  UNKNOWN: 0,
+  TYPE1: 1,
+  TYPE1C: 2,
+  CIDFONTTYPE0: 3,
+  CIDFONTTYPE0C: 4,
+  TRUETYPE: 5,
+  CIDFONTTYPE2: 6,
+  TYPE3: 7,
+  OPENTYPE: 8,
+  TYPE0: 9,
+  MMTYPE1: 10
+};
+
+// The global PDFJS object exposes the API
+// In production, it will be declared outside a global wrapper
+// In development, it will be declared here
+if (!globalScope.PDFJS) {
+  globalScope.PDFJS = {};
+}
+
+globalScope.PDFJS.pdfBug = false;
+
+PDFJS.VERBOSITY_LEVELS = {
+  errors: 0,
+  warnings: 1,
+  infos: 5
+};
+
+// All the possible operations for an operator list.
+var OPS = PDFJS.OPS = {
+  // Intentionally start from 1 so it is easy to spot bad operators that will be
+  // 0's.
+  dependency: 1,
+  setLineWidth: 2,
+  setLineCap: 3,
+  setLineJoin: 4,
+  setMiterLimit: 5,
+  setDash: 6,
+  setRenderingIntent: 7,
+  setFlatness: 8,
+  setGState: 9,
+  save: 10,
+  restore: 11,
+  transform: 12,
+  moveTo: 13,
+  lineTo: 14,
+  curveTo: 15,
+  curveTo2: 16,
+  curveTo3: 17,
+  closePath: 18,
+  rectangle: 19,
+  stroke: 20,
+  closeStroke: 21,
+  fill: 22,
+  eoFill: 23,
+  fillStroke: 24,
+  eoFillStroke: 25,
+  closeFillStroke: 26,
+  closeEOFillStroke: 27,
+  endPath: 28,
+  clip: 29,
+  eoClip: 30,
+  beginText: 31,
+  endText: 32,
+  setCharSpacing: 33,
+  setWordSpacing: 34,
+  setHScale: 35,
+  setLeading: 36,
+  setFont: 37,
+  setTextRenderingMode: 38,
+  setTextRise: 39,
+  moveText: 40,
+  setLeadingMoveText: 41,
+  setTextMatrix: 42,
+  nextLine: 43,
+  showText: 44,
+  showSpacedText: 45,
+  nextLineShowText: 46,
+  nextLineSetSpacingShowText: 47,
+  setCharWidth: 48,
+  setCharWidthAndBounds: 49,
+  setStrokeColorSpace: 50,
+  setFillColorSpace: 51,
+  setStrokeColor: 52,
+  setStrokeColorN: 53,
+  setFillColor: 54,
+  setFillColorN: 55,
+  setStrokeGray: 56,
+  setFillGray: 57,
+  setStrokeRGBColor: 58,
+  setFillRGBColor: 59,
+  setStrokeCMYKColor: 60,
+  setFillCMYKColor: 61,
+  shadingFill: 62,
+  beginInlineImage: 63,
+  beginImageData: 64,
+  endInlineImage: 65,
+  paintXObject: 66,
+  markPoint: 67,
+  markPointProps: 68,
+  beginMarkedContent: 69,
+  beginMarkedContentProps: 70,
+  endMarkedContent: 71,
+  beginCompat: 72,
+  endCompat: 73,
+  paintFormXObjectBegin: 74,
+  paintFormXObjectEnd: 75,
+  beginGroup: 76,
+  endGroup: 77,
+  beginAnnotations: 78,
+  endAnnotations: 79,
+  beginAnnotation: 80,
+  endAnnotation: 81,
+  paintJpegXObject: 82,
+  paintImageMaskXObject: 83,
+  paintImageMaskXObjectGroup: 84,
+  paintImageXObject: 85,
+  paintInlineImageXObject: 86,
+  paintInlineImageXObjectGroup: 87,
+  paintImageXObjectRepeat: 88,
+  paintImageMaskXObjectRepeat: 89,
+  paintSolidColorImageMask: 90,
+  constructPath: 91
+};
+
+// A notice for devs. These are good for things that are helpful to devs, such
+// as warning that Workers were disabled, which is important to devs but not
+// end users.
+function info(msg) {
+  if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.infos) {
+    console.log('Info: ' + msg);
+  }
+}
+
+// Non-fatal warnings.
+function warn(msg) {
+  if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) {
+    console.log('Warning: ' + msg);
+  }
+}
+
+// Fatal errors that should trigger the fallback UI and halt execution by
+// throwing an exception.
+function error(msg) {
+  if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.errors) {
+    console.log('Error: ' + msg);
+    console.log(backtrace());
+  }
+  UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown);
+  throw new Error(msg);
+}
+
+function backtrace() {
+  try {
+    throw new Error();
+  } catch (e) {
+    return e.stack ? e.stack.split('\n').slice(2).join('\n') : '';
+  }
+}
+
+function assert(cond, msg) {
+  if (!cond) {
+    error(msg);
+  }
+}
+
+var UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = {
+  unknown: 'unknown',
+  forms: 'forms',
+  javaScript: 'javaScript',
+  smask: 'smask',
+  shadingPattern: 'shadingPattern',
+  font: 'font'
+};
+
+var UnsupportedManager = PDFJS.UnsupportedManager =
+  (function UnsupportedManagerClosure() {
+  var listeners = [];
+  return {
+    listen: function (cb) {
+      listeners.push(cb);
+    },
+    notify: function (featureId) {
+      warn('Unsupported feature "' + featureId + '"');
+      for (var i = 0, ii = listeners.length; i < ii; i++) {
+        listeners[i](featureId);
+      }
+    }
+  };
+})();
+
+// Combines two URLs. The baseUrl shall be absolute URL. If the url is an
+// absolute URL, it will be returned as is.
+function combineUrl(baseUrl, url) {
+  if (!url) {
+    return baseUrl;
+  }
+  if (/^[a-z][a-z0-9+\-.]*:/i.test(url)) {
+    return url;
+  }
+  var i;
+  if (url.charAt(0) === '/') {
+    // absolute path
+    i = baseUrl.indexOf('://');
+    if (url.charAt(1) === '/') {
+      ++i;
+    } else {
+      i = baseUrl.indexOf('/', i + 3);
+    }
+    return baseUrl.substring(0, i) + url;
+  } else {
+    // relative path
+    var pathLength = baseUrl.length;
+    i = baseUrl.lastIndexOf('#');
+    pathLength = i >= 0 ? i : pathLength;
+    i = baseUrl.lastIndexOf('?', pathLength);
+    pathLength = i >= 0 ? i : pathLength;
+    var prefixLength = baseUrl.lastIndexOf('/', pathLength);
+    return baseUrl.substring(0, prefixLength + 1) + url;
+  }
+}
+
+// Validates if URL is safe and allowed, e.g. to avoid XSS.
+function isValidUrl(url, allowRelative) {
+  if (!url) {
+    return false;
+  }
+  // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1)
+  // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+  var protocol = /^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url);
+  if (!protocol) {
+    return allowRelative;
+  }
+  protocol = protocol[0].toLowerCase();
+  switch (protocol) {
+    case 'http':
+    case 'https':
+    case 'ftp':
+    case 'mailto':
+    case 'tel':
+      return true;
+    default:
+      return false;
+  }
+}
+PDFJS.isValidUrl = isValidUrl;
+
+function shadow(obj, prop, value) {
+  Object.defineProperty(obj, prop, { value: value,
+                                     enumerable: true,
+                                     configurable: true,
+                                     writable: false });
+  return value;
+}
+PDFJS.shadow = shadow;
+
+var PasswordResponses = PDFJS.PasswordResponses = {
+  NEED_PASSWORD: 1,
+  INCORRECT_PASSWORD: 2
+};
+
+var PasswordException = (function PasswordExceptionClosure() {
+  function PasswordException(msg, code) {
+    this.name = 'PasswordException';
+    this.message = msg;
+    this.code = code;
+  }
+
+  PasswordException.prototype = new Error();
+  PasswordException.constructor = PasswordException;
+
+  return PasswordException;
+})();
+PDFJS.PasswordException = PasswordException;
+
+var UnknownErrorException = (function UnknownErrorExceptionClosure() {
+  function UnknownErrorException(msg, details) {
+    this.name = 'UnknownErrorException';
+    this.message = msg;
+    this.details = details;
+  }
+
+  UnknownErrorException.prototype = new Error();
+  UnknownErrorException.constructor = UnknownErrorException;
+
+  return UnknownErrorException;
+})();
+PDFJS.UnknownErrorException = UnknownErrorException;
+
+var InvalidPDFException = (function InvalidPDFExceptionClosure() {
+  function InvalidPDFException(msg) {
+    this.name = 'InvalidPDFException';
+    this.message = msg;
+  }
+
+  InvalidPDFException.prototype = new Error();
+  InvalidPDFException.constructor = InvalidPDFException;
+
+  return InvalidPDFException;
+})();
+PDFJS.InvalidPDFException = InvalidPDFException;
+
+var MissingPDFException = (function MissingPDFExceptionClosure() {
+  function MissingPDFException(msg) {
+    this.name = 'MissingPDFException';
+    this.message = msg;
+  }
+
+  MissingPDFException.prototype = new Error();
+  MissingPDFException.constructor = MissingPDFException;
+
+  return MissingPDFException;
+})();
+PDFJS.MissingPDFException = MissingPDFException;
+
+var UnexpectedResponseException =
+    (function UnexpectedResponseExceptionClosure() {
+  function UnexpectedResponseException(msg, status) {
+    this.name = 'UnexpectedResponseException';
+    this.message = msg;
+    this.status = status;
+  }
+
+  UnexpectedResponseException.prototype = new Error();
+  UnexpectedResponseException.constructor = UnexpectedResponseException;
+
+  return UnexpectedResponseException;
+})();
+PDFJS.UnexpectedResponseException = UnexpectedResponseException;
+
+var NotImplementedException = (function NotImplementedExceptionClosure() {
+  function NotImplementedException(msg) {
+    this.message = msg;
+  }
+
+  NotImplementedException.prototype = new Error();
+  NotImplementedException.prototype.name = 'NotImplementedException';
+  NotImplementedException.constructor = NotImplementedException;
+
+  return NotImplementedException;
+})();
+
+var MissingDataException = (function MissingDataExceptionClosure() {
+  function MissingDataException(begin, end) {
+    this.begin = begin;
+    this.end = end;
+    this.message = 'Missing data [' + begin + ', ' + end + ')';
+  }
+
+  MissingDataException.prototype = new Error();
+  MissingDataException.prototype.name = 'MissingDataException';
+  MissingDataException.constructor = MissingDataException;
+
+  return MissingDataException;
+})();
+
+var XRefParseException = (function XRefParseExceptionClosure() {
+  function XRefParseException(msg) {
+    this.message = msg;
+  }
+
+  XRefParseException.prototype = new Error();
+  XRefParseException.prototype.name = 'XRefParseException';
+  XRefParseException.constructor = XRefParseException;
+
+  return XRefParseException;
+})();
+
+
+function bytesToString(bytes) {
+  assert(bytes !== null && typeof bytes === 'object' &&
+         bytes.length !== undefined, 'Invalid argument for bytesToString');
+  var length = bytes.length;
+  var MAX_ARGUMENT_COUNT = 8192;
+  if (length < MAX_ARGUMENT_COUNT) {
+    return String.fromCharCode.apply(null, bytes);
+  }
+  var strBuf = [];
+  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
+    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
+    var chunk = bytes.subarray(i, chunkEnd);
+    strBuf.push(String.fromCharCode.apply(null, chunk));
+  }
+  return strBuf.join('');
+}
+
+function stringToBytes(str) {
+  assert(typeof str === 'string', 'Invalid argument for stringToBytes');
+  var length = str.length;
+  var bytes = new Uint8Array(length);
+  for (var i = 0; i < length; ++i) {
+    bytes[i] = str.charCodeAt(i) & 0xFF;
+  }
+  return bytes;
+}
+
+function string32(value) {
+  return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,
+                             (value >> 8) & 0xff, value & 0xff);
+}
+
+function log2(x) {
+  var n = 1, i = 0;
+  while (x > n) {
+    n <<= 1;
+    i++;
+  }
+  return i;
+}
+
+function readInt8(data, start) {
+  return (data[start] << 24) >> 24;
+}
+
+function readUint16(data, offset) {
+  return (data[offset] << 8) | data[offset + 1];
+}
+
+function readUint32(data, offset) {
+  return ((data[offset] << 24) | (data[offset + 1] << 16) |
+         (data[offset + 2] << 8) | data[offset + 3]) >>> 0;
+}
+
+// Lazy test the endianness of the platform
+// NOTE: This will be 'true' for simulated TypedArrays
+function isLittleEndian() {
+  var buffer8 = new Uint8Array(2);
+  buffer8[0] = 1;
+  var buffer16 = new Uint16Array(buffer8.buffer);
+  return (buffer16[0] === 1);
+}
+
+Object.defineProperty(PDFJS, 'isLittleEndian', {
+  configurable: true,
+  get: function PDFJS_isLittleEndian() {
+    return shadow(PDFJS, 'isLittleEndian', isLittleEndian());
+  }
+});
+
+//#if !(FIREFOX || MOZCENTRAL || B2G || CHROME)
+//// Lazy test if the userAgant support CanvasTypedArrays
+function hasCanvasTypedArrays() {
+  var canvas = document.createElement('canvas');
+  canvas.width = canvas.height = 1;
+  var ctx = canvas.getContext('2d');
+  var imageData = ctx.createImageData(1, 1);
+  return (typeof imageData.data.buffer !== 'undefined');
+}
+
+Object.defineProperty(PDFJS, 'hasCanvasTypedArrays', {
+  configurable: true,
+  get: function PDFJS_hasCanvasTypedArrays() {
+    return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays());
+  }
+});
+
+var Uint32ArrayView = (function Uint32ArrayViewClosure() {
+
+  function Uint32ArrayView(buffer, length) {
+    this.buffer = buffer;
+    this.byteLength = buffer.length;
+    this.length = length === undefined ? (this.byteLength >> 2) : length;
+    ensureUint32ArrayViewProps(this.length);
+  }
+  Uint32ArrayView.prototype = Object.create(null);
+
+  var uint32ArrayViewSetters = 0;
+  function createUint32ArrayProp(index) {
+    return {
+      get: function () {
+        var buffer = this.buffer, offset = index << 2;
+        return (buffer[offset] | (buffer[offset + 1] << 8) |
+          (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;
+      },
+      set: function (value) {
+        var buffer = this.buffer, offset = index << 2;
+        buffer[offset] = value & 255;
+        buffer[offset + 1] = (value >> 8) & 255;
+        buffer[offset + 2] = (value >> 16) & 255;
+        buffer[offset + 3] = (value >>> 24) & 255;
+      }
+    };
+  }
+
+  function ensureUint32ArrayViewProps(length) {
+    while (uint32ArrayViewSetters < length) {
+      Object.defineProperty(Uint32ArrayView.prototype,
+        uint32ArrayViewSetters,
+        createUint32ArrayProp(uint32ArrayViewSetters));
+      uint32ArrayViewSetters++;
+    }
+  }
+
+  return Uint32ArrayView;
+})();
+//#else
+//PDFJS.hasCanvasTypedArrays = true;
+//#endif
+
+var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
+
+var Util = PDFJS.Util = (function UtilClosure() {
+  function Util() {}
+
+  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
+
+  // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids
+  // creating many intermediate strings.
+  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
+    rgbBuf[1] = r;
+    rgbBuf[3] = g;
+    rgbBuf[5] = b;
+    return rgbBuf.join('');
+  };
+
+  // Concatenates two transformation matrices together and returns the result.
+  Util.transform = function Util_transform(m1, m2) {
+    return [
+      m1[0] * m2[0] + m1[2] * m2[1],
+      m1[1] * m2[0] + m1[3] * m2[1],
+      m1[0] * m2[2] + m1[2] * m2[3],
+      m1[1] * m2[2] + m1[3] * m2[3],
+      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],
+      m1[1] * m2[4] + m1[3] * m2[5] + m1[5]
+    ];
+  };
+
+  // For 2d affine transforms
+  Util.applyTransform = function Util_applyTransform(p, m) {
+    var xt = p[0] * m[0] + p[1] * m[2] + m[4];
+    var yt = p[0] * m[1] + p[1] * m[3] + m[5];
+    return [xt, yt];
+  };
+
+  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
+    var d = m[0] * m[3] - m[1] * m[2];
+    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
+    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
+    return [xt, yt];
+  };
+
+  // Applies the transform to the rectangle and finds the minimum axially
+  // aligned bounding box.
+  Util.getAxialAlignedBoundingBox =
+    function Util_getAxialAlignedBoundingBox(r, m) {
+
+    var p1 = Util.applyTransform(r, m);
+    var p2 = Util.applyTransform(r.slice(2, 4), m);
+    var p3 = Util.applyTransform([r[0], r[3]], m);
+    var p4 = Util.applyTransform([r[2], r[1]], m);
+    return [
+      Math.min(p1[0], p2[0], p3[0], p4[0]),
+      Math.min(p1[1], p2[1], p3[1], p4[1]),
+      Math.max(p1[0], p2[0], p3[0], p4[0]),
+      Math.max(p1[1], p2[1], p3[1], p4[1])
+    ];
+  };
+
+  Util.inverseTransform = function Util_inverseTransform(m) {
+    var d = m[0] * m[3] - m[1] * m[2];
+    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,
+      (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
+  };
+
+  // Apply a generic 3d matrix M on a 3-vector v:
+  //   | a b c |   | X |
+  //   | d e f | x | Y |
+  //   | g h i |   | Z |
+  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],
+  // with v as [X,Y,Z]
+  Util.apply3dTransform = function Util_apply3dTransform(m, v) {
+    return [
+      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],
+      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],
+      m[6] * v[0] + m[7] * v[1] + m[8] * v[2]
+    ];
+  };
+
+  // This calculation uses Singular Value Decomposition.
+  // The SVD can be represented with formula A = USV. We are interested in the
+  // matrix S here because it represents the scale values.
+  Util.singularValueDecompose2dScale =
+    function Util_singularValueDecompose2dScale(m) {
+
+    var transpose = [m[0], m[2], m[1], m[3]];
+
+    // Multiply matrix m with its transpose.
+    var a = m[0] * transpose[0] + m[1] * transpose[2];
+    var b = m[0] * transpose[1] + m[1] * transpose[3];
+    var c = m[2] * transpose[0] + m[3] * transpose[2];
+    var d = m[2] * transpose[1] + m[3] * transpose[3];
+
+    // Solve the second degree polynomial to get roots.
+    var first = (a + d) / 2;
+    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
+    var sx = first + second || 1;
+    var sy = first - second || 1;
+
+    // Scale values are the square roots of the eigenvalues.
+    return [Math.sqrt(sx), Math.sqrt(sy)];
+  };
+
+  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)
+  // For coordinate systems whose origin lies in the bottom-left, this
+  // means normalization to (BL,TR) ordering. For systems with origin in the
+  // top-left, this means (TL,BR) ordering.
+  Util.normalizeRect = function Util_normalizeRect(rect) {
+    var r = rect.slice(0); // clone rect
+    if (rect[0] > rect[2]) {
+      r[0] = rect[2];
+      r[2] = rect[0];
+    }
+    if (rect[1] > rect[3]) {
+      r[1] = rect[3];
+      r[3] = rect[1];
+    }
+    return r;
+  };
+
+  // Returns a rectangle [x1, y1, x2, y2] corresponding to the
+  // intersection of rect1 and rect2. If no intersection, returns 'false'
+  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]
+  Util.intersect = function Util_intersect(rect1, rect2) {
+    function compare(a, b) {
+      return a - b;
+    }
+
+    // Order points along the axes
+    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
+        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
+        result = [];
+
+    rect1 = Util.normalizeRect(rect1);
+    rect2 = Util.normalizeRect(rect2);
+
+    // X: first and second points belong to different rectangles?
+    if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||
+        (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {
+      // Intersection must be between second and third points
+      result[0] = orderedX[1];
+      result[2] = orderedX[2];
+    } else {
+      return false;
+    }
+
+    // Y: first and second points belong to different rectangles?
+    if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||
+        (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {
+      // Intersection must be between second and third points
+      result[1] = orderedY[1];
+      result[3] = orderedY[2];
+    } else {
+      return false;
+    }
+
+    return result;
+  };
+
+  Util.sign = function Util_sign(num) {
+    return num < 0 ? -1 : 1;
+  };
+
+  Util.appendToArray = function Util_appendToArray(arr1, arr2) {
+    Array.prototype.push.apply(arr1, arr2);
+  };
+
+  Util.prependToArray = function Util_prependToArray(arr1, arr2) {
+    Array.prototype.unshift.apply(arr1, arr2);
+  };
+
+  Util.extendObj = function extendObj(obj1, obj2) {
+    for (var key in obj2) {
+      obj1[key] = obj2[key];
+    }
+  };
+
+  Util.getInheritableProperty = function Util_getInheritableProperty(dict,
+                                                                     name) {
+    while (dict && !dict.has(name)) {
+      dict = dict.get('Parent');
+    }
+    if (!dict) {
+      return null;
+    }
+    return dict.get(name);
+  };
+
+  Util.inherit = function Util_inherit(sub, base, prototype) {
+    sub.prototype = Object.create(base.prototype);
+    sub.prototype.constructor = sub;
+    for (var prop in prototype) {
+      sub.prototype[prop] = prototype[prop];
+    }
+  };
+
+  Util.loadScript = function Util_loadScript(src, callback) {
+    var script = document.createElement('script');
+    var loaded = false;
+    script.setAttribute('src', src);
+    if (callback) {
+      script.onload = function() {
+        if (!loaded) {
+          callback();
+        }
+        loaded = true;
+      };
+    }
+    document.getElementsByTagName('head')[0].appendChild(script);
+  };
+
+  return Util;
+})();
+
+/**
+ * PDF page viewport created based on scale, rotation and offset.
+ * @class
+ * @alias PDFJS.PageViewport
+ */
+var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {
+  /**
+   * @constructor
+   * @private
+   * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.
+   * @param scale {number} scale of the viewport.
+   * @param rotation {number} rotations of the viewport in degrees.
+   * @param offsetX {number} offset X
+   * @param offsetY {number} offset Y
+   * @param dontFlip {boolean} if true, axis Y will not be flipped.
+   */
+  function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {
+    this.viewBox = viewBox;
+    this.scale = scale;
+    this.rotation = rotation;
+    this.offsetX = offsetX;
+    this.offsetY = offsetY;
+
+    // creating transform to convert pdf coordinate system to the normal
+    // canvas like coordinates taking in account scale and rotation
+    var centerX = (viewBox[2] + viewBox[0]) / 2;
+    var centerY = (viewBox[3] + viewBox[1]) / 2;
+    var rotateA, rotateB, rotateC, rotateD;
+    rotation = rotation % 360;
+    rotation = rotation < 0 ? rotation + 360 : rotation;
+    switch (rotation) {
+      case 180:
+        rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;
+        break;
+      case 90:
+        rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;
+        break;
+      case 270:
+        rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;
+        break;
+      //case 0:
+      default:
+        rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;
+        break;
+    }
+
+    if (dontFlip) {
+      rotateC = -rotateC; rotateD = -rotateD;
+    }
+
+    var offsetCanvasX, offsetCanvasY;
+    var width, height;
+    if (rotateA === 0) {
+      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
+      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
+      width = Math.abs(viewBox[3] - viewBox[1]) * scale;
+      height = Math.abs(viewBox[2] - viewBox[0]) * scale;
+    } else {
+      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
+      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
+      width = Math.abs(viewBox[2] - viewBox[0]) * scale;
+      height = Math.abs(viewBox[3] - viewBox[1]) * scale;
+    }
+    // creating transform for the following operations:
+    // translate(-centerX, -centerY), rotate and flip vertically,
+    // scale, and translate(offsetCanvasX, offsetCanvasY)
+    this.transform = [
+      rotateA * scale,
+      rotateB * scale,
+      rotateC * scale,
+      rotateD * scale,
+      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,
+      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY
+    ];
+
+    this.width = width;
+    this.height = height;
+    this.fontScale = scale;
+  }
+  PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ {
+    /**
+     * Clones viewport with additional properties.
+     * @param args {Object} (optional) If specified, may contain the 'scale' or
+     * 'rotation' properties to override the corresponding properties in
+     * the cloned viewport.
+     * @returns {PDFJS.PageViewport} Cloned viewport.
+     */
+    clone: function PageViewPort_clone(args) {
+      args = args || {};
+      var scale = 'scale' in args ? args.scale : this.scale;
+      var rotation = 'rotation' in args ? args.rotation : this.rotation;
+      return new PageViewport(this.viewBox.slice(), scale, rotation,
+                              this.offsetX, this.offsetY, args.dontFlip);
+    },
+    /**
+     * Converts PDF point to the viewport coordinates. For examples, useful for
+     * converting PDF location into canvas pixel coordinates.
+     * @param x {number} X coordinate.
+     * @param y {number} Y coordinate.
+     * @returns {Object} Object that contains 'x' and 'y' properties of the
+     * point in the viewport coordinate space.
+     * @see {@link convertToPdfPoint}
+     * @see {@link convertToViewportRectangle}
+     */
+    convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {
+      return Util.applyTransform([x, y], this.transform);
+    },
+    /**
+     * Converts PDF rectangle to the viewport coordinates.
+     * @param rect {Array} xMin, yMin, xMax and yMax coordinates.
+     * @returns {Array} Contains corresponding coordinates of the rectangle
+     * in the viewport coordinate space.
+     * @see {@link convertToViewportPoint}
+     */
+    convertToViewportRectangle:
+      function PageViewport_convertToViewportRectangle(rect) {
+      var tl = Util.applyTransform([rect[0], rect[1]], this.transform);
+      var br = Util.applyTransform([rect[2], rect[3]], this.transform);
+      return [tl[0], tl[1], br[0], br[1]];
+    },
+    /**
+     * Converts viewport coordinates to the PDF location. For examples, useful
+     * for converting canvas pixel location into PDF one.
+     * @param x {number} X coordinate.
+     * @param y {number} Y coordinate.
+     * @returns {Object} Object that contains 'x' and 'y' properties of the
+     * point in the PDF coordinate space.
+     * @see {@link convertToViewportPoint}
+     */
+    convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {
+      return Util.applyInverseTransform([x, y], this.transform);
+    }
+  };
+  return PageViewport;
+})();
+
+var PDFStringTranslateTable = [
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,
+  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,
+  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,
+  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC
+];
+
+function stringToPDFString(str) {
+  var i, n = str.length, strBuf = [];
+  if (str[0] === '\xFE' && str[1] === '\xFF') {
+    // UTF16BE BOM
+    for (i = 2; i < n; i += 2) {
+      strBuf.push(String.fromCharCode(
+        (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));
+    }
+  } else {
+    for (i = 0; i < n; ++i) {
+      var code = PDFStringTranslateTable[str.charCodeAt(i)];
+      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+    }
+  }
+  return strBuf.join('');
+}
+
+function stringToUTF8String(str) {
+  return decodeURIComponent(escape(str));
+}
+
+function isEmptyObj(obj) {
+  for (var key in obj) {
+    return false;
+  }
+  return true;
+}
+
+function isBool(v) {
+  return typeof v === 'boolean';
+}
+
+function isInt(v) {
+  return typeof v === 'number' && ((v | 0) === v);
+}
+
+function isNum(v) {
+  return typeof v === 'number';
+}
+
+function isString(v) {
+  return typeof v === 'string';
+}
+
+function isName(v) {
+  return v instanceof Name;
+}
+
+function isCmd(v, cmd) {
+  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);
+}
+
+function isDict(v, type) {
+  if (!(v instanceof Dict)) {
+    return false;
+  }
+  if (!type) {
+    return true;
+  }
+  var dictType = v.get('Type');
+  return isName(dictType) && dictType.name === type;
+}
+
+function isArray(v) {
+  return v instanceof Array;
+}
+
+function isStream(v) {
+  return typeof v === 'object' && v !== null && v.getBytes !== undefined;
+}
+
+function isArrayBuffer(v) {
+  return typeof v === 'object' && v !== null && v.byteLength !== undefined;
+}
+
+function isRef(v) {
+  return v instanceof Ref;
+}
+
+/**
+ * Promise Capability object.
+ *
+ * @typedef {Object} PromiseCapability
+ * @property {Promise} promise - A promise object.
+ * @property {function} resolve - Fullfills the promise.
+ * @property {function} reject - Rejects the promise.
+ */
+
+/**
+ * Creates a promise capability object.
+ * @alias PDFJS.createPromiseCapability
+ *
+ * @return {PromiseCapability} A capability object contains:
+ * - a Promise, resolve and reject methods.
+ */
+function createPromiseCapability() {
+  var capability = {};
+  capability.promise = new Promise(function (resolve, reject) {
+    capability.resolve = resolve;
+    capability.reject = reject;
+  });
+  return capability;
+}
+
+PDFJS.createPromiseCapability = createPromiseCapability;
+
+/**
+ * Polyfill for Promises:
+ * The following promise implementation tries to generally implement the
+ * Promise/A+ spec. Some notable differences from other promise libaries are:
+ * - There currently isn't a seperate deferred and promise object.
+ * - Unhandled rejections eventually show an error if they aren't handled.
+ *
+ * Based off of the work in:
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=810490
+ */
+(function PromiseClosure() {
+  if (globalScope.Promise) {
+    // Promises existing in the DOM/Worker, checking presence of all/resolve
+    if (typeof globalScope.Promise.all !== 'function') {
+      globalScope.Promise.all = function (iterable) {
+        var count = 0, results = [], resolve, reject;
+        var promise = new globalScope.Promise(function (resolve_, reject_) {
+          resolve = resolve_;
+          reject = reject_;
+        });
+        iterable.forEach(function (p, i) {
+          count++;
+          p.then(function (result) {
+            results[i] = result;
+            count--;
+            if (count === 0) {
+              resolve(results);
+            }
+          }, reject);
+        });
+        if (count === 0) {
+          resolve(results);
+        }
+        return promise;
+      };
+    }
+    if (typeof globalScope.Promise.resolve !== 'function') {
+      globalScope.Promise.resolve = function (value) {
+        return new globalScope.Promise(function (resolve) { resolve(value); });
+      };
+    }
+    if (typeof globalScope.Promise.reject !== 'function') {
+      globalScope.Promise.reject = function (reason) {
+        return new globalScope.Promise(function (resolve, reject) {
+          reject(reason);
+        });
+      };
+    }
+    if (typeof globalScope.Promise.prototype.catch !== 'function') {
+      globalScope.Promise.prototype.catch = function (onReject) {
+        return globalScope.Promise.prototype.then(undefined, onReject);
+      };
+    }
+    return;
+  }
+//#if !MOZCENTRAL
+  var STATUS_PENDING = 0;
+  var STATUS_RESOLVED = 1;
+  var STATUS_REJECTED = 2;
+
+  // In an attempt to avoid silent exceptions, unhandled rejections are
+  // tracked and if they aren't handled in a certain amount of time an
+  // error is logged.
+  var REJECTION_TIMEOUT = 500;
+
+  var HandlerManager = {
+    handlers: [],
+    running: false,
+    unhandledRejections: [],
+    pendingRejectionCheck: false,
+
+    scheduleHandlers: function scheduleHandlers(promise) {
+      if (promise._status === STATUS_PENDING) {
+        return;
+      }
+
+      this.handlers = this.handlers.concat(promise._handlers);
+      promise._handlers = [];
+
+      if (this.running) {
+        return;
+      }
+      this.running = true;
+
+      setTimeout(this.runHandlers.bind(this), 0);
+    },
+
+    runHandlers: function runHandlers() {
+      var RUN_TIMEOUT = 1; // ms
+      var timeoutAt = Date.now() + RUN_TIMEOUT;
+      while (this.handlers.length > 0) {
+        var handler = this.handlers.shift();
+
+        var nextStatus = handler.thisPromise._status;
+        var nextValue = handler.thisPromise._value;
+
+        try {
+          if (nextStatus === STATUS_RESOLVED) {
+            if (typeof handler.onResolve === 'function') {
+              nextValue = handler.onResolve(nextValue);
+            }
+          } else if (typeof handler.onReject === 'function') {
+              nextValue = handler.onReject(nextValue);
+              nextStatus = STATUS_RESOLVED;
+
+              if (handler.thisPromise._unhandledRejection) {
+                this.removeUnhandeledRejection(handler.thisPromise);
+              }
+          }
+        } catch (ex) {
+          nextStatus = STATUS_REJECTED;
+          nextValue = ex;
+        }
+
+        handler.nextPromise._updateStatus(nextStatus, nextValue);
+        if (Date.now() >= timeoutAt) {
+          break;
+        }
+      }
+
+      if (this.handlers.length > 0) {
+        setTimeout(this.runHandlers.bind(this), 0);
+        return;
+      }
+
+      this.running = false;
+    },
+
+    addUnhandledRejection: function addUnhandledRejection(promise) {
+      this.unhandledRejections.push({
+        promise: promise,
+        time: Date.now()
+      });
+      this.scheduleRejectionCheck();
+    },
+
+    removeUnhandeledRejection: function removeUnhandeledRejection(promise) {
+      promise._unhandledRejection = false;
+      for (var i = 0; i < this.unhandledRejections.length; i++) {
+        if (this.unhandledRejections[i].promise === promise) {
+          this.unhandledRejections.splice(i);
+          i--;
+        }
+      }
+    },
+
+    scheduleRejectionCheck: function scheduleRejectionCheck() {
+      if (this.pendingRejectionCheck) {
+        return;
+      }
+      this.pendingRejectionCheck = true;
+      setTimeout(function rejectionCheck() {
+        this.pendingRejectionCheck = false;
+        var now = Date.now();
+        for (var i = 0; i < this.unhandledRejections.length; i++) {
+          if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {
+            var unhandled = this.unhandledRejections[i].promise._value;
+            var msg = 'Unhandled rejection: ' + unhandled;
+            if (unhandled.stack) {
+              msg += '\n' + unhandled.stack;
+            }
+            warn(msg);
+            this.unhandledRejections.splice(i);
+            i--;
+          }
+        }
+        if (this.unhandledRejections.length) {
+          this.scheduleRejectionCheck();
+        }
+      }.bind(this), REJECTION_TIMEOUT);
+    }
+  };
+
+  function Promise(resolver) {
+    this._status = STATUS_PENDING;
+    this._handlers = [];
+    try {
+      resolver.call(this, this._resolve.bind(this), this._reject.bind(this));
+    } catch (e) {
+      this._reject(e);
+    }
+  }
+  /**
+   * Builds a promise that is resolved when all the passed in promises are
+   * resolved.
+   * @param {array} array of data and/or promises to wait for.
+   * @return {Promise} New dependant promise.
+   */
+  Promise.all = function Promise_all(promises) {
+    var resolveAll, rejectAll;
+    var deferred = new Promise(function (resolve, reject) {
+      resolveAll = resolve;
+      rejectAll = reject;
+    });
+    var unresolved = promises.length;
+    var results = [];
+    if (unresolved === 0) {
+      resolveAll(results);
+      return deferred;
+    }
+    function reject(reason) {
+      if (deferred._status === STATUS_REJECTED) {
+        return;
+      }
+      results = [];
+      rejectAll(reason);
+    }
+    for (var i = 0, ii = promises.length; i < ii; ++i) {
+      var promise = promises[i];
+      var resolve = (function(i) {
+        return function(value) {
+          if (deferred._status === STATUS_REJECTED) {
+            return;
+          }
+          results[i] = value;
+          unresolved--;
+          if (unresolved === 0) {
+            resolveAll(results);
+          }
+        };
+      })(i);
+      if (Promise.isPromise(promise)) {
+        promise.then(resolve, reject);
+      } else {
+        resolve(promise);
+      }
+    }
+    return deferred;
+  };
+
+  /**
+   * Checks if the value is likely a promise (has a 'then' function).
+   * @return {boolean} true if value is thenable
+   */
+  Promise.isPromise = function Promise_isPromise(value) {
+    return value && typeof value.then === 'function';
+  };
+
+  /**
+   * Creates resolved promise
+   * @param value resolve value
+   * @returns {Promise}
+   */
+  Promise.resolve = function Promise_resolve(value) {
+    return new Promise(function (resolve) { resolve(value); });
+  };
+
+  /**
+   * Creates rejected promise
+   * @param reason rejection value
+   * @returns {Promise}
+   */
+  Promise.reject = function Promise_reject(reason) {
+    return new Promise(function (resolve, reject) { reject(reason); });
+  };
+
+  Promise.prototype = {
+    _status: null,
+    _value: null,
+    _handlers: null,
+    _unhandledRejection: null,
+
+    _updateStatus: function Promise__updateStatus(status, value) {
+      if (this._status === STATUS_RESOLVED ||
+          this._status === STATUS_REJECTED) {
+        return;
+      }
+
+      if (status === STATUS_RESOLVED &&
+          Promise.isPromise(value)) {
+        value.then(this._updateStatus.bind(this, STATUS_RESOLVED),
+                   this._updateStatus.bind(this, STATUS_REJECTED));
+        return;
+      }
+
+      this._status = status;
+      this._value = value;
+
+      if (status === STATUS_REJECTED && this._handlers.length === 0) {
+        this._unhandledRejection = true;
+        HandlerManager.addUnhandledRejection(this);
+      }
+
+      HandlerManager.scheduleHandlers(this);
+    },
+
+    _resolve: function Promise_resolve(value) {
+      this._updateStatus(STATUS_RESOLVED, value);
+    },
+
+    _reject: function Promise_reject(reason) {
+      this._updateStatus(STATUS_REJECTED, reason);
+    },
+
+    then: function Promise_then(onResolve, onReject) {
+      var nextPromise = new Promise(function (resolve, reject) {
+        this.resolve = resolve;
+        this.reject = reject;
+      });
+      this._handlers.push({
+        thisPromise: this,
+        onResolve: onResolve,
+        onReject: onReject,
+        nextPromise: nextPromise
+      });
+      HandlerManager.scheduleHandlers(this);
+      return nextPromise;
+    },
+
+    catch: function Promise_catch(onReject) {
+      return this.then(undefined, onReject);
+    }
+  };
+
+  globalScope.Promise = Promise;
+//#else
+//throw new Error('DOM Promise is not present');
+//#endif
+})();
+
+var StatTimer = (function StatTimerClosure() {
+  function rpad(str, pad, length) {
+    while (str.length < length) {
+      str += pad;
+    }
+    return str;
+  }
+  function StatTimer() {
+    this.started = {};
+    this.times = [];
+    this.enabled = true;
+  }
+  StatTimer.prototype = {
+    time: function StatTimer_time(name) {
+      if (!this.enabled) {
+        return;
+      }
+      if (name in this.started) {
+        warn('Timer is already running for ' + name);
+      }
+      this.started[name] = Date.now();
+    },
+    timeEnd: function StatTimer_timeEnd(name) {
+      if (!this.enabled) {
+        return;
+      }
+      if (!(name in this.started)) {
+        warn('Timer has not been started for ' + name);
+      }
+      this.times.push({
+        'name': name,
+        'start': this.started[name],
+        'end': Date.now()
+      });
+      // Remove timer from started so it can be called again.
+      delete this.started[name];
+    },
+    toString: function StatTimer_toString() {
+      var i, ii;
+      var times = this.times;
+      var out = '';
+      // Find the longest name for padding purposes.
+      var longest = 0;
+      for (i = 0, ii = times.length; i < ii; ++i) {
+        var name = times[i]['name'];
+        if (name.length > longest) {
+          longest = name.length;
+        }
+      }
+      for (i = 0, ii = times.length; i < ii; ++i) {
+        var span = times[i];
+        var duration = span.end - span.start;
+        out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n';
+      }
+      return out;
+    }
+  };
+  return StatTimer;
+})();
+
+PDFJS.createBlob = function createBlob(data, contentType) {
+  if (typeof Blob !== 'undefined') {
+    return new Blob([data], { type: contentType });
+  }
+  // Blob builder is deprecated in FF14 and removed in FF18.
+  var bb = new MozBlobBuilder();
+  bb.append(data);
+  return bb.getBlob(contentType);
+};
+
+PDFJS.createObjectURL = (function createObjectURLClosure() {
+  // Blob/createObjectURL is not available, falling back to data schema.
+  var digits =
+    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+
+  return function createObjectURL(data, contentType) {
+    if (!PDFJS.disableCreateObjectURL &&
+        typeof URL !== 'undefined' && URL.createObjectURL) {
+      var blob = PDFJS.createBlob(data, contentType);
+      return URL.createObjectURL(blob);
+    }
+
+    var buffer = 'data:' + contentType + ';base64,';
+    for (var i = 0, ii = data.length; i < ii; i += 3) {
+      var b1 = data[i] & 0xFF;
+      var b2 = data[i + 1] & 0xFF;
+      var b3 = data[i + 2] & 0xFF;
+      var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
+      var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
+      var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;
+      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+    }
+    return buffer;
+  };
+})();
+
+function MessageHandler(name, comObj) {
+  this.name = name;
+  this.comObj = comObj;
+  this.callbackIndex = 1;
+  this.postMessageTransfers = true;
+  var callbacksCapabilities = this.callbacksCapabilities = {};
+  var ah = this.actionHandler = {};
+
+  ah['console_log'] = [function ahConsoleLog(data) {
+    console.log.apply(console, data);
+  }];
+  ah['console_error'] = [function ahConsoleError(data) {
+    console.error.apply(console, data);
+  }];
+  ah['_unsupported_feature'] = [function ah_unsupportedFeature(data) {
+    UnsupportedManager.notify(data);
+  }];
+
+  comObj.onmessage = function messageHandlerComObjOnMessage(event) {
+    var data = event.data;
+    if (data.isReply) {
+      var callbackId = data.callbackId;
+      if (data.callbackId in callbacksCapabilities) {
+        var callback = callbacksCapabilities[callbackId];
+        delete callbacksCapabilities[callbackId];
+        if ('error' in data) {
+          callback.reject(data.error);
+        } else {
+          callback.resolve(data.data);
+        }
+      } else {
+        error('Cannot resolve callback ' + callbackId);
+      }
+    } else if (data.action in ah) {
+      var action = ah[data.action];
+      if (data.callbackId) {
+        Promise.resolve().then(function () {
+          return action[0].call(action[1], data.data);
+        }).then(function (result) {
+          comObj.postMessage({
+            isReply: true,
+            callbackId: data.callbackId,
+            data: result
+          });
+        }, function (reason) {
+          comObj.postMessage({
+            isReply: true,
+            callbackId: data.callbackId,
+            error: reason
+          });
+        });
+      } else {
+        action[0].call(action[1], data.data);
+      }
+    } else {
+      error('Unknown action from worker: ' + data.action);
+    }
+  };
+}
+
+MessageHandler.prototype = {
+  on: function messageHandlerOn(actionName, handler, scope) {
+    var ah = this.actionHandler;
+    if (ah[actionName]) {
+      error('There is already an actionName called "' + actionName + '"');
+    }
+    ah[actionName] = [handler, scope];
+  },
+  /**
+   * Sends a message to the comObj to invoke the action with the supplied data.
+   * @param {String} actionName Action to call.
+   * @param {JSON} data JSON data to send.
+   * @param {Array} [transfers] Optional list of transfers/ArrayBuffers
+   */
+  send: function messageHandlerSend(actionName, data, transfers) {
+    var message = {
+      action: actionName,
+      data: data
+    };
+    this.postMessage(message, transfers);
+  },
+  /**
+   * Sends a message to the comObj to invoke the action with the supplied data.
+   * Expects that other side will callback with the response.
+   * @param {String} actionName Action to call.
+   * @param {JSON} data JSON data to send.
+   * @param {Array} [transfers] Optional list of transfers/ArrayBuffers.
+   * @returns {Promise} Promise to be resolved with response data.
+   */
+  sendWithPromise:
+    function messageHandlerSendWithPromise(actionName, data, transfers) {
+    var callbackId = this.callbackIndex++;
+    var message = {
+      action: actionName,
+      data: data,
+      callbackId: callbackId
+    };
+    var capability = createPromiseCapability();
+    this.callbacksCapabilities[callbackId] = capability;
+    try {
+      this.postMessage(message, transfers);
+    } catch (e) {
+      capability.reject(e);
+    }
+    return capability.promise;
+  },
+  /**
+   * Sends raw message to the comObj.
+   * @private
+   * @param message {Object} Raw message.
+   * @param transfers List of transfers/ArrayBuffers, or undefined.
+   */
+  postMessage: function (message, transfers) {
+    if (transfers && this.postMessageTransfers) {
+      this.comObj.postMessage(message, transfers);
+    } else {
+      this.comObj.postMessage(message);
+    }
+  }
+};
+
+function loadJpegStream(id, imageUrl, objs) {
+  var img = new Image();
+  img.onload = (function loadJpegStream_onloadClosure() {
+    objs.resolve(id, img);
+  });
+  img.onerror = (function loadJpegStream_onerrorClosure() {
+    objs.resolve(id, null);
+    warn('Error during JPEG image loading');
+  });
+  img.src = imageUrl;
+}
+
+
+/**
+ * The maximum allowed image size in total pixels e.g. width * height. Images
+ * above this value will not be drawn. Use -1 for no limit.
+ * @var {number}
+ */
+PDFJS.maxImageSize = (PDFJS.maxImageSize === undefined ?
+                      -1 : PDFJS.maxImageSize);
+
+/**
+ * The url of where the predefined Adobe CMaps are located. Include trailing
+ * slash.
+ * @var {string}
+ */
+PDFJS.cMapUrl = (PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl);
+
+/**
+ * Specifies if CMaps are binary packed.
+ * @var {boolean}
+ */
+PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked;
+
+/**
+ * By default fonts are converted to OpenType fonts and loaded via font face
+ * rules. If disabled, the font will be rendered using a built in font renderer
+ * that constructs the glyphs with primitive path commands.
+ * @var {boolean}
+ */
+PDFJS.disableFontFace = (PDFJS.disableFontFace === undefined ?
+                         false : PDFJS.disableFontFace);
+
+/**
+ * Path for image resources, mainly for annotation icons. Include trailing
+ * slash.
+ * @var {string}
+ */
+PDFJS.imageResourcesPath = (PDFJS.imageResourcesPath === undefined ?
+                            '' : PDFJS.imageResourcesPath);
+
+/**
+ * Disable the web worker and run all code on the main thread. This will happen
+ * automatically if the browser doesn't support workers or sending typed arrays
+ * to workers.
+ * @var {boolean}
+ */
+PDFJS.disableWorker = (PDFJS.disableWorker === undefined ?
+                       false : PDFJS.disableWorker);
+
+/**
+ * Path and filename of the worker file. Required when the worker is enabled in
+ * development mode. If unspecified in the production build, the worker will be
+ * loaded based on the location of the pdf.js file.
+ * @var {string}
+ */
+PDFJS.workerSrc = (PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc);
+
+/**
+ * Disable range request loading of PDF files. When enabled and if the server
+ * supports partial content requests then the PDF will be fetched in chunks.
+ * Enabled (false) by default.
+ * @var {boolean}
+ */
+PDFJS.disableRange = (PDFJS.disableRange === undefined ?
+                      false : PDFJS.disableRange);
+
+/**
+ * Disable streaming of PDF file data. By default PDF.js attempts to load PDF
+ * in chunks. This default behavior can be disabled.
+ * @var {boolean}
+ */
+PDFJS.disableStream = (PDFJS.disableStream === undefined ?
+                       false : PDFJS.disableStream);
+
+/**
+ * Disable pre-fetching of PDF file data. When range requests are enabled PDF.js
+ * will automatically keep fetching more data even if it isn't needed to display
+ * the current page. This default behavior can be disabled.
+ *
+ * NOTE: It is also necessary to disable streaming, see above,
+ *       in order for disabling of pre-fetching to work correctly.
+ * @var {boolean}
+ */
+PDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ?
+                          false : PDFJS.disableAutoFetch);
+
+/**
+ * Enables special hooks for debugging PDF.js.
+ * @var {boolean}
+ */
+PDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug);
+
+/**
+ * Enables transfer usage in postMessage for ArrayBuffers.
+ * @var {boolean}
+ */
+PDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ?
+                              true : PDFJS.postMessageTransfers);
+
+/**
+ * Disables URL.createObjectURL usage.
+ * @var {boolean}
+ */
+PDFJS.disableCreateObjectURL = (PDFJS.disableCreateObjectURL === undefined ?
+                                false : PDFJS.disableCreateObjectURL);
+
+/**
+ * Disables WebGL usage.
+ * @var {boolean}
+ */
+PDFJS.disableWebGL = (PDFJS.disableWebGL === undefined ?
+                      true : PDFJS.disableWebGL);
+
+/**
+ * Disables fullscreen support, and by extension Presentation Mode,
+ * in browsers which support the fullscreen API.
+ * @var {boolean}
+ */
+PDFJS.disableFullscreen = (PDFJS.disableFullscreen === undefined ?
+                           false : PDFJS.disableFullscreen);
+
+/**
+ * Enables CSS only zooming.
+ * @var {boolean}
+ */
+PDFJS.useOnlyCssZoom = (PDFJS.useOnlyCssZoom === undefined ?
+                        false : PDFJS.useOnlyCssZoom);
+
+/**
+ * Controls the logging level.
+ * The constants from PDFJS.VERBOSITY_LEVELS should be used:
+ * - errors
+ * - warnings [default]
+ * - infos
+ * @var {number}
+ */
+PDFJS.verbosity = (PDFJS.verbosity === undefined ?
+                   PDFJS.VERBOSITY_LEVELS.warnings : PDFJS.verbosity);
+
+/**
+ * The maximum supported canvas size in total pixels e.g. width * height.
+ * The default value is 4096 * 4096. Use -1 for no limit.
+ * @var {number}
+ */
+PDFJS.maxCanvasPixels = (PDFJS.maxCanvasPixels === undefined ?
+                         16777216 : PDFJS.maxCanvasPixels);
+
+/**
+ * Opens external links in a new window if enabled. The default behavior opens
+ * external links in the PDF.js window.
+ * @var {boolean}
+ */
+PDFJS.openExternalLinksInNewWindow = (
+  PDFJS.openExternalLinksInNewWindow === undefined ?
+    false : PDFJS.openExternalLinksInNewWindow);
+
+/**
+ * Document initialization / loading parameters object.
+ *
+ * @typedef {Object} DocumentInitParameters
+ * @property {string}     url   - The URL of the PDF.
+ * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays
+ *   (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded,
+ *   use atob() to convert it to a binary string first.
+ * @property {Object}     httpHeaders - Basic authentication headers.
+ * @property {boolean}    withCredentials - Indicates whether or not cross-site
+ *   Access-Control requests should be made using credentials such as cookies
+ *   or authorization headers. The default is false.
+ * @property {string}     password - For decrypting password-protected PDFs.
+ * @property {TypedArray} initialData - A typed array with the first portion or
+ *   all of the pdf data. Used by the extension since some data is already
+ *   loaded before the switch to range requests.
+ * @property {number}     length - The PDF file length. It's used for progress
+ *   reports and range requests operations.
+ * @property {PDFDataRangeTransport} range
+ */
+
+/**
+ * @typedef {Object} PDFDocumentStats
+ * @property {Array} streamTypes - Used stream types in the document (an item
+ *   is set to true if specific stream ID was used in the document).
+ * @property {Array} fontTypes - Used font type in the document (an item is set
+ *   to true if specific font ID was used in the document).
+ */
+
+/**
+ * This is the main entry point for loading a PDF and interacting with it.
+ * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)
+ * is used, which means it must follow the same origin rules that any XHR does
+ * e.g. No cross domain requests without CORS.
+ *
+ * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src
+ * Can be a url to where a PDF is located, a typed array (Uint8Array)
+ * already populated with data or parameter object.
+ *
+ * @param {PDFDataRangeTransport} pdfDataRangeTransport (deprecated) It is used
+ * if you want to manually serve range requests for data in the PDF.
+ *
+ * @param {function} passwordCallback (deprecated) It is used to request a
+ * password if wrong or no password was provided. The callback receives two
+ * parameters: function that needs to be called with new password and reason
+ * (see {PasswordResponses}).
+ *
+ * @param {function} progressCallback (deprecated) It is used to be able to
+ * monitor the loading progress of the PDF file (necessary to implement e.g.
+ * a loading bar). The callback receives an {Object} with the properties:
+ * {number} loaded and {number} total.
+ *
+ * @return {PDFDocumentLoadingTask}
+ */
+PDFJS.getDocument = function getDocument(src,
+                                         pdfDataRangeTransport,
+                                         passwordCallback,
+                                         progressCallback) {
+  var task = new PDFDocumentLoadingTask();
+
+  // Support of the obsolete arguments (for compatibility with API v1.0)
+  if (pdfDataRangeTransport) {
+    if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) {
+      // Not a PDFDataRangeTransport instance, trying to add missing properties.
+      pdfDataRangeTransport = Object.create(pdfDataRangeTransport);
+      pdfDataRangeTransport.length = src.length;
+      pdfDataRangeTransport.initialData = src.initialData;
+    }
+    src = Object.create(src);
+    src.range = pdfDataRangeTransport;
+  }
+  task.onPassword = passwordCallback || null;
+  task.onProgress = progressCallback || null;
+
+  var workerInitializedCapability, transport;
+  var source;
+  if (typeof src === 'string') {
+    source = { url: src };
+  } else if (isArrayBuffer(src)) {
+    source = { data: src };
+  } else if (src instanceof PDFDataRangeTransport) {
+    source = { range: src };
+  } else {
+    if (typeof src !== 'object') {
+      error('Invalid parameter in getDocument, need either Uint8Array, ' +
+        'string or a parameter object');
+    }
+    if (!src.url && !src.data && !src.range) {
+      error('Invalid parameter object: need either .data, .range or .url');
+    }
+
+    source = src;
+  }
+
+  var params = {};
+  for (var key in source) {
+    if (key === 'url' && typeof window !== 'undefined') {
+      // The full path is required in the 'url' field.
+      params[key] = combineUrl(window.location.href, source[key]);
+      continue;
+    } else if (key === 'range') {
+      continue;
+    } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
+      // Converting string or array-like data to Uint8Array.
+      var pdfBytes = source[key];
+      if (typeof pdfBytes === 'string') {
+        params[key] = stringToBytes(pdfBytes);
+      } else if (typeof pdfBytes === 'object' && pdfBytes !== null &&
+                 !isNaN(pdfBytes.length)) {
+        params[key] = new Uint8Array(pdfBytes);
+      } else {
+        error('Invalid PDF binary data: either typed array, string or ' +
+              'array-like object is expected in the data property.');
+      }
+      continue;
+    }
+    params[key] = source[key];
+  }
+
+  workerInitializedCapability = createPromiseCapability();
+  transport = new WorkerTransport(workerInitializedCapability, source.range);
+  workerInitializedCapability.promise.then(function transportInitialized() {
+    transport.fetchDocument(task, params);
+  });
+
+  return task;
+};
+
+/**
+ * PDF document loading operation.
+ * @class
+ */
+var PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {
+  /** @constructs PDFDocumentLoadingTask */
+  function PDFDocumentLoadingTask() {
+    this._capability = createPromiseCapability();
+
+    /**
+     * Callback to request a password if wrong or no password was provided.
+     * The callback receives two parameters: function that needs to be called
+     * with new password and reason (see {PasswordResponses}).
+     */
+    this.onPassword = null;
+
+    /**
+     * Callback to be able to monitor the loading progress of the PDF file
+     * (necessary to implement e.g. a loading bar). The callback receives
+     * an {Object} with the properties: {number} loaded and {number} total.
+     */
+    this.onProgress = null;
+  }
+
+  PDFDocumentLoadingTask.prototype =
+      /** @lends PDFDocumentLoadingTask.prototype */ {
+    /**
+     * @return {Promise}
+     */
+    get promise() {
+      return this._capability.promise;
+    },
+
+    // TODO add cancel or abort method
+
+    /**
+     * Registers callbacks to indicate the document loading completion.
+     *
+     * @param {function} onFulfilled The callback for the loading completion.
+     * @param {function} onRejected The callback for the loading failure.
+     * @return {Promise} A promise that is resolved after the onFulfilled or
+     *                   onRejected callback.
+     */
+    then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {
+      return this.promise.then.apply(this.promise, arguments);
+    }
+  };
+
+  return PDFDocumentLoadingTask;
+})();
+
+/**
+ * Abstract class to support range requests file loading.
+ * @class
+ */
+var PDFDataRangeTransport = (function pdfDataRangeTransportClosure() {
+  /**
+   * @constructs PDFDataRangeTransport
+   * @param {number} length
+   * @param {Uint8Array} initialData
+   */
+  function PDFDataRangeTransport(length, initialData) {
+    this.length = length;
+    this.initialData = initialData;
+
+    this._rangeListeners = [];
+    this._progressListeners = [];
+    this._progressiveReadListeners = [];
+    this._readyCapability = createPromiseCapability();
+  }
+  PDFDataRangeTransport.prototype =
+      /** @lends PDFDataRangeTransport.prototype */ {
+    addRangeListener:
+        function PDFDataRangeTransport_addRangeListener(listener) {
+      this._rangeListeners.push(listener);
+    },
+
+    addProgressListener:
+        function PDFDataRangeTransport_addProgressListener(listener) {
+      this._progressListeners.push(listener);
+    },
+
+    addProgressiveReadListener:
+        function PDFDataRangeTransport_addProgressiveReadListener(listener) {
+      this._progressiveReadListeners.push(listener);
+    },
+
+    onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) {
+      var listeners = this._rangeListeners;
+      for (var i = 0, n = listeners.length; i < n; ++i) {
+        listeners[i](begin, chunk);
+      }
+    },
+
+    onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) {
+      this._readyCapability.promise.then(function () {
+        var listeners = this._progressListeners;
+        for (var i = 0, n = listeners.length; i < n; ++i) {
+          listeners[i](loaded);
+        }
+      }.bind(this));
+    },
+
+    onDataProgressiveRead:
+        function PDFDataRangeTransport_onDataProgress(chunk) {
+      this._readyCapability.promise.then(function () {
+        var listeners = this._progressiveReadListeners;
+        for (var i = 0, n = listeners.length; i < n; ++i) {
+          listeners[i](chunk);
+        }
+      }.bind(this));
+    },
+
+    transportReady: function PDFDataRangeTransport_transportReady() {
+      this._readyCapability.resolve();
+    },
+
+    requestDataRange:
+        function PDFDataRangeTransport_requestDataRange(begin, end) {
+      throw new Error('Abstract method PDFDataRangeTransport.requestDataRange');
+    }
+  };
+  return PDFDataRangeTransport;
+})();
+
+PDFJS.PDFDataRangeTransport = PDFDataRangeTransport;
+
+/**
+ * Proxy to a PDFDocument in the worker thread. Also, contains commonly used
+ * properties that can be read synchronously.
+ * @class
+ */
+var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
+  function PDFDocumentProxy(pdfInfo, transport) {
+    this.pdfInfo = pdfInfo;
+    this.transport = transport;
+  }
+  PDFDocumentProxy.prototype = /** @lends PDFDocumentProxy.prototype */ {
+    /**
+     * @return {number} Total number of pages the PDF contains.
+     */
+    get numPages() {
+      return this.pdfInfo.numPages;
+    },
+    /**
+     * @return {string} A unique ID to identify a PDF. Not guaranteed to be
+     * unique.
+     */
+    get fingerprint() {
+      return this.pdfInfo.fingerprint;
+    },
+    /**
+     * @param {number} pageNumber The page number to get. The first page is 1.
+     * @return {Promise} A promise that is resolved with a {@link PDFPageProxy}
+     * object.
+     */
+    getPage: function PDFDocumentProxy_getPage(pageNumber) {
+      return this.transport.getPage(pageNumber);
+    },
+    /**
+     * @param {{num: number, gen: number}} ref The page reference. Must have
+     *   the 'num' and 'gen' properties.
+     * @return {Promise} A promise that is resolved with the page index that is
+     * associated with the reference.
+     */
+    getPageIndex: function PDFDocumentProxy_getPageIndex(ref) {
+      return this.transport.getPageIndex(ref);
+    },
+    /**
+     * @return {Promise} A promise that is resolved with a lookup table for
+     * mapping named destinations to reference numbers.
+     *
+     * This can be slow for large documents: use getDestination instead
+     */
+    getDestinations: function PDFDocumentProxy_getDestinations() {
+      return this.transport.getDestinations();
+    },
+    /**
+     * @param {string} id The named destination to get.
+     * @return {Promise} A promise that is resolved with all information
+     * of the given named destination.
+     */
+    getDestination: function PDFDocumentProxy_getDestination(id) {
+      return this.transport.getDestination(id);
+    },
+    /**
+     * @return {Promise} A promise that is resolved with a lookup table for
+     * mapping named attachments to their content.
+     */
+    getAttachments: function PDFDocumentProxy_getAttachments() {
+      return this.transport.getAttachments();
+    },
+    /**
+     * @return {Promise} A promise that is resolved with an array of all the
+     * JavaScript strings in the name tree.
+     */
+    getJavaScript: function PDFDocumentProxy_getJavaScript() {
+      return this.transport.getJavaScript();
+    },
+    /**
+     * @return {Promise} A promise that is resolved with an {Array} that is a
+     * tree outline (if it has one) of the PDF. The tree is in the format of:
+     * [
+     *  {
+     *   title: string,
+     *   bold: boolean,
+     *   italic: boolean,
+     *   color: rgb array,
+     *   dest: dest obj,
+     *   items: array of more items like this
+     *  },
+     *  ...
+     * ].
+     */
+    getOutline: function PDFDocumentProxy_getOutline() {
+      return this.transport.getOutline();
+    },
+    /**
+     * @return {Promise} A promise that is resolved with an {Object} that has
+     * info and metadata properties.  Info is an {Object} filled with anything
+     * available in the information dictionary and similarly metadata is a
+     * {Metadata} object with information from the metadata section of the PDF.
+     */
+    getMetadata: function PDFDocumentProxy_getMetadata() {
+      return this.transport.getMetadata();
+    },
+    /**
+     * @return {Promise} A promise that is resolved with a TypedArray that has
+     * the raw data from the PDF.
+     */
+    getData: function PDFDocumentProxy_getData() {
+      return this.transport.getData();
+    },
+    /**
+     * @return {Promise} A promise that is resolved when the document's data
+     * is loaded. It is resolved with an {Object} that contains the length
+     * property that indicates size of the PDF data in bytes.
+     */
+    getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {
+      return this.transport.downloadInfoCapability.promise;
+    },
+    /**
+     * @return {Promise} A promise this is resolved with current stats about
+     * document structures (see {@link PDFDocumentStats}).
+     */
+    getStats: function PDFDocumentProxy_getStats() {
+      return this.transport.getStats();
+    },
+    /**
+     * Cleans up resources allocated by the document, e.g. created @font-face.
+     */
+    cleanup: function PDFDocumentProxy_cleanup() {
+      this.transport.startCleanup();
+    },
+    /**
+     * Destroys current document instance and terminates worker.
+     */
+    destroy: function PDFDocumentProxy_destroy() {
+      this.transport.destroy();
+    }
+  };
+  return PDFDocumentProxy;
+})();
+
+/**
+ * Page text content.
+ *
+ * @typedef {Object} TextContent
+ * @property {array} items - array of {@link TextItem}
+ * @property {Object} styles - {@link TextStyles} objects, indexed by font
+ *                    name.
+ */
+
+/**
+ * Page text content part.
+ *
+ * @typedef {Object} TextItem
+ * @property {string} str - text content.
+ * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'.
+ * @property {array} transform - transformation matrix.
+ * @property {number} width - width in device space.
+ * @property {number} height - height in device space.
+ * @property {string} fontName - font name used by pdf.js for converted font.
+ */
+
+/**
+ * Text style.
+ *
+ * @typedef {Object} TextStyle
+ * @property {number} ascent - font ascent.
+ * @property {number} descent - font descent.
+ * @property {boolean} vertical - text is in vertical mode.
+ * @property {string} fontFamily - possible font family
+ */
+
+/**
+ * Page render parameters.
+ *
+ * @typedef {Object} RenderParameters
+ * @property {Object} canvasContext - A 2D context of a DOM Canvas object.
+ * @property {PDFJS.PageViewport} viewport - Rendering viewport obtained by
+ *                                calling of PDFPage.getViewport method.
+ * @property {string} intent - Rendering intent, can be 'display' or 'print'
+ *                    (default value is 'display').
+ * @property {Object} imageLayer - (optional) An object that has beginLayout,
+ *                    endLayout and appendImage functions.
+ * @property {function} continueCallback - (deprecated) A function that will be
+ *                      called each time the rendering is paused.  To continue
+ *                      rendering call the function that is the first argument
+ *                      to the callback.
+ */
+
+/**
+ * PDF page operator list.
+ *
+ * @typedef {Object} PDFOperatorList
+ * @property {Array} fnArray - Array containing the operator functions.
+ * @property {Array} argsArray - Array containing the arguments of the
+ *                               functions.
+ */
+
+/**
+ * Proxy to a PDFPage in the worker thread.
+ * @class
+ */
+var PDFPageProxy = (function PDFPageProxyClosure() {
+  function PDFPageProxy(pageIndex, pageInfo, transport) {
+    this.pageIndex = pageIndex;
+    this.pageInfo = pageInfo;
+    this.transport = transport;
+    this.stats = new StatTimer();
+    this.stats.enabled = !!globalScope.PDFJS.enableStats;
+    this.commonObjs = transport.commonObjs;
+    this.objs = new PDFObjects();
+    this.cleanupAfterRender = false;
+    this.pendingDestroy = false;
+    this.intentStates = {};
+  }
+  PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ {
+    /**
+     * @return {number} Page number of the page. First page is 1.
+     */
+    get pageNumber() {
+      return this.pageIndex + 1;
+    },
+    /**
+     * @return {number} The number of degrees the page is rotated clockwise.
+     */
+    get rotate() {
+      return this.pageInfo.rotate;
+    },
+    /**
+     * @return {Object} The reference that points to this page. It has 'num' and
+     * 'gen' properties.
+     */
+    get ref() {
+      return this.pageInfo.ref;
+    },
+    /**
+     * @return {Array} An array of the visible portion of the PDF page in the
+     * user space units - [x1, y1, x2, y2].
+     */
+    get view() {
+      return this.pageInfo.view;
+    },
+    /**
+     * @param {number} scale The desired scale of the viewport.
+     * @param {number} rotate Degrees to rotate the viewport. If omitted this
+     * defaults to the page rotation.
+     * @return {PDFJS.PageViewport} Contains 'width' and 'height' properties
+     * along with transforms required for rendering.
+     */
+    getViewport: function PDFPageProxy_getViewport(scale, rotate) {
+      if (arguments.length < 2) {
+        rotate = this.rotate;
+      }
+      return new PDFJS.PageViewport(this.view, scale, rotate, 0, 0);
+    },
+    /**
+     * @return {Promise} A promise that is resolved with an {Array} of the
+     * annotation objects.
+     */
+    getAnnotations: function PDFPageProxy_getAnnotations() {
+      if (this.annotationsPromise) {
+        return this.annotationsPromise;
+      }
+
+      var promise = this.transport.getAnnotations(this.pageIndex);
+      this.annotationsPromise = promise;
+      return promise;
+    },
+    /**
+     * Begins the process of rendering a page to the desired context.
+     * @param {RenderParameters} params Page render parameters.
+     * @return {RenderTask} An object that contains the promise, which
+     *                      is resolved when the page finishes rendering.
+     */
+    render: function PDFPageProxy_render(params) {
+      var stats = this.stats;
+      stats.time('Overall');
+
+      // If there was a pending destroy cancel it so no cleanup happens during
+      // this call to render.
+      this.pendingDestroy = false;
+
+      var renderingIntent = (params.intent === 'print' ? 'print' : 'display');
+
+      if (!this.intentStates[renderingIntent]) {
+        this.intentStates[renderingIntent] = {};
+      }
+      var intentState = this.intentStates[renderingIntent];
+
+      // If there's no displayReadyCapability yet, then the operatorList
+      // was never requested before. Make the request and create the promise.
+      if (!intentState.displayReadyCapability) {
+        intentState.receivingOperatorList = true;
+        intentState.displayReadyCapability = createPromiseCapability();
+        intentState.operatorList = {
+          fnArray: [],
+          argsArray: [],
+          lastChunk: false
+        };
+
+        this.stats.time('Page Request');
+        this.transport.messageHandler.send('RenderPageRequest', {
+          pageIndex: this.pageNumber - 1,
+          intent: renderingIntent
+        });
+      }
+
+      var internalRenderTask = new InternalRenderTask(complete, params,
+                                                      this.objs,
+                                                      this.commonObjs,
+                                                      intentState.operatorList,
+                                                      this.pageNumber);
+      if (!intentState.renderTasks) {
+        intentState.renderTasks = [];
+      }
+      intentState.renderTasks.push(internalRenderTask);
+      var renderTask = internalRenderTask.task;
+
+      // Obsolete parameter support
+      if (params.continueCallback) {
+        renderTask.onContinue = params.continueCallback;
+      }
+
+      var self = this;
+      intentState.displayReadyCapability.promise.then(
+        function pageDisplayReadyPromise(transparency) {
+          if (self.pendingDestroy) {
+            complete();
+            return;
+          }
+          stats.time('Rendering');
+          internalRenderTask.initalizeGraphics(transparency);
+          internalRenderTask.operatorListChanged();
+        },
+        function pageDisplayReadPromiseError(reason) {
+          complete(reason);
+        }
+      );
+
+      function complete(error) {
+        var i = intentState.renderTasks.indexOf(internalRenderTask);
+        if (i >= 0) {
+          intentState.renderTasks.splice(i, 1);
+        }
+
+        if (self.cleanupAfterRender) {
+          self.pendingDestroy = true;
+        }
+        self._tryDestroy();
+
+        if (error) {
+          internalRenderTask.capability.reject(error);
+        } else {
+          internalRenderTask.capability.resolve();
+        }
+        stats.timeEnd('Rendering');
+        stats.timeEnd('Overall');
+      }
+
+      return renderTask;
+    },
+
+    /**
+     * @return {Promise} A promise resolved with an {@link PDFOperatorList}
+     * object that represents page's operator list.
+     */
+    getOperatorList: function PDFPageProxy_getOperatorList() {
+      function operatorListChanged() {
+        if (intentState.operatorList.lastChunk) {
+          intentState.opListReadCapability.resolve(intentState.operatorList);
+        }
+      }
+
+      var renderingIntent = 'oplist';
+      if (!this.intentStates[renderingIntent]) {
+        this.intentStates[renderingIntent] = {};
+      }
+      var intentState = this.intentStates[renderingIntent];
+
+      if (!intentState.opListReadCapability) {
+        var opListTask = {};
+        opListTask.operatorListChanged = operatorListChanged;
+        intentState.receivingOperatorList = true;
+        intentState.opListReadCapability = createPromiseCapability();
+        intentState.renderTasks = [];
+        intentState.renderTasks.push(opListTask);
+        intentState.operatorList = {
+          fnArray: [],
+          argsArray: [],
+          lastChunk: false
+        };
+
+        this.transport.messageHandler.send('RenderPageRequest', {
+          pageIndex: this.pageIndex,
+          intent: renderingIntent
+        });
+      }
+      return intentState.opListReadCapability.promise;
+    },
+
+    /**
+     * @return {Promise} That is resolved a {@link TextContent}
+     * object that represent the page text content.
+     */
+    getTextContent: function PDFPageProxy_getTextContent() {
+      return this.transport.messageHandler.sendWithPromise('GetTextContent', {
+        pageIndex: this.pageNumber - 1
+      });
+    },
+    /**
+     * Destroys resources allocated by the page.
+     */
+    destroy: function PDFPageProxy_destroy() {
+      this.pendingDestroy = true;
+      this._tryDestroy();
+    },
+    /**
+     * For internal use only. Attempts to clean up if rendering is in a state
+     * where that's possible.
+     * @ignore
+     */
+    _tryDestroy: function PDFPageProxy__destroy() {
+      if (!this.pendingDestroy ||
+          Object.keys(this.intentStates).some(function(intent) {
+            var intentState = this.intentStates[intent];
+            return (intentState.renderTasks.length !== 0 ||
+                    intentState.receivingOperatorList);
+          }, this)) {
+        return;
+      }
+
+      Object.keys(this.intentStates).forEach(function(intent) {
+        delete this.intentStates[intent];
+      }, this);
+      this.objs.clear();
+      this.annotationsPromise = null;
+      this.pendingDestroy = false;
+    },
+    /**
+     * For internal use only.
+     * @ignore
+     */
+    _startRenderPage: function PDFPageProxy_startRenderPage(transparency,
+                                                            intent) {
+      var intentState = this.intentStates[intent];
+      // TODO Refactor RenderPageRequest to separate rendering
+      // and operator list logic
+      if (intentState.displayReadyCapability) {
+        intentState.displayReadyCapability.resolve(transparency);
+      }
+    },
+    /**
+     * For internal use only.
+     * @ignore
+     */
+    _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk,
+                                                            intent) {
+      var intentState = this.intentStates[intent];
+      var i, ii;
+      // Add the new chunk to the current operator list.
+      for (i = 0, ii = operatorListChunk.length; i < ii; i++) {
+        intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
+        intentState.operatorList.argsArray.push(
+          operatorListChunk.argsArray[i]);
+      }
+      intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
+
+      // Notify all the rendering tasks there are more operators to be consumed.
+      for (i = 0; i < intentState.renderTasks.length; i++) {
+        intentState.renderTasks[i].operatorListChanged();
+      }
+
+      if (operatorListChunk.lastChunk) {
+        intentState.receivingOperatorList = false;
+        this._tryDestroy();
+      }
+    }
+  };
+  return PDFPageProxy;
+})();
+
+/**
+ * For internal use only.
+ * @ignore
+ */
+var WorkerTransport = (function WorkerTransportClosure() {
+  function WorkerTransport(workerInitializedCapability, pdfDataRangeTransport) {
+    this.pdfDataRangeTransport = pdfDataRangeTransport;
+    this.workerInitializedCapability = workerInitializedCapability;
+    this.commonObjs = new PDFObjects();
+
+    this.loadingTask = null;
+
+    this.pageCache = [];
+    this.pagePromises = [];
+    this.downloadInfoCapability = createPromiseCapability();
+
+    // If worker support isn't disabled explicit and the browser has worker
+    // support, create a new web worker and test if it/the browser fullfills
+    // all requirements to run parts of pdf.js in a web worker.
+    // Right now, the requirement is, that an Uint8Array is still an Uint8Array
+    // as it arrives on the worker. Chrome added this with version 15.
+//#if !SINGLE_FILE
+    if (!globalScope.PDFJS.disableWorker && typeof Worker !== 'undefined') {
+      var workerSrc = PDFJS.workerSrc;
+      if (!workerSrc) {
+        error('No PDFJS.workerSrc specified');
+      }
+
+      try {
+        // Some versions of FF can't create a worker on localhost, see:
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=683280
+        var worker = new Worker(workerSrc);
+        var messageHandler = new MessageHandler('main', worker);
+        this.messageHandler = messageHandler;
+
+        messageHandler.on('test', function transportTest(data) {
+          var supportTypedArray = data && data.supportTypedArray;
+          if (supportTypedArray) {
+            this.worker = worker;
+            if (!data.supportTransfers) {
+              PDFJS.postMessageTransfers = false;
+            }
+            this.setupMessageHandler(messageHandler);
+            workerInitializedCapability.resolve();
+          } else {
+            this.setupFakeWorker();
+          }
+        }.bind(this));
+
+        var testObj = new Uint8Array([PDFJS.postMessageTransfers ? 255 : 0]);
+        // Some versions of Opera throw a DATA_CLONE_ERR on serializing the
+        // typed array. Also, checking if we can use transfers.
+        try {
+          messageHandler.send('test', testObj, [testObj.buffer]);
+        } catch (ex) {
+          info('Cannot use postMessage transfers');
+          testObj[0] = 0;
+          messageHandler.send('test', testObj);
+        }
+        return;
+      } catch (e) {
+        info('The worker has been disabled.');
+      }
+    }
+//#endif
+    // Either workers are disabled, not supported or have thrown an exception.
+    // Thus, we fallback to a faked worker.
+    this.setupFakeWorker();
+  }
+  WorkerTransport.prototype = {
+    destroy: function WorkerTransport_destroy() {
+      this.pageCache = [];
+      this.pagePromises = [];
+      var self = this;
+      this.messageHandler.sendWithPromise('Terminate', null).then(function () {
+        FontLoader.clear();
+        if (self.worker) {
+          self.worker.terminate();
+        }
+      });
+    },
+
+    setupFakeWorker: function WorkerTransport_setupFakeWorker() {
+      globalScope.PDFJS.disableWorker = true;
+
+      if (!PDFJS.fakeWorkerFilesLoadedCapability) {
+        PDFJS.fakeWorkerFilesLoadedCapability = createPromiseCapability();
+        // In the developer build load worker_loader which in turn loads all the
+        // other files and resolves the promise. In production only the
+        // pdf.worker.js file is needed.
+//#if !PRODUCTION
+        Util.loadScript(PDFJS.workerSrc);
+//#endif
+//#if PRODUCTION && SINGLE_FILE
+//      PDFJS.fakeWorkerFilesLoadedCapability.resolve();
+//#endif
+//#if PRODUCTION && !SINGLE_FILE
+//      Util.loadScript(PDFJS.workerSrc, function() {
+//        PDFJS.fakeWorkerFilesLoadedCapability.resolve();
+//      });
+//#endif
+      }
+      PDFJS.fakeWorkerFilesLoadedCapability.promise.then(function () {
+        warn('Setting up fake worker.');
+        // If we don't use a worker, just post/sendMessage to the main thread.
+        var fakeWorker = {
+          postMessage: function WorkerTransport_postMessage(obj) {
+            fakeWorker.onmessage({data: obj});
+          },
+          terminate: function WorkerTransport_terminate() {}
+        };
+
+        var messageHandler = new MessageHandler('main', fakeWorker);
+        this.setupMessageHandler(messageHandler);
+
+        // If the main thread is our worker, setup the handling for the messages
+        // the main thread sends to it self.
+        PDFJS.WorkerMessageHandler.setup(messageHandler);
+
+        this.workerInitializedCapability.resolve();
+      }.bind(this));
+    },
+
+    setupMessageHandler:
+      function WorkerTransport_setupMessageHandler(messageHandler) {
+      this.messageHandler = messageHandler;
+
+      function updatePassword(password) {
+        messageHandler.send('UpdatePassword', password);
+      }
+
+      var pdfDataRangeTransport = this.pdfDataRangeTransport;
+      if (pdfDataRangeTransport) {
+        pdfDataRangeTransport.addRangeListener(function(begin, chunk) {
+          messageHandler.send('OnDataRange', {
+            begin: begin,
+            chunk: chunk
+          });
+        });
+
+        pdfDataRangeTransport.addProgressListener(function(loaded) {
+          messageHandler.send('OnDataProgress', {
+            loaded: loaded
+          });
+        });
+
+        pdfDataRangeTransport.addProgressiveReadListener(function(chunk) {
+          messageHandler.send('OnDataRange', {
+            chunk: chunk
+          });
+        });
+
+        messageHandler.on('RequestDataRange',
+          function transportDataRange(data) {
+            pdfDataRangeTransport.requestDataRange(data.begin, data.end);
+          }, this);
+      }
+
+      messageHandler.on('GetDoc', function transportDoc(data) {
+        var pdfInfo = data.pdfInfo;
+        this.numPages = data.pdfInfo.numPages;
+        var pdfDocument = new PDFDocumentProxy(pdfInfo, this);
+        this.pdfDocument = pdfDocument;
+        this.loadingTask._capability.resolve(pdfDocument);
+      }, this);
+
+      messageHandler.on('NeedPassword',
+                        function transportNeedPassword(exception) {
+        var loadingTask = this.loadingTask;
+        if (loadingTask.onPassword) {
+          return loadingTask.onPassword(updatePassword,
+                                        PasswordResponses.NEED_PASSWORD);
+        }
+        loadingTask._capability.reject(
+          new PasswordException(exception.message, exception.code));
+      }, this);
+
+      messageHandler.on('IncorrectPassword',
+                        function transportIncorrectPassword(exception) {
+        var loadingTask = this.loadingTask;
+        if (loadingTask.onPassword) {
+          return loadingTask.onPassword(updatePassword,
+                                        PasswordResponses.INCORRECT_PASSWORD);
+        }
+        loadingTask._capability.reject(
+          new PasswordException(exception.message, exception.code));
+      }, this);
+
+      messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) {
+        this.loadingTask._capability.reject(
+          new InvalidPDFException(exception.message));
+      }, this);
+
+      messageHandler.on('MissingPDF', function transportMissingPDF(exception) {
+        this.loadingTask._capability.reject(
+          new MissingPDFException(exception.message));
+      }, this);
+
+      messageHandler.on('UnexpectedResponse',
+                        function transportUnexpectedResponse(exception) {
+        this.loadingTask._capability.reject(
+          new UnexpectedResponseException(exception.message, exception.status));
+      }, this);
+
+      messageHandler.on('UnknownError',
+                        function transportUnknownError(exception) {
+        this.loadingTask._capability.reject(
+          new UnknownErrorException(exception.message, exception.details));
+      }, this);
+
+      messageHandler.on('DataLoaded', function transportPage(data) {
+        this.downloadInfoCapability.resolve(data);
+      }, this);
+
+      messageHandler.on('PDFManagerReady', function transportPage(data) {
+        if (this.pdfDataRangeTransport) {
+          this.pdfDataRangeTransport.transportReady();
+        }
+      }, this);
+
+      messageHandler.on('StartRenderPage', function transportRender(data) {
+        var page = this.pageCache[data.pageIndex];
+
+        page.stats.timeEnd('Page Request');
+        page._startRenderPage(data.transparency, data.intent);
+      }, this);
+
+      messageHandler.on('RenderPageChunk', function transportRender(data) {
+        var page = this.pageCache[data.pageIndex];
+
+        page._renderPageChunk(data.operatorList, data.intent);
+      }, this);
+
+      messageHandler.on('commonobj', function transportObj(data) {
+        var id = data[0];
+        var type = data[1];
+        if (this.commonObjs.hasData(id)) {
+          return;
+        }
+
+        switch (type) {
+          case 'Font':
+            var exportedData = data[2];
+
+            var font;
+            if ('error' in exportedData) {
+              var error = exportedData.error;
+              warn('Error during font loading: ' + error);
+              this.commonObjs.resolve(id, error);
+              break;
+            } else {
+              font = new FontFaceObject(exportedData);
+            }
+
+            FontLoader.bind(
+              [font],
+              function fontReady(fontObjs) {
+                this.commonObjs.resolve(id, font);
+              }.bind(this)
+            );
+            break;
+          case 'FontPath':
+            this.commonObjs.resolve(id, data[2]);
+            break;
+          default:
+            error('Got unknown common object type ' + type);
+        }
+      }, this);
+
+      messageHandler.on('obj', function transportObj(data) {
+        var id = data[0];
+        var pageIndex = data[1];
+        var type = data[2];
+        var pageProxy = this.pageCache[pageIndex];
+        var imageData;
+        if (pageProxy.objs.hasData(id)) {
+          return;
+        }
+
+        switch (type) {
+          case 'JpegStream':
+            imageData = data[3];
+            loadJpegStream(id, imageData, pageProxy.objs);
+            break;
+          case 'Image':
+            imageData = data[3];
+            pageProxy.objs.resolve(id, imageData);
+
+            // heuristics that will allow not to store large data
+            var MAX_IMAGE_SIZE_TO_STORE = 8000000;
+            if (imageData && 'data' in imageData &&
+                imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
+              pageProxy.cleanupAfterRender = true;
+            }
+            break;
+          default:
+            error('Got unknown object type ' + type);
+        }
+      }, this);
+
+      messageHandler.on('DocProgress', function transportDocProgress(data) {
+        var loadingTask = this.loadingTask;
+        if (loadingTask.onProgress) {
+          loadingTask.onProgress({
+            loaded: data.loaded,
+            total: data.total
+          });
+        }
+      }, this);
+
+      messageHandler.on('PageError', function transportError(data) {
+        var page = this.pageCache[data.pageNum - 1];
+        var intentState = page.intentStates[data.intent];
+        if (intentState.displayReadyCapability) {
+          intentState.displayReadyCapability.reject(data.error);
+        } else {
+          error(data.error);
+        }
+      }, this);
+
+      messageHandler.on('JpegDecode', function(data) {
+        var imageUrl = data[0];
+        var components = data[1];
+        if (components !== 3 && components !== 1) {
+          return Promise.reject(
+            new Error('Only 3 components or 1 component can be returned'));
+        }
+
+        return new Promise(function (resolve, reject) {
+          var img = new Image();
+          img.onload = function () {
+            var width = img.width;
+            var height = img.height;
+            var size = width * height;
+            var rgbaLength = size * 4;
+            var buf = new Uint8Array(size * components);
+            var tmpCanvas = createScratchCanvas(width, height);
+            var tmpCtx = tmpCanvas.getContext('2d');
+            tmpCtx.drawImage(img, 0, 0);
+            var data = tmpCtx.getImageData(0, 0, width, height).data;
+            var i, j;
+
+            if (components === 3) {
+              for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
+                buf[j] = data[i];
+                buf[j + 1] = data[i + 1];
+                buf[j + 2] = data[i + 2];
+              }
+            } else if (components === 1) {
+              for (i = 0, j = 0; i < rgbaLength; i += 4, j++) {
+                buf[j] = data[i];
+              }
+            }
+            resolve({ data: buf, width: width, height: height});
+          };
+          img.onerror = function () {
+            reject(new Error('JpegDecode failed to load image'));
+          };
+          img.src = imageUrl;
+        });
+      });
+    },
+
+    fetchDocument: function WorkerTransport_fetchDocument(loadingTask, source) {
+      this.loadingTask = loadingTask;
+
+      source.disableAutoFetch = PDFJS.disableAutoFetch;
+      source.disableStream = PDFJS.disableStream;
+      source.chunkedViewerLoading = !!this.pdfDataRangeTransport;
+      if (this.pdfDataRangeTransport) {
+        source.length = this.pdfDataRangeTransport.length;
+        source.initialData = this.pdfDataRangeTransport.initialData;
+      }
+      this.messageHandler.send('GetDocRequest', {
+        source: source,
+        disableRange: PDFJS.disableRange,
+        maxImageSize: PDFJS.maxImageSize,
+        cMapUrl: PDFJS.cMapUrl,
+        cMapPacked: PDFJS.cMapPacked,
+        disableFontFace: PDFJS.disableFontFace,
+        disableCreateObjectURL: PDFJS.disableCreateObjectURL,
+        verbosity: PDFJS.verbosity
+      });
+    },
+
+    getData: function WorkerTransport_getData() {
+      return this.messageHandler.sendWithPromise('GetData', null);
+    },
+
+    getPage: function WorkerTransport_getPage(pageNumber, capability) {
+      if (pageNumber <= 0 || pageNumber > this.numPages ||
+          (pageNumber|0) !== pageNumber) {
+        return Promise.reject(new Error('Invalid page request'));
+      }
+
+      var pageIndex = pageNumber - 1;
+      if (pageIndex in this.pagePromises) {
+        return this.pagePromises[pageIndex];
+      }
+      var promise = this.messageHandler.sendWithPromise('GetPage', {
+        pageIndex: pageIndex
+      }).then(function (pageInfo) {
+        var page = new PDFPageProxy(pageIndex, pageInfo, this);
+        this.pageCache[pageIndex] = page;
+        return page;
+      }.bind(this));
+      this.pagePromises[pageIndex] = promise;
+      return promise;
+    },
+
+    getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {
+      return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref });
+    },
+
+    getAnnotations: function WorkerTransport_getAnnotations(pageIndex) {
+      return this.messageHandler.sendWithPromise('GetAnnotations',
+        { pageIndex: pageIndex });
+    },
+
+    getDestinations: function WorkerTransport_getDestinations() {
+      return this.messageHandler.sendWithPromise('GetDestinations', null);
+    },
+
+    getDestination: function WorkerTransport_getDestination(id) {
+      return this.messageHandler.sendWithPromise('GetDestination', { id: id } );
+    },
+
+    getAttachments: function WorkerTransport_getAttachments() {
+      return this.messageHandler.sendWithPromise('GetAttachments', null);
+    },
+
+    getJavaScript: function WorkerTransport_getJavaScript() {
+      return this.messageHandler.sendWithPromise('GetJavaScript', null);
+    },
+
+    getOutline: function WorkerTransport_getOutline() {
+      return this.messageHandler.sendWithPromise('GetOutline', null);
+    },
+
+    getMetadata: function WorkerTransport_getMetadata() {
+      return this.messageHandler.sendWithPromise('GetMetadata', null).
+        then(function transportMetadata(results) {
+        return {
+          info: results[0],
+          metadata: (results[1] ? new PDFJS.Metadata(results[1]) : null)
+        };
+      });
+    },
+
+    getStats: function WorkerTransport_getStats() {
+      return this.messageHandler.sendWithPromise('GetStats', null);
+    },
+
+    startCleanup: function WorkerTransport_startCleanup() {
+      this.messageHandler.sendWithPromise('Cleanup', null).
+        then(function endCleanup() {
+        for (var i = 0, ii = this.pageCache.length; i < ii; i++) {
+          var page = this.pageCache[i];
+          if (page) {
+            page.destroy();
+          }
+        }
+        this.commonObjs.clear();
+        FontLoader.clear();
+      }.bind(this));
+    }
+  };
+  return WorkerTransport;
+
+})();
+
+/**
+ * A PDF document and page is built of many objects. E.g. there are objects
+ * for fonts, images, rendering code and such. These objects might get processed
+ * inside of a worker. The `PDFObjects` implements some basic functions to
+ * manage these objects.
+ * @ignore
+ */
+var PDFObjects = (function PDFObjectsClosure() {
+  function PDFObjects() {
+    this.objs = {};
+  }
+
+  PDFObjects.prototype = {
+    /**
+     * Internal function.
+     * Ensures there is an object defined for `objId`.
+     */
+    ensureObj: function PDFObjects_ensureObj(objId) {
+      if (this.objs[objId]) {
+        return this.objs[objId];
+      }
+
+      var obj = {
+        capability: createPromiseCapability(),
+        data: null,
+        resolved: false
+      };
+      this.objs[objId] = obj;
+
+      return obj;
+    },
+
+    /**
+     * If called *without* callback, this returns the data of `objId` but the
+     * object needs to be resolved. If it isn't, this function throws.
+     *
+     * If called *with* a callback, the callback is called with the data of the
+     * object once the object is resolved. That means, if you call this
+     * function and the object is already resolved, the callback gets called
+     * right away.
+     */
+    get: function PDFObjects_get(objId, callback) {
+      // If there is a callback, then the get can be async and the object is
+      // not required to be resolved right now
+      if (callback) {
+        this.ensureObj(objId).capability.promise.then(callback);
+        return null;
+      }
+
+      // If there isn't a callback, the user expects to get the resolved data
+      // directly.
+      var obj = this.objs[objId];
+
+      // If there isn't an object yet or the object isn't resolved, then the
+      // data isn't ready yet!
+      if (!obj || !obj.resolved) {
+        error('Requesting object that isn\'t resolved yet ' + objId);
+      }
+
+      return obj.data;
+    },
+
+    /**
+     * Resolves the object `objId` with optional `data`.
+     */
+    resolve: function PDFObjects_resolve(objId, data) {
+      var obj = this.ensureObj(objId);
+
+      obj.resolved = true;
+      obj.data = data;
+      obj.capability.resolve(data);
+    },
+
+    isResolved: function PDFObjects_isResolved(objId) {
+      var objs = this.objs;
+
+      if (!objs[objId]) {
+        return false;
+      } else {
+        return objs[objId].resolved;
+      }
+    },
+
+    hasData: function PDFObjects_hasData(objId) {
+      return this.isResolved(objId);
+    },
+
+    /**
+     * Returns the data of `objId` if object exists, null otherwise.
+     */
+    getData: function PDFObjects_getData(objId) {
+      var objs = this.objs;
+      if (!objs[objId] || !objs[objId].resolved) {
+        return null;
+      } else {
+        return objs[objId].data;
+      }
+    },
+
+    clear: function PDFObjects_clear() {
+      this.objs = {};
+    }
+  };
+  return PDFObjects;
+})();
+
+/**
+ * Allows controlling of the rendering tasks.
+ * @class
+ */
+var RenderTask = (function RenderTaskClosure() {
+  function RenderTask(internalRenderTask) {
+    this._internalRenderTask = internalRenderTask;
+
+    /**
+     * Callback for incremental rendering -- a function that will be called
+     * each time the rendering is paused.  To continue rendering call the
+     * function that is the first argument to the callback.
+     * @type {function}
+     */
+    this.onContinue = null;
+  }
+
+  RenderTask.prototype = /** @lends RenderTask.prototype */ {
+    /**
+     * Promise for rendering task completion.
+     * @return {Promise}
+     */
+    get promise() {
+      return this._internalRenderTask.capability.promise;
+    },
+
+    /**
+     * Cancels the rendering task. If the task is currently rendering it will
+     * not be cancelled until graphics pauses with a timeout. The promise that
+     * this object extends will resolved when cancelled.
+     */
+    cancel: function RenderTask_cancel() {
+      this._internalRenderTask.cancel();
+    },
+
+    /**
+     * Registers callbacks to indicate the rendering task completion.
+     *
+     * @param {function} onFulfilled The callback for the rendering completion.
+     * @param {function} onRejected The callback for the rendering failure.
+     * @return {Promise} A promise that is resolved after the onFulfilled or
+     *                   onRejected callback.
+     */
+    then: function RenderTask_then(onFulfilled, onRejected) {
+      return this.promise.then.apply(this.promise, arguments);
+    }
+  };
+
+  return RenderTask;
+})();
+
+/**
+ * For internal use only.
+ * @ignore
+ */
+var InternalRenderTask = (function InternalRenderTaskClosure() {
+
+  function InternalRenderTask(callback, params, objs, commonObjs, operatorList,
+                              pageNumber) {
+    this.callback = callback;
+    this.params = params;
+    this.objs = objs;
+    this.commonObjs = commonObjs;
+    this.operatorListIdx = null;
+    this.operatorList = operatorList;
+    this.pageNumber = pageNumber;
+    this.running = false;
+    this.graphicsReadyCallback = null;
+    this.graphicsReady = false;
+    this.cancelled = false;
+    this.capability = createPromiseCapability();
+    this.task = new RenderTask(this);
+    // caching this-bound methods
+    this._continueBound = this._continue.bind(this);
+    this._scheduleNextBound = this._scheduleNext.bind(this);
+    this._nextBound = this._next.bind(this);
+  }
+
+  InternalRenderTask.prototype = {
+
+    initalizeGraphics:
+        function InternalRenderTask_initalizeGraphics(transparency) {
+
+      if (this.cancelled) {
+        return;
+      }
+      if (PDFJS.pdfBug && 'StepperManager' in globalScope &&
+          globalScope.StepperManager.enabled) {
+        this.stepper = globalScope.StepperManager.create(this.pageNumber - 1);
+        this.stepper.init(this.operatorList);
+        this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
+      }
+
+      var params = this.params;
+      this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs,
+                                    this.objs, params.imageLayer);
+
+      this.gfx.beginDrawing(params.viewport, transparency);
+      this.operatorListIdx = 0;
+      this.graphicsReady = true;
+      if (this.graphicsReadyCallback) {
+        this.graphicsReadyCallback();
+      }
+    },
+
+    cancel: function InternalRenderTask_cancel() {
+      this.running = false;
+      this.cancelled = true;
+      this.callback('cancelled');
+    },
+
+    operatorListChanged: function InternalRenderTask_operatorListChanged() {
+      if (!this.graphicsReady) {
+        if (!this.graphicsReadyCallback) {
+          this.graphicsReadyCallback = this._continueBound;
+        }
+        return;
+      }
+
+      if (this.stepper) {
+        this.stepper.updateOperatorList(this.operatorList);
+      }
+
+      if (this.running) {
+        return;
+      }
+      this._continue();
+    },
+
+    _continue: function InternalRenderTask__continue() {
+      this.running = true;
+      if (this.cancelled) {
+        return;
+      }
+      if (this.task.onContinue) {
+        this.task.onContinue.call(this.task, this._scheduleNextBound);
+      } else {
+        this._scheduleNext();
+      }
+    },
+
+    _scheduleNext: function InternalRenderTask__scheduleNext() {
+      window.requestAnimationFrame(this._nextBound);
+    },
+
+    _next: function InternalRenderTask__next() {
+      if (this.cancelled) {
+        return;
+      }
+      this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList,
+                                        this.operatorListIdx,
+                                        this._continueBound,
+                                        this.stepper);
+      if (this.operatorListIdx === this.operatorList.argsArray.length) {
+        this.running = false;
+        if (this.operatorList.lastChunk) {
+          this.gfx.endDrawing();
+          this.callback();
+        }
+      }
+    }
+
+  };
+
+  return InternalRenderTask;
+})();
+
+
+var Metadata = PDFJS.Metadata = (function MetadataClosure() {
+  function fixMetadata(meta) {
+    return meta.replace(/>\\376\\377([^<]+)/g, function(all, codes) {
+      var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g,
+                                function(code, d1, d2, d3) {
+        return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
+      });
+      var chars = '';
+      for (var i = 0; i < bytes.length; i += 2) {
+        var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
+        chars += code >= 32 && code < 127 && code !== 60 && code !== 62 &&
+          code !== 38 && false ? String.fromCharCode(code) :
+          '&#x' + (0x10000 + code).toString(16).substring(1) + ';';
+      }
+      return '>' + chars;
+    });
+  }
+
+  function Metadata(meta) {
+    if (typeof meta === 'string') {
+      // Ghostscript produces invalid metadata
+      meta = fixMetadata(meta);
+
+      var parser = new DOMParser();
+      meta = parser.parseFromString(meta, 'application/xml');
+    } else if (!(meta instanceof Document)) {
+      error('Metadata: Invalid metadata object');
+    }
+
+    this.metaDocument = meta;
+    this.metadata = {};
+    this.parse();
+  }
+
+  Metadata.prototype = {
+    parse: function Metadata_parse() {
+      var doc = this.metaDocument;
+      var rdf = doc.documentElement;
+
+      if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in <xmpmeta>
+        rdf = rdf.firstChild;
+        while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
+          rdf = rdf.nextSibling;
+        }
+      }
+
+      var nodeName = (rdf) ? rdf.nodeName.toLowerCase() : null;
+      if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
+        return;
+      }
+
+      var children = rdf.childNodes, desc, entry, name, i, ii, length, iLength;
+      for (i = 0, length = children.length; i < length; i++) {
+        desc = children[i];
+        if (desc.nodeName.toLowerCase() !== 'rdf:description') {
+          continue;
+        }
+
+        for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) {
+          if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') {
+            entry = desc.childNodes[ii];
+            name = entry.nodeName.toLowerCase();
+            this.metadata[name] = entry.textContent.trim();
+          }
+        }
+      }
+    },
+
+    get: function Metadata_get(name) {
+      return this.metadata[name] || null;
+    },
+
+    has: function Metadata_has(name) {
+      return typeof this.metadata[name] !== 'undefined';
+    }
+  };
+
+  return Metadata;
+})();
+
+
+// <canvas> contexts store most of the state we need natively.
+// However, PDF needs a bit more state, which we store here.
+
+// Minimal font size that would be used during canvas fillText operations.
+var MIN_FONT_SIZE = 16;
+// Maximum font size that would be used during canvas fillText operations.
+var MAX_FONT_SIZE = 100;
+var MAX_GROUP_SIZE = 4096;
+
+// Heuristic value used when enforcing minimum line widths.
+var MIN_WIDTH_FACTOR = 0.65;
+
+var COMPILE_TYPE3_GLYPHS = true;
+var MAX_SIZE_TO_COMPILE = 1000;
+
+var FULL_CHUNK_HEIGHT = 16;
+
+function createScratchCanvas(width, height) {
+  var canvas = document.createElement('canvas');
+  canvas.width = width;
+  canvas.height = height;
+  return canvas;
+}
+
+function addContextCurrentTransform(ctx) {
+  // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.
+  if (!ctx.mozCurrentTransform) {
+    ctx._originalSave = ctx.save;
+    ctx._originalRestore = ctx.restore;
+    ctx._originalRotate = ctx.rotate;
+    ctx._originalScale = ctx.scale;
+    ctx._originalTranslate = ctx.translate;
+    ctx._originalTransform = ctx.transform;
+    ctx._originalSetTransform = ctx.setTransform;
+
+    ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
+    ctx._transformStack = [];
+
+    Object.defineProperty(ctx, 'mozCurrentTransform', {
+      get: function getCurrentTransform() {
+        return this._transformMatrix;
+      }
+    });
+
+    Object.defineProperty(ctx, 'mozCurrentTransformInverse', {
+      get: function getCurrentTransformInverse() {
+        // Calculation done using WolframAlpha:
+        // http://www.wolframalpha.com/input/?
+        //   i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}
+
+        var m = this._transformMatrix;
+        var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];
+
+        var ad_bc = a * d - b * c;
+        var bc_ad = b * c - a * d;
+
+        return [
+          d / ad_bc,
+          b / bc_ad,
+          c / bc_ad,
+          a / ad_bc,
+          (d * e - c * f) / bc_ad,
+          (b * e - a * f) / ad_bc
+        ];
+      }
+    });
+
+    ctx.save = function ctxSave() {
+      var old = this._transformMatrix;
+      this._transformStack.push(old);
+      this._transformMatrix = old.slice(0, 6);
+
+      this._originalSave();
+    };
+
+    ctx.restore = function ctxRestore() {
+      var prev = this._transformStack.pop();
+      if (prev) {
+        this._transformMatrix = prev;
+        this._originalRestore();
+      }
+    };
+
+    ctx.translate = function ctxTranslate(x, y) {
+      var m = this._transformMatrix;
+      m[4] = m[0] * x + m[2] * y + m[4];
+      m[5] = m[1] * x + m[3] * y + m[5];
+
+      this._originalTranslate(x, y);
+    };
+
+    ctx.scale = function ctxScale(x, y) {
+      var m = this._transformMatrix;
+      m[0] = m[0] * x;
+      m[1] = m[1] * x;
+      m[2] = m[2] * y;
+      m[3] = m[3] * y;
+
+      this._originalScale(x, y);
+    };
+
+    ctx.transform = function ctxTransform(a, b, c, d, e, f) {
+      var m = this._transformMatrix;
+      this._transformMatrix = [
+        m[0] * a + m[2] * b,
+        m[1] * a + m[3] * b,
+        m[0] * c + m[2] * d,
+        m[1] * c + m[3] * d,
+        m[0] * e + m[2] * f + m[4],
+        m[1] * e + m[3] * f + m[5]
+      ];
+
+      ctx._originalTransform(a, b, c, d, e, f);
+    };
+
+    ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
+      this._transformMatrix = [a, b, c, d, e, f];
+
+      ctx._originalSetTransform(a, b, c, d, e, f);
+    };
+
+    ctx.rotate = function ctxRotate(angle) {
+      var cosValue = Math.cos(angle);
+      var sinValue = Math.sin(angle);
+
+      var m = this._transformMatrix;
+      this._transformMatrix = [
+        m[0] * cosValue + m[2] * sinValue,
+        m[1] * cosValue + m[3] * sinValue,
+        m[0] * (-sinValue) + m[2] * cosValue,
+        m[1] * (-sinValue) + m[3] * cosValue,
+        m[4],
+        m[5]
+      ];
+
+      this._originalRotate(angle);
+    };
+  }
+}
+
+var CachedCanvases = (function CachedCanvasesClosure() {
+  var cache = {};
+  return {
+    getCanvas: function CachedCanvases_getCanvas(id, width, height,
+                                                 trackTransform) {
+      var canvasEntry;
+      if (cache[id] !== undefined) {
+        canvasEntry = cache[id];
+        canvasEntry.canvas.width = width;
+        canvasEntry.canvas.height = height;
+        // reset canvas transform for emulated mozCurrentTransform, if needed
+        canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
+      } else {
+        var canvas = createScratchCanvas(width, height);
+        var ctx = canvas.getContext('2d');
+        if (trackTransform) {
+          addContextCurrentTransform(ctx);
+        }
+        cache[id] = canvasEntry = {canvas: canvas, context: ctx};
+      }
+      return canvasEntry;
+    },
+    clear: function () {
+      for (var id in cache) {
+        var canvasEntry = cache[id];
+        // Zeroing the width and height causes Firefox to release graphics
+        // resources immediately, which can greatly reduce memory consumption.
+        canvasEntry.canvas.width = 0;
+        canvasEntry.canvas.height = 0;
+        delete cache[id];
+      }
+    }
+  };
+})();
+
+function compileType3Glyph(imgData) {
+  var POINT_TO_PROCESS_LIMIT = 1000;
+
+  var width = imgData.width, height = imgData.height;
+  var i, j, j0, width1 = width + 1;
+  var points = new Uint8Array(width1 * (height + 1));
+  var POINT_TYPES =
+      new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
+
+  // decodes bit-packed mask data
+  var lineSize = (width + 7) & ~7, data0 = imgData.data;
+  var data = new Uint8Array(lineSize * height), pos = 0, ii;
+  for (i = 0, ii = data0.length; i < ii; i++) {
+    var mask = 128, elem = data0[i];
+    while (mask > 0) {
+      data[pos++] = (elem & mask) ? 0 : 255;
+      mask >>= 1;
+    }
+  }
+
+  // finding iteresting points: every point is located between mask pixels,
+  // so there will be points of the (width + 1)x(height + 1) grid. Every point
+  // will have flags assigned based on neighboring mask pixels:
+  //   4 | 8
+  //   --P--
+  //   2 | 1
+  // We are interested only in points with the flags:
+  //   - outside corners: 1, 2, 4, 8;
+  //   - inside corners: 7, 11, 13, 14;
+  //   - and, intersections: 5, 10.
+  var count = 0;
+  pos = 0;
+  if (data[pos] !== 0) {
+    points[0] = 1;
+    ++count;
+  }
+  for (j = 1; j < width; j++) {
+    if (data[pos] !== data[pos + 1]) {
+      points[j] = data[pos] ? 2 : 1;
+      ++count;
+    }
+    pos++;
+  }
+  if (data[pos] !== 0) {
+    points[j] = 2;
+    ++count;
+  }
+  for (i = 1; i < height; i++) {
+    pos = i * lineSize;
+    j0 = i * width1;
+    if (data[pos - lineSize] !== data[pos]) {
+      points[j0] = data[pos] ? 1 : 8;
+      ++count;
+    }
+    // 'sum' is the position of the current pixel configuration in the 'TYPES'
+    // array (in order 8-1-2-4, so we can use '>>2' to shift the column).
+    var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
+    for (j = 1; j < width; j++) {
+      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) +
+            (data[pos - lineSize + 1] ? 8 : 0);
+      if (POINT_TYPES[sum]) {
+        points[j0 + j] = POINT_TYPES[sum];
+        ++count;
+      }
+      pos++;
+    }
+    if (data[pos - lineSize] !== data[pos]) {
+      points[j0 + j] = data[pos] ? 2 : 4;
+      ++count;
+    }
+
+    if (count > POINT_TO_PROCESS_LIMIT) {
+      return null;
+    }
+  }
+
+  pos = lineSize * (height - 1);
+  j0 = i * width1;
+  if (data[pos] !== 0) {
+    points[j0] = 8;
+    ++count;
+  }
+  for (j = 1; j < width; j++) {
+    if (data[pos] !== data[pos + 1]) {
+      points[j0 + j] = data[pos] ? 4 : 8;
+      ++count;
+    }
+    pos++;
+  }
+  if (data[pos] !== 0) {
+    points[j0 + j] = 4;
+    ++count;
+  }
+  if (count > POINT_TO_PROCESS_LIMIT) {
+    return null;
+  }
+
+  // building outlines
+  var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
+  var outlines = [];
+  for (i = 0; count && i <= height; i++) {
+    var p = i * width1;
+    var end = p + width;
+    while (p < end && !points[p]) {
+      p++;
+    }
+    if (p === end) {
+      continue;
+    }
+    var coords = [p % width1, i];
+
+    var type = points[p], p0 = p, pp;
+    do {
+      var step = steps[type];
+      do {
+        p += step;
+      } while (!points[p]);
+
+      pp = points[p];
+      if (pp !== 5 && pp !== 10) {
+        // set new direction
+        type = pp;
+        // delete mark
+        points[p] = 0;
+      } else { // type is 5 or 10, ie, a crossing
+        // set new direction
+        type = pp & ((0x33 * type) >> 4);
+        // set new type for "future hit"
+        points[p] &= (type >> 2 | type << 2);
+      }
+
+      coords.push(p % width1);
+      coords.push((p / width1) | 0);
+      --count;
+    } while (p0 !== p);
+    outlines.push(coords);
+    --i;
+  }
+
+  var drawOutline = function(c) {
+    c.save();
+    // the path shall be painted in [0..1]x[0..1] space
+    c.scale(1 / width, -1 / height);
+    c.translate(0, -height);
+    c.beginPath();
+    for (var i = 0, ii = outlines.length; i < ii; i++) {
+      var o = outlines[i];
+      c.moveTo(o[0], o[1]);
+      for (var j = 2, jj = o.length; j < jj; j += 2) {
+        c.lineTo(o[j], o[j+1]);
+      }
+    }
+    c.fill();
+    c.beginPath();
+    c.restore();
+  };
+
+  return drawOutline;
+}
+
+var CanvasExtraState = (function CanvasExtraStateClosure() {
+  function CanvasExtraState(old) {
+    // Are soft masks and alpha values shapes or opacities?
+    this.alphaIsShape = false;
+    this.fontSize = 0;
+    this.fontSizeScale = 1;
+    this.textMatrix = IDENTITY_MATRIX;
+    this.textMatrixScale = 1;
+    this.fontMatrix = FONT_IDENTITY_MATRIX;
+    this.leading = 0;
+    // Current point (in user coordinates)
+    this.x = 0;
+    this.y = 0;
+    // Start of text line (in text coordinates)
+    this.lineX = 0;
+    this.lineY = 0;
+    // Character and word spacing
+    this.charSpacing = 0;
+    this.wordSpacing = 0;
+    this.textHScale = 1;
+    this.textRenderingMode = TextRenderingMode.FILL;
+    this.textRise = 0;
+    // Default fore and background colors
+    this.fillColor = '#000000';
+    this.strokeColor = '#000000';
+    this.patternFill = false;
+    // Note: fill alpha applies to all non-stroking operations
+    this.fillAlpha = 1;
+    this.strokeAlpha = 1;
+    this.lineWidth = 1;
+    this.activeSMask = null; // nonclonable field (see the save method below)
+
+    this.old = old;
+  }
+
+  CanvasExtraState.prototype = {
+    clone: function CanvasExtraState_clone() {
+      return Object.create(this);
+    },
+    setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
+      this.x = x;
+      this.y = y;
+    }
+  };
+  return CanvasExtraState;
+})();
+
+var CanvasGraphics = (function CanvasGraphicsClosure() {
+  // Defines the time the executeOperatorList is going to be executing
+  // before it stops and shedules a continue of execution.
+  var EXECUTION_TIME = 15;
+  // Defines the number of steps before checking the execution time
+  var EXECUTION_STEPS = 10;
+
+  function CanvasGraphics(canvasCtx, commonObjs, objs, imageLayer) {
+    this.ctx = canvasCtx;
+    this.current = new CanvasExtraState();
+    this.stateStack = [];
+    this.pendingClip = null;
+    this.pendingEOFill = false;
+    this.res = null;
+    this.xobjs = null;
+    this.commonObjs = commonObjs;
+    this.objs = objs;
+    this.imageLayer = imageLayer;
+    this.groupStack = [];
+    this.processingType3 = null;
+    // Patterns are painted relative to the initial page/form transform, see pdf
+    // spec 8.7.2 NOTE 1.
+    this.baseTransform = null;
+    this.baseTransformStack = [];
+    this.groupLevel = 0;
+    this.smaskStack = [];
+    this.smaskCounter = 0;
+    this.tempSMask = null;
+    if (canvasCtx) {
+      // NOTE: if mozCurrentTransform is polyfilled, then the current state of
+      // the transformation must already be set in canvasCtx._transformMatrix.
+      addContextCurrentTransform(canvasCtx);
+    }
+    this.cachedGetSinglePixelWidth = null;
+  }
+
+  function putBinaryImageData(ctx, imgData) {
+    if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {
+      ctx.putImageData(imgData, 0, 0);
+      return;
+    }
+
+    // Put the image data to the canvas in chunks, rather than putting the
+    // whole image at once.  This saves JS memory, because the ImageData object
+    // is smaller. It also possibly saves C++ memory within the implementation
+    // of putImageData(). (E.g. in Firefox we make two short-lived copies of
+    // the data passed to putImageData()). |n| shouldn't be too small, however,
+    // because too many putImageData() calls will slow things down.
+    //
+    // Note: as written, if the last chunk is partial, the putImageData() call
+    // will (conceptually) put pixels past the bounds of the canvas.  But
+    // that's ok; any such pixels are ignored.
+
+    var height = imgData.height, width = imgData.width;
+    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+
+    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+    var srcPos = 0, destPos;
+    var src = imgData.data;
+    var dest = chunkImgData.data;
+    var i, j, thisChunkHeight, elemsInThisChunk;
+
+    // There are multiple forms in which the pixel data can be passed, and
+    // imgData.kind tells us which one this is.
+    if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {
+      // Grayscale, 1 bit per pixel (i.e. black-and-white).
+      var srcLength = src.byteLength;
+      var dest32 = PDFJS.hasCanvasTypedArrays ? new Uint32Array(dest.buffer) :
+        new Uint32ArrayView(dest);
+      var dest32DataLength = dest32.length;
+      var fullSrcDiff = (width + 7) >> 3;
+      var white = 0xFFFFFFFF;
+      var black = (PDFJS.isLittleEndian || !PDFJS.hasCanvasTypedArrays) ?
+        0xFF000000 : 0x000000FF;
+      for (i = 0; i < totalChunks; i++) {
+        thisChunkHeight =
+          (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+        destPos = 0;
+        for (j = 0; j < thisChunkHeight; j++) {
+          var srcDiff = srcLength - srcPos;
+          var k = 0;
+          var kEnd = (srcDiff > fullSrcDiff) ? width : srcDiff * 8 - 7;
+          var kEndUnrolled = kEnd & ~7;
+          var mask = 0;
+          var srcByte = 0;
+          for (; k < kEndUnrolled; k += 8) {
+            srcByte = src[srcPos++];
+            dest32[destPos++] = (srcByte & 128) ? white : black;
+            dest32[destPos++] = (srcByte & 64) ? white : black;
+            dest32[destPos++] = (srcByte & 32) ? white : black;
+            dest32[destPos++] = (srcByte & 16) ? white : black;
+            dest32[destPos++] = (srcByte & 8) ? white : black;
+            dest32[destPos++] = (srcByte & 4) ? white : black;
+            dest32[destPos++] = (srcByte & 2) ? white : black;
+            dest32[destPos++] = (srcByte & 1) ? white : black;
+          }
+          for (; k < kEnd; k++) {
+             if (mask === 0) {
+               srcByte = src[srcPos++];
+               mask = 128;
+             }
+
+            dest32[destPos++] = (srcByte & mask) ? white : black;
+            mask >>= 1;
+          }
+        }
+        // We ran out of input. Make all remaining pixels transparent.
+        while (destPos < dest32DataLength) {
+          dest32[destPos++] = 0;
+        }
+
+        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+      }
+    } else if (imgData.kind === ImageKind.RGBA_32BPP) {
+      // RGBA, 32-bits per pixel.
+
+      j = 0;
+      elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
+      for (i = 0; i < fullChunks; i++) {
+        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+        srcPos += elemsInThisChunk;
+
+        ctx.putImageData(chunkImgData, 0, j);
+        j += FULL_CHUNK_HEIGHT;
+      }
+      if (i < totalChunks) {
+        elemsInThisChunk = width * partialChunkHeight * 4;
+        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+        ctx.putImageData(chunkImgData, 0, j);
+      }
+
+    } else if (imgData.kind === ImageKind.RGB_24BPP) {
+      // RGB, 24-bits per pixel.
+      thisChunkHeight = FULL_CHUNK_HEIGHT;
+      elemsInThisChunk = width * thisChunkHeight;
+      for (i = 0; i < totalChunks; i++) {
+        if (i >= fullChunks) {
+          thisChunkHeight = partialChunkHeight;
+          elemsInThisChunk = width * thisChunkHeight;
+        }
+
+        destPos = 0;
+        for (j = elemsInThisChunk; j--;) {
+          dest[destPos++] = src[srcPos++];
+          dest[destPos++] = src[srcPos++];
+          dest[destPos++] = src[srcPos++];
+          dest[destPos++] = 255;
+        }
+        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+      }
+    } else {
+      error('bad image kind: ' + imgData.kind);
+    }
+  }
+
+  function putBinaryImageMask(ctx, imgData) {
+    var height = imgData.height, width = imgData.width;
+    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+
+    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+    var srcPos = 0;
+    var src = imgData.data;
+    var dest = chunkImgData.data;
+
+    for (var i = 0; i < totalChunks; i++) {
+      var thisChunkHeight =
+        (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+
+      // Expand the mask so it can be used by the canvas.  Any required
+      // inversion has already been handled.
+      var destPos = 3; // alpha component offset
+      for (var j = 0; j < thisChunkHeight; j++) {
+        var mask = 0;
+        for (var k = 0; k < width; k++) {
+          if (!mask) {
+            var elem = src[srcPos++];
+            mask = 128;
+          }
+          dest[destPos] = (elem & mask) ? 0 : 255;
+          destPos += 4;
+          mask >>= 1;
+        }
+      }
+      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+    }
+  }
+
+  function copyCtxState(sourceCtx, destCtx) {
+    var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha',
+                      'lineWidth', 'lineCap', 'lineJoin', 'miterLimit',
+                      'globalCompositeOperation', 'font'];
+    for (var i = 0, ii = properties.length; i < ii; i++) {
+      var property = properties[i];
+      if (sourceCtx[property] !== undefined) {
+        destCtx[property] = sourceCtx[property];
+      }
+    }
+    if (sourceCtx.setLineDash !== undefined) {
+      destCtx.setLineDash(sourceCtx.getLineDash());
+      destCtx.lineDashOffset =  sourceCtx.lineDashOffset;
+    } else if (sourceCtx.mozDashOffset !== undefined) {
+      destCtx.mozDash = sourceCtx.mozDash;
+      destCtx.mozDashOffset = sourceCtx.mozDashOffset;
+    }
+  }
+
+  function composeSMaskBackdrop(bytes, r0, g0, b0) {
+    var length = bytes.length;
+    for (var i = 3; i < length; i += 4) {
+      var alpha = bytes[i];
+      if (alpha === 0) {
+        bytes[i - 3] = r0;
+        bytes[i - 2] = g0;
+        bytes[i - 1] = b0;
+      } else if (alpha < 255) {
+        var alpha_ = 255 - alpha;
+        bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;
+        bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;
+        bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;
+      }
+    }
+  }
+
+  function composeSMaskAlpha(maskData, layerData) {
+    var length = maskData.length;
+    var scale = 1 / 255;
+    for (var i = 3; i < length; i += 4) {
+      var alpha = maskData[i];
+      layerData[i] = (layerData[i] * alpha * scale) | 0;
+    }
+  }
+
+  function composeSMaskLuminosity(maskData, layerData) {
+    var length = maskData.length;
+    for (var i = 3; i < length; i += 4) {
+      var y = (maskData[i - 3] * 77) +  // * 0.3 / 255 * 0x10000
+              (maskData[i - 2] * 152) + // * 0.59 ....
+              (maskData[i - 1] * 28);   // * 0.11 ....
+      layerData[i] = (layerData[i] * y) >> 16;
+    }
+  }
+
+  function genericComposeSMask(maskCtx, layerCtx, width, height,
+                               subtype, backdrop) {
+    var hasBackdrop = !!backdrop;
+    var r0 = hasBackdrop ? backdrop[0] : 0;
+    var g0 = hasBackdrop ? backdrop[1] : 0;
+    var b0 = hasBackdrop ? backdrop[2] : 0;
+
+    var composeFn;
+    if (subtype === 'Luminosity') {
+      composeFn = composeSMaskLuminosity;
+    } else {
+      composeFn = composeSMaskAlpha;
+    }
+
+    // processing image in chunks to save memory
+    var PIXELS_TO_PROCESS = 1048576;
+    var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
+    for (var row = 0; row < height; row += chunkSize) {
+      var chunkHeight = Math.min(chunkSize, height - row);
+      var maskData = maskCtx.getImageData(0, row, width, chunkHeight);
+      var layerData = layerCtx.getImageData(0, row, width, chunkHeight);
+
+      if (hasBackdrop) {
+        composeSMaskBackdrop(maskData.data, r0, g0, b0);
+      }
+      composeFn(maskData.data, layerData.data);
+
+      maskCtx.putImageData(layerData, 0, row);
+    }
+  }
+
+  function composeSMask(ctx, smask, layerCtx) {
+    var mask = smask.canvas;
+    var maskCtx = smask.context;
+
+    ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY,
+                     smask.offsetX, smask.offsetY);
+
+    var backdrop = smask.backdrop || null;
+    if (WebGLUtils.isEnabled) {
+      var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask,
+        {subtype: smask.subtype, backdrop: backdrop});
+      ctx.setTransform(1, 0, 0, 1, 0, 0);
+      ctx.drawImage(composed, smask.offsetX, smask.offsetY);
+      return;
+    }
+    genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height,
+                        smask.subtype, backdrop);
+    ctx.drawImage(mask, 0, 0);
+  }
+
+  var LINE_CAP_STYLES = ['butt', 'round', 'square'];
+  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
+  var NORMAL_CLIP = {};
+  var EO_CLIP = {};
+
+  CanvasGraphics.prototype = {
+
+    beginDrawing: function CanvasGraphics_beginDrawing(viewport, transparency) {
+      // For pdfs that use blend modes we have to clear the canvas else certain
+      // blend modes can look wrong since we'd be blending with a white
+      // backdrop. The problem with a transparent backdrop though is we then
+      // don't get sub pixel anti aliasing on text, so we fill with white if
+      // we can.
+      var width = this.ctx.canvas.width;
+      var height = this.ctx.canvas.height;
+      if (transparency) {
+        this.ctx.clearRect(0, 0, width, height);
+      } else {
+        this.ctx.mozOpaque = true;
+        this.ctx.save();
+        this.ctx.fillStyle = 'rgb(255, 255, 255)';
+        this.ctx.fillRect(0, 0, width, height);
+        this.ctx.restore();
+      }
+
+      var transform = viewport.transform;
+
+      this.ctx.save();
+      this.ctx.transform.apply(this.ctx, transform);
+
+      this.baseTransform = this.ctx.mozCurrentTransform.slice();
+
+      if (this.imageLayer) {
+        this.imageLayer.beginLayout();
+      }
+    },
+
+    executeOperatorList: function CanvasGraphics_executeOperatorList(
+                                    operatorList,
+                                    executionStartIdx, continueCallback,
+                                    stepper) {
+      var argsArray = operatorList.argsArray;
+      var fnArray = operatorList.fnArray;
+      var i = executionStartIdx || 0;
+      var argsArrayLen = argsArray.length;
+
+      // Sometimes the OperatorList to execute is empty.
+      if (argsArrayLen === i) {
+        return i;
+      }
+
+      var chunkOperations = (argsArrayLen - i > EXECUTION_STEPS &&
+                             typeof continueCallback === 'function');
+      var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
+      var steps = 0;
+
+      var commonObjs = this.commonObjs;
+      var objs = this.objs;
+      var fnId;
+
+      while (true) {
+        if (stepper !== undefined && i === stepper.nextBreakPoint) {
+          stepper.breakIt(i, continueCallback);
+          return i;
+        }
+
+        fnId = fnArray[i];
+
+        if (fnId !== OPS.dependency) {
+          this[fnId].apply(this, argsArray[i]);
+        } else {
+          var deps = argsArray[i];
+          for (var n = 0, nn = deps.length; n < nn; n++) {
+            var depObjId = deps[n];
+            var common = depObjId[0] === 'g' && depObjId[1] === '_';
+            var objsPool = common ? commonObjs : objs;
+
+            // If the promise isn't resolved yet, add the continueCallback
+            // to the promise and bail out.
+            if (!objsPool.isResolved(depObjId)) {
+              objsPool.get(depObjId, continueCallback);
+              return i;
+            }
+          }
+        }
+
+        i++;
+
+        // If the entire operatorList was executed, stop as were done.
+        if (i === argsArrayLen) {
+          return i;
+        }
+
+        // If the execution took longer then a certain amount of time and
+        // `continueCallback` is specified, interrupt the execution.
+        if (chunkOperations && ++steps > EXECUTION_STEPS) {
+          if (Date.now() > endTime) {
+            continueCallback();
+            return i;
+          }
+          steps = 0;
+        }
+
+        // If the operatorList isn't executed completely yet OR the execution
+        // time was short enough, do another execution round.
+      }
+    },
+
+    endDrawing: function CanvasGraphics_endDrawing() {
+      this.ctx.restore();
+      CachedCanvases.clear();
+      WebGLUtils.clear();
+
+      if (this.imageLayer) {
+        this.imageLayer.endLayout();
+      }
+    },
+
+    // Graphics state
+    setLineWidth: function CanvasGraphics_setLineWidth(width) {
+      this.current.lineWidth = width;
+      this.ctx.lineWidth = width;
+    },
+    setLineCap: function CanvasGraphics_setLineCap(style) {
+      this.ctx.lineCap = LINE_CAP_STYLES[style];
+    },
+    setLineJoin: function CanvasGraphics_setLineJoin(style) {
+      this.ctx.lineJoin = LINE_JOIN_STYLES[style];
+    },
+    setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
+      this.ctx.miterLimit = limit;
+    },
+    setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
+      var ctx = this.ctx;
+      if (ctx.setLineDash !== undefined) {
+        ctx.setLineDash(dashArray);
+        ctx.lineDashOffset = dashPhase;
+      } else {
+        ctx.mozDash = dashArray;
+        ctx.mozDashOffset = dashPhase;
+      }
+    },
+    setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {
+      // Maybe if we one day fully support color spaces this will be important
+      // for now we can ignore.
+      // TODO set rendering intent?
+    },
+    setFlatness: function CanvasGraphics_setFlatness(flatness) {
+      // There's no way to control this with canvas, but we can safely ignore.
+      // TODO set flatness?
+    },
+    setGState: function CanvasGraphics_setGState(states) {
+      for (var i = 0, ii = states.length; i < ii; i++) {
+        var state = states[i];
+        var key = state[0];
+        var value = state[1];
+
+        switch (key) {
+          case 'LW':
+            this.setLineWidth(value);
+            break;
+          case 'LC':
+            this.setLineCap(value);
+            break;
+          case 'LJ':
+            this.setLineJoin(value);
+            break;
+          case 'ML':
+            this.setMiterLimit(value);
+            break;
+          case 'D':
+            this.setDash(value[0], value[1]);
+            break;
+          case 'RI':
+            this.setRenderingIntent(value);
+            break;
+          case 'FL':
+            this.setFlatness(value);
+            break;
+          case 'Font':
+            this.setFont(value[0], value[1]);
+            break;
+          case 'CA':
+            this.current.strokeAlpha = state[1];
+            break;
+          case 'ca':
+            this.current.fillAlpha = state[1];
+            this.ctx.globalAlpha = state[1];
+            break;
+          case 'BM':
+            if (value && value.name && (value.name !== 'Normal')) {
+              var mode = value.name.replace(/([A-Z])/g,
+                function(c) {
+                  return '-' + c.toLowerCase();
+                }
+              ).substring(1);
+              this.ctx.globalCompositeOperation = mode;
+              if (this.ctx.globalCompositeOperation !== mode) {
+                warn('globalCompositeOperation "' + mode +
+                     '" is not supported');
+              }
+            } else {
+              this.ctx.globalCompositeOperation = 'source-over';
+            }
+            break;
+          case 'SMask':
+            if (this.current.activeSMask) {
+              this.endSMaskGroup();
+            }
+            this.current.activeSMask = value ? this.tempSMask : null;
+            if (this.current.activeSMask) {
+              this.beginSMaskGroup();
+            }
+            this.tempSMask = null;
+            break;
+        }
+      }
+    },
+    beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
+
+      var activeSMask = this.current.activeSMask;
+      var drawnWidth = activeSMask.canvas.width;
+      var drawnHeight = activeSMask.canvas.height;
+      var cacheId = 'smaskGroupAt' + this.groupLevel;
+      var scratchCanvas = CachedCanvases.getCanvas(
+        cacheId, drawnWidth, drawnHeight, true);
+
+      var currentCtx = this.ctx;
+      var currentTransform = currentCtx.mozCurrentTransform;
+      this.ctx.save();
+
+      var groupCtx = scratchCanvas.context;
+      groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
+      groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
+      groupCtx.transform.apply(groupCtx, currentTransform);
+
+      copyCtxState(currentCtx, groupCtx);
+      this.ctx = groupCtx;
+      this.setGState([
+        ['BM', 'Normal'],
+        ['ca', 1],
+        ['CA', 1]
+      ]);
+      this.groupStack.push(currentCtx);
+      this.groupLevel++;
+    },
+    endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
+      var groupCtx = this.ctx;
+      this.groupLevel--;
+      this.ctx = this.groupStack.pop();
+
+      composeSMask(this.ctx, this.current.activeSMask, groupCtx);
+      this.ctx.restore();
+    },
+    save: function CanvasGraphics_save() {
+      this.ctx.save();
+      var old = this.current;
+      this.stateStack.push(old);
+      this.current = old.clone();
+      this.current.activeSMask = null;
+    },
+    restore: function CanvasGraphics_restore() {
+      if (this.stateStack.length !== 0) {
+        if (this.current.activeSMask !== null) {
+          this.endSMaskGroup();
+        }
+
+        this.current = this.stateStack.pop();
+        this.ctx.restore();
+
+        this.cachedGetSinglePixelWidth = null;
+      }
+    },
+    transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
+      this.ctx.transform(a, b, c, d, e, f);
+
+      this.cachedGetSinglePixelWidth = null;
+    },
+
+    // Path
+    constructPath: function CanvasGraphics_constructPath(ops, args) {
+      var ctx = this.ctx;
+      var current = this.current;
+      var x = current.x, y = current.y;
+      for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {
+        switch (ops[i] | 0) {
+          case OPS.rectangle:
+            x = args[j++];
+            y = args[j++];
+            var width = args[j++];
+            var height = args[j++];
+            if (width === 0) {
+              width = this.getSinglePixelWidth();
+            }
+            if (height === 0) {
+              height = this.getSinglePixelWidth();
+            }
+            var xw = x + width;
+            var yh = y + height;
+            this.ctx.moveTo(x, y);
+            this.ctx.lineTo(xw, y);
+            this.ctx.lineTo(xw, yh);
+            this.ctx.lineTo(x, yh);
+            this.ctx.lineTo(x, y);
+            this.ctx.closePath();
+            break;
+          case OPS.moveTo:
+            x = args[j++];
+            y = args[j++];
+            ctx.moveTo(x, y);
+            break;
+          case OPS.lineTo:
+            x = args[j++];
+            y = args[j++];
+            ctx.lineTo(x, y);
+            break;
+          case OPS.curveTo:
+            x = args[j + 4];
+            y = args[j + 5];
+            ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3],
+                              x, y);
+            j += 6;
+            break;
+          case OPS.curveTo2:
+            ctx.bezierCurveTo(x, y, args[j], args[j + 1],
+                              args[j + 2], args[j + 3]);
+            x = args[j + 2];
+            y = args[j + 3];
+            j += 4;
+            break;
+          case OPS.curveTo3:
+            x = args[j + 2];
+            y = args[j + 3];
+            ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
+            j += 4;
+            break;
+          case OPS.closePath:
+            ctx.closePath();
+            break;
+        }
+      }
+      current.setCurrentPoint(x, y);
+    },
+    closePath: function CanvasGraphics_closePath() {
+      this.ctx.closePath();
+    },
+    stroke: function CanvasGraphics_stroke(consumePath) {
+      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
+      var ctx = this.ctx;
+      var strokeColor = this.current.strokeColor;
+      // Prevent drawing too thin lines by enforcing a minimum line width.
+      ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR,
+                               this.current.lineWidth);
+      // For stroke we want to temporarily change the global alpha to the
+      // stroking alpha.
+      ctx.globalAlpha = this.current.strokeAlpha;
+      if (strokeColor && strokeColor.hasOwnProperty('type') &&
+          strokeColor.type === 'Pattern') {
+        // for patterns, we transform to pattern space, calculate
+        // the pattern, call stroke, and restore to user space
+        ctx.save();
+        ctx.strokeStyle = strokeColor.getPattern(ctx, this);
+        ctx.stroke();
+        ctx.restore();
+      } else {
+        ctx.stroke();
+      }
+      if (consumePath) {
+        this.consumePath();
+      }
+      // Restore the global alpha to the fill alpha
+      ctx.globalAlpha = this.current.fillAlpha;
+    },
+    closeStroke: function CanvasGraphics_closeStroke() {
+      this.closePath();
+      this.stroke();
+    },
+    fill: function CanvasGraphics_fill(consumePath) {
+      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
+      var ctx = this.ctx;
+      var fillColor = this.current.fillColor;
+      var isPatternFill = this.current.patternFill;
+      var needRestore = false;
+
+      if (isPatternFill) {
+        ctx.save();
+        ctx.fillStyle = fillColor.getPattern(ctx, this);
+        needRestore = true;
+      }
+
+      if (this.pendingEOFill) {
+        if (ctx.mozFillRule !== undefined) {
+          ctx.mozFillRule = 'evenodd';
+          ctx.fill();
+          ctx.mozFillRule = 'nonzero';
+        } else {
+          try {
+            ctx.fill('evenodd');
+          } catch (ex) {
+            // shouldn't really happen, but browsers might think differently
+            ctx.fill();
+          }
+        }
+        this.pendingEOFill = false;
+      } else {
+        ctx.fill();
+      }
+
+      if (needRestore) {
+        ctx.restore();
+      }
+      if (consumePath) {
+        this.consumePath();
+      }
+    },
+    eoFill: function CanvasGraphics_eoFill() {
+      this.pendingEOFill = true;
+      this.fill();
+    },
+    fillStroke: function CanvasGraphics_fillStroke() {
+      this.fill(false);
+      this.stroke(false);
+
+      this.consumePath();
+    },
+    eoFillStroke: function CanvasGraphics_eoFillStroke() {
+      this.pendingEOFill = true;
+      this.fillStroke();
+    },
+    closeFillStroke: function CanvasGraphics_closeFillStroke() {
+      this.closePath();
+      this.fillStroke();
+    },
+    closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
+      this.pendingEOFill = true;
+      this.closePath();
+      this.fillStroke();
+    },
+    endPath: function CanvasGraphics_endPath() {
+      this.consumePath();
+    },
+
+    // Clipping
+    clip: function CanvasGraphics_clip() {
+      this.pendingClip = NORMAL_CLIP;
+    },
+    eoClip: function CanvasGraphics_eoClip() {
+      this.pendingClip = EO_CLIP;
+    },
+
+    // Text
+    beginText: function CanvasGraphics_beginText() {
+      this.current.textMatrix = IDENTITY_MATRIX;
+      this.current.textMatrixScale = 1;
+      this.current.x = this.current.lineX = 0;
+      this.current.y = this.current.lineY = 0;
+    },
+    endText: function CanvasGraphics_endText() {
+      var paths = this.pendingTextPaths;
+      var ctx = this.ctx;
+      if (paths === undefined) {
+        ctx.beginPath();
+        return;
+      }
+
+      ctx.save();
+      ctx.beginPath();
+      for (var i = 0; i < paths.length; i++) {
+        var path = paths[i];
+        ctx.setTransform.apply(ctx, path.transform);
+        ctx.translate(path.x, path.y);
+        path.addToPath(ctx, path.fontSize);
+      }
+      ctx.restore();
+      ctx.clip();
+      ctx.beginPath();
+      delete this.pendingTextPaths;
+    },
+    setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
+      this.current.charSpacing = spacing;
+    },
+    setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
+      this.current.wordSpacing = spacing;
+    },
+    setHScale: function CanvasGraphics_setHScale(scale) {
+      this.current.textHScale = scale / 100;
+    },
+    setLeading: function CanvasGraphics_setLeading(leading) {
+      this.current.leading = -leading;
+    },
+    setFont: function CanvasGraphics_setFont(fontRefName, size) {
+      var fontObj = this.commonObjs.get(fontRefName);
+      var current = this.current;
+
+      if (!fontObj) {
+        error('Can\'t find font for ' + fontRefName);
+      }
+
+      current.fontMatrix = (fontObj.fontMatrix ?
+                            fontObj.fontMatrix : FONT_IDENTITY_MATRIX);
+
+      // A valid matrix needs all main diagonal elements to be non-zero
+      // This also ensures we bypass FF bugzilla bug #719844.
+      if (current.fontMatrix[0] === 0 ||
+          current.fontMatrix[3] === 0) {
+        warn('Invalid font matrix for font ' + fontRefName);
+      }
+
+      // The spec for Tf (setFont) says that 'size' specifies the font 'scale',
+      // and in some docs this can be negative (inverted x-y axes).
+      if (size < 0) {
+        size = -size;
+        current.fontDirection = -1;
+      } else {
+        current.fontDirection = 1;
+      }
+
+      this.current.font = fontObj;
+      this.current.fontSize = size;
+
+      if (fontObj.isType3Font) {
+        return; // we don't need ctx.font for Type3 fonts
+      }
+
+      var name = fontObj.loadedName || 'sans-serif';
+      var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :
+                                 (fontObj.bold ? 'bold' : 'normal');
+
+      var italic = fontObj.italic ? 'italic' : 'normal';
+      var typeface = '"' + name + '", ' + fontObj.fallbackName;
+
+      // Some font backends cannot handle fonts below certain size.
+      // Keeping the font at minimal size and using the fontSizeScale to change
+      // the current transformation matrix before the fillText/strokeText.
+      // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227
+      var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE :
+                            size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;
+      this.current.fontSizeScale = size / browserFontSize;
+
+      var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;
+      this.ctx.font = rule;
+    },
+    setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
+      this.current.textRenderingMode = mode;
+    },
+    setTextRise: function CanvasGraphics_setTextRise(rise) {
+      this.current.textRise = rise;
+    },
+    moveText: function CanvasGraphics_moveText(x, y) {
+      this.current.x = this.current.lineX += x;
+      this.current.y = this.current.lineY += y;
+    },
+    setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
+      this.setLeading(-y);
+      this.moveText(x, y);
+    },
+    setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
+      this.current.textMatrix = [a, b, c, d, e, f];
+      this.current.textMatrixScale = Math.sqrt(a * a + b * b);
+
+      this.current.x = this.current.lineX = 0;
+      this.current.y = this.current.lineY = 0;
+    },
+    nextLine: function CanvasGraphics_nextLine() {
+      this.moveText(0, this.current.leading);
+    },
+
+    paintChar: function CanvasGraphics_paintChar(character, x, y) {
+      var ctx = this.ctx;
+      var current = this.current;
+      var font = current.font;
+      var textRenderingMode = current.textRenderingMode;
+      var fontSize = current.fontSize / current.fontSizeScale;
+      var fillStrokeMode = textRenderingMode &
+        TextRenderingMode.FILL_STROKE_MASK;
+      var isAddToPathSet = !!(textRenderingMode &
+        TextRenderingMode.ADD_TO_PATH_FLAG);
+
+      var addToPath;
+      if (font.disableFontFace || isAddToPathSet) {
+        addToPath = font.getPathGenerator(this.commonObjs, character);
+      }
+
+      if (font.disableFontFace) {
+        ctx.save();
+        ctx.translate(x, y);
+        ctx.beginPath();
+        addToPath(ctx, fontSize);
+        if (fillStrokeMode === TextRenderingMode.FILL ||
+            fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+          ctx.fill();
+        }
+        if (fillStrokeMode === TextRenderingMode.STROKE ||
+            fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+          ctx.stroke();
+        }
+        ctx.restore();
+      } else {
+        if (fillStrokeMode === TextRenderingMode.FILL ||
+            fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+          ctx.fillText(character, x, y);
+        }
+        if (fillStrokeMode === TextRenderingMode.STROKE ||
+            fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+          ctx.strokeText(character, x, y);
+        }
+      }
+
+      if (isAddToPathSet) {
+        var paths = this.pendingTextPaths || (this.pendingTextPaths = []);
+        paths.push({
+          transform: ctx.mozCurrentTransform,
+          x: x,
+          y: y,
+          fontSize: fontSize,
+          addToPath: addToPath
+        });
+      }
+    },
+
+    get isFontSubpixelAAEnabled() {
+      // Checks if anti-aliasing is enabled when scaled text is painted.
+      // On Windows GDI scaled fonts looks bad.
+      var ctx = document.createElement('canvas').getContext('2d');
+      ctx.scale(1.5, 1);
+      ctx.fillText('I', 0, 10);
+      var data = ctx.getImageData(0, 0, 10, 10).data;
+      var enabled = false;
+      for (var i = 3; i < data.length; i += 4) {
+        if (data[i] > 0 && data[i] < 255) {
+          enabled = true;
+          break;
+        }
+      }
+      return shadow(this, 'isFontSubpixelAAEnabled', enabled);
+    },
+
+    showText: function CanvasGraphics_showText(glyphs) {
+      var current = this.current;
+      var font = current.font;
+      if (font.isType3Font) {
+        return this.showType3Text(glyphs);
+      }
+
+      var fontSize = current.fontSize;
+      if (fontSize === 0) {
+        return;
+      }
+
+      var ctx = this.ctx;
+      var fontSizeScale = current.fontSizeScale;
+      var charSpacing = current.charSpacing;
+      var wordSpacing = current.wordSpacing;
+      var fontDirection = current.fontDirection;
+      var textHScale = current.textHScale * fontDirection;
+      var glyphsLength = glyphs.length;
+      var vertical = font.vertical;
+      var defaultVMetrics = font.defaultVMetrics;
+      var widthAdvanceScale = fontSize * current.fontMatrix[0];
+
+      var simpleFillText =
+        current.textRenderingMode === TextRenderingMode.FILL &&
+        !font.disableFontFace;
+
+      ctx.save();
+      ctx.transform.apply(ctx, current.textMatrix);
+      ctx.translate(current.x, current.y + current.textRise);
+
+      if (fontDirection > 0) {
+        ctx.scale(textHScale, -1);
+      } else {
+        ctx.scale(textHScale, 1);
+      }
+
+      var lineWidth = current.lineWidth;
+      var scale = current.textMatrixScale;
+      if (scale === 0 || lineWidth === 0) {
+        var fillStrokeMode = current.textRenderingMode &
+          TextRenderingMode.FILL_STROKE_MASK;
+        if (fillStrokeMode === TextRenderingMode.STROKE ||
+            fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+          this.cachedGetSinglePixelWidth = null;
+          lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;
+        }
+      } else {
+        lineWidth /= scale;
+      }
+
+      if (fontSizeScale !== 1.0) {
+        ctx.scale(fontSizeScale, fontSizeScale);
+        lineWidth /= fontSizeScale;
+      }
+
+      ctx.lineWidth = lineWidth;
+
+      var x = 0, i;
+      for (i = 0; i < glyphsLength; ++i) {
+        var glyph = glyphs[i];
+        if (glyph === null) {
+          // word break
+          x += fontDirection * wordSpacing;
+          continue;
+        } else if (isNum(glyph)) {
+          x += -glyph * fontSize * 0.001;
+          continue;
+        }
+
+        var restoreNeeded = false;
+        var character = glyph.fontChar;
+        var accent = glyph.accent;
+        var scaledX, scaledY, scaledAccentX, scaledAccentY;
+        var width = glyph.width;
+        if (vertical) {
+          var vmetric, vx, vy;
+          vmetric = glyph.vmetric || defaultVMetrics;
+          vx = glyph.vmetric ? vmetric[1] : width * 0.5;
+          vx = -vx * widthAdvanceScale;
+          vy = vmetric[2] * widthAdvanceScale;
+
+          width = vmetric ? -vmetric[0] : width;
+          scaledX = vx / fontSizeScale;
+          scaledY = (x + vy) / fontSizeScale;
+        } else {
+          scaledX = x / fontSizeScale;
+          scaledY = 0;
+        }
+
+        if (font.remeasure && width > 0 && this.isFontSubpixelAAEnabled) {
+          // some standard fonts may not have the exact width, trying to
+          // rescale per character
+          var measuredWidth = ctx.measureText(character).width * 1000 /
+            fontSize * fontSizeScale;
+          var characterScaleX = width / measuredWidth;
+          restoreNeeded = true;
+          ctx.save();
+          ctx.scale(characterScaleX, 1);
+          scaledX /= characterScaleX;
+        }
+
+        if (simpleFillText && !accent) {
+          // common case
+          ctx.fillText(character, scaledX, scaledY);
+        } else {
+          this.paintChar(character, scaledX, scaledY);
+          if (accent) {
+            scaledAccentX = scaledX + accent.offset.x / fontSizeScale;
+            scaledAccentY = scaledY - accent.offset.y / fontSizeScale;
+            this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY);
+          }
+        }
+
+        var charWidth = width * widthAdvanceScale + charSpacing * fontDirection;
+        x += charWidth;
+
+        if (restoreNeeded) {
+          ctx.restore();
+        }
+      }
+      if (vertical) {
+        current.y -= x * textHScale;
+      } else {
+        current.x += x * textHScale;
+      }
+      ctx.restore();
+    },
+
+    showType3Text: function CanvasGraphics_showType3Text(glyphs) {
+      // Type3 fonts - each glyph is a "mini-PDF"
+      var ctx = this.ctx;
+      var current = this.current;
+      var font = current.font;
+      var fontSize = current.fontSize;
+      var fontDirection = current.fontDirection;
+      var charSpacing = current.charSpacing;
+      var wordSpacing = current.wordSpacing;
+      var textHScale = current.textHScale * fontDirection;
+      var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;
+      var glyphsLength = glyphs.length;
+      var isTextInvisible =
+        current.textRenderingMode === TextRenderingMode.INVISIBLE;
+      var i, glyph, width;
+
+      if (isTextInvisible || fontSize === 0) {
+        return;
+      }
+
+      ctx.save();
+      ctx.transform.apply(ctx, current.textMatrix);
+      ctx.translate(current.x, current.y);
+
+      ctx.scale(textHScale, fontDirection);
+
+      for (i = 0; i < glyphsLength; ++i) {
+        glyph = glyphs[i];
+        if (glyph === null) {
+          // word break
+          this.ctx.translate(wordSpacing, 0);
+          current.x += wordSpacing * textHScale;
+          continue;
+        } else if (isNum(glyph)) {
+          var spacingLength = -glyph * 0.001 * fontSize;
+          this.ctx.translate(spacingLength, 0);
+          current.x += spacingLength * textHScale;
+          continue;
+        }
+
+        var operatorList = font.charProcOperatorList[glyph.operatorListId];
+        if (!operatorList) {
+          warn('Type3 character \"' + glyph.operatorListId +
+               '\" is not available');
+          continue;
+        }
+        this.processingType3 = glyph;
+        this.save();
+        ctx.scale(fontSize, fontSize);
+        ctx.transform.apply(ctx, fontMatrix);
+        this.executeOperatorList(operatorList);
+        this.restore();
+
+        var transformed = Util.applyTransform([glyph.width, 0], fontMatrix);
+        width = transformed[0] * fontSize + charSpacing;
+
+        ctx.translate(width, 0);
+        current.x += width * textHScale;
+      }
+      ctx.restore();
+      this.processingType3 = null;
+    },
+
+    // Type3 fonts
+    setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {
+      // We can safely ignore this since the width should be the same
+      // as the width in the Widths array.
+    },
+    setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,
+                                                                        yWidth,
+                                                                        llx,
+                                                                        lly,
+                                                                        urx,
+                                                                        ury) {
+      // TODO According to the spec we're also suppose to ignore any operators
+      // that set color or include images while processing this type3 font.
+      this.ctx.rect(llx, lly, urx - llx, ury - lly);
+      this.clip();
+      this.endPath();
+    },
+
+    // Color
+    getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
+      var pattern;
+      if (IR[0] === 'TilingPattern') {
+        var color = IR[1];
+        pattern = new TilingPattern(IR, color, this.ctx, this.objs,
+                                    this.commonObjs, this.baseTransform);
+      } else {
+        pattern = getShadingPatternFromIR(IR);
+      }
+      return pattern;
+    },
+    setStrokeColorN: function CanvasGraphics_setStrokeColorN(/*...*/) {
+      this.current.strokeColor = this.getColorN_Pattern(arguments);
+    },
+    setFillColorN: function CanvasGraphics_setFillColorN(/*...*/) {
+      this.current.fillColor = this.getColorN_Pattern(arguments);
+      this.current.patternFill = true;
+    },
+    setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
+      var color = Util.makeCssRgb(r, g, b);
+      this.ctx.strokeStyle = color;
+      this.current.strokeColor = color;
+    },
+    setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
+      var color = Util.makeCssRgb(r, g, b);
+      this.ctx.fillStyle = color;
+      this.current.fillColor = color;
+      this.current.patternFill = false;
+    },
+
+    shadingFill: function CanvasGraphics_shadingFill(patternIR) {
+      var ctx = this.ctx;
+
+      this.save();
+      var pattern = getShadingPatternFromIR(patternIR);
+      ctx.fillStyle = pattern.getPattern(ctx, this, true);
+
+      var inv = ctx.mozCurrentTransformInverse;
+      if (inv) {
+        var canvas = ctx.canvas;
+        var width = canvas.width;
+        var height = canvas.height;
+
+        var bl = Util.applyTransform([0, 0], inv);
+        var br = Util.applyTransform([0, height], inv);
+        var ul = Util.applyTransform([width, 0], inv);
+        var ur = Util.applyTransform([width, height], inv);
+
+        var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+
+        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
+      } else {
+        // HACK to draw the gradient onto an infinite rectangle.
+        // PDF gradients are drawn across the entire image while
+        // Canvas only allows gradients to be drawn in a rectangle
+        // The following bug should allow us to remove this.
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=664884
+
+        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
+      }
+
+      this.restore();
+    },
+
+    // Images
+    beginInlineImage: function CanvasGraphics_beginInlineImage() {
+      error('Should not call beginInlineImage');
+    },
+    beginImageData: function CanvasGraphics_beginImageData() {
+      error('Should not call beginImageData');
+    },
+
+    paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,
+                                                                        bbox) {
+      this.save();
+      this.baseTransformStack.push(this.baseTransform);
+
+      if (isArray(matrix) && 6 === matrix.length) {
+        this.transform.apply(this, matrix);
+      }
+
+      this.baseTransform = this.ctx.mozCurrentTransform;
+
+      if (isArray(bbox) && 4 === bbox.length) {
+        var width = bbox[2] - bbox[0];
+        var height = bbox[3] - bbox[1];
+        this.ctx.rect(bbox[0], bbox[1], width, height);
+        this.clip();
+        this.endPath();
+      }
+    },
+
+    paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
+      this.restore();
+      this.baseTransform = this.baseTransformStack.pop();
+    },
+
+    beginGroup: function CanvasGraphics_beginGroup(group) {
+      this.save();
+      var currentCtx = this.ctx;
+      // TODO non-isolated groups - according to Rik at adobe non-isolated
+      // group results aren't usually that different and they even have tools
+      // that ignore this setting. Notes from Rik on implmenting:
+      // - When you encounter an transparency group, create a new canvas with
+      // the dimensions of the bbox
+      // - copy the content from the previous canvas to the new canvas
+      // - draw as usual
+      // - remove the backdrop alpha:
+      // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha
+      // value of your transparency group and 'alphaBackdrop' the alpha of the
+      // backdrop
+      // - remove background color:
+      // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)
+      if (!group.isolated) {
+        info('TODO: Support non-isolated groups.');
+      }
+
+      // TODO knockout - supposedly possible with the clever use of compositing
+      // modes.
+      if (group.knockout) {
+        warn('Knockout groups not supported.');
+      }
+
+      var currentTransform = currentCtx.mozCurrentTransform;
+      if (group.matrix) {
+        currentCtx.transform.apply(currentCtx, group.matrix);
+      }
+      assert(group.bbox, 'Bounding box is required.');
+
+      // Based on the current transform figure out how big the bounding box
+      // will actually be.
+      var bounds = Util.getAxialAlignedBoundingBox(
+                    group.bbox,
+                    currentCtx.mozCurrentTransform);
+      // Clip the bounding box to the current canvas.
+      var canvasBounds = [0,
+                          0,
+                          currentCtx.canvas.width,
+                          currentCtx.canvas.height];
+      bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
+      // Use ceil in case we're between sizes so we don't create canvas that is
+      // too small and make the canvas at least 1x1 pixels.
+      var offsetX = Math.floor(bounds[0]);
+      var offsetY = Math.floor(bounds[1]);
+      var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
+      var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
+      var scaleX = 1, scaleY = 1;
+      if (drawnWidth > MAX_GROUP_SIZE) {
+        scaleX = drawnWidth / MAX_GROUP_SIZE;
+        drawnWidth = MAX_GROUP_SIZE;
+      }
+      if (drawnHeight > MAX_GROUP_SIZE) {
+        scaleY = drawnHeight / MAX_GROUP_SIZE;
+        drawnHeight = MAX_GROUP_SIZE;
+      }
+
+      var cacheId = 'groupAt' + this.groupLevel;
+      if (group.smask) {
+        // Using two cache entries is case if masks are used one after another.
+        cacheId +=  '_smask_' + ((this.smaskCounter++) % 2);
+      }
+      var scratchCanvas = CachedCanvases.getCanvas(
+        cacheId, drawnWidth, drawnHeight, true);
+      var groupCtx = scratchCanvas.context;
+
+      // Since we created a new canvas that is just the size of the bounding box
+      // we have to translate the group ctx.
+      groupCtx.scale(1 / scaleX, 1 / scaleY);
+      groupCtx.translate(-offsetX, -offsetY);
+      groupCtx.transform.apply(groupCtx, currentTransform);
+
+      if (group.smask) {
+        // Saving state and cached mask to be used in setGState.
+        this.smaskStack.push({
+          canvas: scratchCanvas.canvas,
+          context: groupCtx,
+          offsetX: offsetX,
+          offsetY: offsetY,
+          scaleX: scaleX,
+          scaleY: scaleY,
+          subtype: group.smask.subtype,
+          backdrop: group.smask.backdrop
+        });
+      } else {
+        // Setup the current ctx so when the group is popped we draw it at the
+        // right location.
+        currentCtx.setTransform(1, 0, 0, 1, 0, 0);
+        currentCtx.translate(offsetX, offsetY);
+        currentCtx.scale(scaleX, scaleY);
+      }
+      // The transparency group inherits all off the current graphics state
+      // except the blend mode, soft mask, and alpha constants.
+      copyCtxState(currentCtx, groupCtx);
+      this.ctx = groupCtx;
+      this.setGState([
+        ['BM', 'Normal'],
+        ['ca', 1],
+        ['CA', 1]
+      ]);
+      this.groupStack.push(currentCtx);
+      this.groupLevel++;
+    },
+
+    endGroup: function CanvasGraphics_endGroup(group) {
+      this.groupLevel--;
+      var groupCtx = this.ctx;
+      this.ctx = this.groupStack.pop();
+      // Turn off image smoothing to avoid sub pixel interpolation which can
+      // look kind of blurry for some pdfs.
+      if (this.ctx.imageSmoothingEnabled !== undefined) {
+        this.ctx.imageSmoothingEnabled = false;
+      } else {
+        this.ctx.mozImageSmoothingEnabled = false;
+      }
+      if (group.smask) {
+        this.tempSMask = this.smaskStack.pop();
+      } else {
+        this.ctx.drawImage(groupCtx.canvas, 0, 0);
+      }
+      this.restore();
+    },
+
+    beginAnnotations: function CanvasGraphics_beginAnnotations() {
+      this.save();
+      this.current = new CanvasExtraState();
+    },
+
+    endAnnotations: function CanvasGraphics_endAnnotations() {
+      this.restore();
+    },
+
+    beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform,
+                                                             matrix) {
+      this.save();
+
+      if (isArray(rect) && 4 === rect.length) {
+        var width = rect[2] - rect[0];
+        var height = rect[3] - rect[1];
+        this.ctx.rect(rect[0], rect[1], width, height);
+        this.clip();
+        this.endPath();
+      }
+
+      this.transform.apply(this, transform);
+      this.transform.apply(this, matrix);
+    },
+
+    endAnnotation: function CanvasGraphics_endAnnotation() {
+      this.restore();
+    },
+
+    paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
+      var domImage = this.objs.get(objId);
+      if (!domImage) {
+        warn('Dependent image isn\'t ready yet');
+        return;
+      }
+
+      this.save();
+
+      var ctx = this.ctx;
+      // scale the image to the unit square
+      ctx.scale(1 / w, -1 / h);
+
+      ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height,
+                    0, -h, w, h);
+      if (this.imageLayer) {
+        var currentTransform = ctx.mozCurrentTransformInverse;
+        var position = this.getCanvasPosition(0, 0);
+        this.imageLayer.appendImage({
+          objId: objId,
+          left: position[0],
+          top: position[1],
+          width: w / currentTransform[0],
+          height: h / currentTransform[3]
+        });
+      }
+      this.restore();
+    },
+
+    paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {
+      var ctx = this.ctx;
+      var width = img.width, height = img.height;
+      var fillColor = this.current.fillColor;
+      var isPatternFill = this.current.patternFill;
+
+      var glyph = this.processingType3;
+
+      if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
+        if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
+          glyph.compiled =
+            compileType3Glyph({data: img.data, width: width, height: height});
+        } else {
+          glyph.compiled = null;
+        }
+      }
+
+      if (glyph && glyph.compiled) {
+        glyph.compiled(ctx);
+        return;
+      }
+
+      var maskCanvas = CachedCanvases.getCanvas('maskCanvas', width, height);
+      var maskCtx = maskCanvas.context;
+      maskCtx.save();
+
+      putBinaryImageMask(maskCtx, img);
+
+      maskCtx.globalCompositeOperation = 'source-in';
+
+      maskCtx.fillStyle = isPatternFill ?
+                          fillColor.getPattern(maskCtx, this) : fillColor;
+      maskCtx.fillRect(0, 0, width, height);
+
+      maskCtx.restore();
+
+      this.paintInlineImageXObject(maskCanvas.canvas);
+    },
+
+    paintImageMaskXObjectRepeat:
+      function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX,
+                                                          scaleY, positions) {
+      var width = imgData.width;
+      var height = imgData.height;
+      var fillColor = this.current.fillColor;
+      var isPatternFill = this.current.patternFill;
+
+      var maskCanvas = CachedCanvases.getCanvas('maskCanvas', width, height);
+      var maskCtx = maskCanvas.context;
+      maskCtx.save();
+
+      putBinaryImageMask(maskCtx, imgData);
+
+      maskCtx.globalCompositeOperation = 'source-in';
+
+      maskCtx.fillStyle = isPatternFill ?
+                          fillColor.getPattern(maskCtx, this) : fillColor;
+      maskCtx.fillRect(0, 0, width, height);
+
+      maskCtx.restore();
+
+      var ctx = this.ctx;
+      for (var i = 0, ii = positions.length; i < ii; i += 2) {
+        ctx.save();
+        ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);
+        ctx.scale(1, -1);
+        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,
+          0, -1, 1, 1);
+        ctx.restore();
+      }
+    },
+
+    paintImageMaskXObjectGroup:
+      function CanvasGraphics_paintImageMaskXObjectGroup(images) {
+      var ctx = this.ctx;
+
+      var fillColor = this.current.fillColor;
+      var isPatternFill = this.current.patternFill;
+      for (var i = 0, ii = images.length; i < ii; i++) {
+        var image = images[i];
+        var width = image.width, height = image.height;
+
+        var maskCanvas = CachedCanvases.getCanvas('maskCanvas', width, height);
+        var maskCtx = maskCanvas.context;
+        maskCtx.save();
+
+        putBinaryImageMask(maskCtx, image);
+
+        maskCtx.globalCompositeOperation = 'source-in';
+
+        maskCtx.fillStyle = isPatternFill ?
+                            fillColor.getPattern(maskCtx, this) : fillColor;
+        maskCtx.fillRect(0, 0, width, height);
+
+        maskCtx.restore();
+
+        ctx.save();
+        ctx.transform.apply(ctx, image.transform);
+        ctx.scale(1, -1);
+        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,
+                      0, -1, 1, 1);
+        ctx.restore();
+      }
+    },
+
+    paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
+      var imgData = this.objs.get(objId);
+      if (!imgData) {
+        warn('Dependent image isn\'t ready yet');
+        return;
+      }
+
+      this.paintInlineImageXObject(imgData);
+    },
+
+    paintImageXObjectRepeat:
+      function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY,
+                                                          positions) {
+      var imgData = this.objs.get(objId);
+      if (!imgData) {
+        warn('Dependent image isn\'t ready yet');
+        return;
+      }
+
+      var width = imgData.width;
+      var height = imgData.height;
+      var map = [];
+      for (var i = 0, ii = positions.length; i < ii; i += 2) {
+        map.push({transform: [scaleX, 0, 0, scaleY, positions[i],
+                 positions[i + 1]], x: 0, y: 0, w: width, h: height});
+      }
+      this.paintInlineImageXObjectGroup(imgData, map);
+    },
+
+    paintInlineImageXObject:
+      function CanvasGraphics_paintInlineImageXObject(imgData) {
+      var width = imgData.width;
+      var height = imgData.height;
+      var ctx = this.ctx;
+
+      this.save();
+      // scale the image to the unit square
+      ctx.scale(1 / width, -1 / height);
+
+      var currentTransform = ctx.mozCurrentTransformInverse;
+      var a = currentTransform[0], b = currentTransform[1];
+      var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
+      var c = currentTransform[2], d = currentTransform[3];
+      var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
+
+      var imgToPaint, tmpCanvas;
+      // instanceof HTMLElement does not work in jsdom node.js module
+      if (imgData instanceof HTMLElement || !imgData.data) {
+        imgToPaint = imgData;
+      } else {
+        tmpCanvas = CachedCanvases.getCanvas('inlineImage', width, height);
+        var tmpCtx = tmpCanvas.context;
+        putBinaryImageData(tmpCtx, imgData);
+        imgToPaint = tmpCanvas.canvas;
+      }
+
+      var paintWidth = width, paintHeight = height;
+      var tmpCanvasId = 'prescale1';
+      // Vertial or horizontal scaling shall not be more than 2 to not loose the
+      // pixels during drawImage operation, painting on the temporary canvas(es)
+      // that are twice smaller in size
+      while ((widthScale > 2 && paintWidth > 1) ||
+             (heightScale > 2 && paintHeight > 1)) {
+        var newWidth = paintWidth, newHeight = paintHeight;
+        if (widthScale > 2 && paintWidth > 1) {
+          newWidth = Math.ceil(paintWidth / 2);
+          widthScale /= paintWidth / newWidth;
+        }
+        if (heightScale > 2 && paintHeight > 1) {
+          newHeight = Math.ceil(paintHeight / 2);
+          heightScale /= paintHeight / newHeight;
+        }
+        tmpCanvas = CachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
+        tmpCtx = tmpCanvas.context;
+        tmpCtx.clearRect(0, 0, newWidth, newHeight);
+        tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,
+                                     0, 0, newWidth, newHeight);
+        imgToPaint = tmpCanvas.canvas;
+        paintWidth = newWidth;
+        paintHeight = newHeight;
+        tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';
+      }
+      ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,
+                                0, -height, width, height);
+
+      if (this.imageLayer) {
+        var position = this.getCanvasPosition(0, -height);
+        this.imageLayer.appendImage({
+          imgData: imgData,
+          left: position[0],
+          top: position[1],
+          width: width / currentTransform[0],
+          height: height / currentTransform[3]
+        });
+      }
+      this.restore();
+    },
+
+    paintInlineImageXObjectGroup:
+      function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {
+      var ctx = this.ctx;
+      var w = imgData.width;
+      var h = imgData.height;
+
+      var tmpCanvas = CachedCanvases.getCanvas('inlineImage', w, h);
+      var tmpCtx = tmpCanvas.context;
+      putBinaryImageData(tmpCtx, imgData);
+
+      for (var i = 0, ii = map.length; i < ii; i++) {
+        var entry = map[i];
+        ctx.save();
+        ctx.transform.apply(ctx, entry.transform);
+        ctx.scale(1, -1);
+        ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h,
+                      0, -1, 1, 1);
+        if (this.imageLayer) {
+          var position = this.getCanvasPosition(entry.x, entry.y);
+          this.imageLayer.appendImage({
+            imgData: imgData,
+            left: position[0],
+            top: position[1],
+            width: w,
+            height: h
+          });
+        }
+        ctx.restore();
+      }
+    },
+
+    paintSolidColorImageMask:
+      function CanvasGraphics_paintSolidColorImageMask() {
+        this.ctx.fillRect(0, 0, 1, 1);
+    },
+
+    // Marked content
+
+    markPoint: function CanvasGraphics_markPoint(tag) {
+      // TODO Marked content.
+    },
+    markPointProps: function CanvasGraphics_markPointProps(tag, properties) {
+      // TODO Marked content.
+    },
+    beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {
+      // TODO Marked content.
+    },
+    beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(
+                                        tag, properties) {
+      // TODO Marked content.
+    },
+    endMarkedContent: function CanvasGraphics_endMarkedContent() {
+      // TODO Marked content.
+    },
+
+    // Compatibility
+
+    beginCompat: function CanvasGraphics_beginCompat() {
+      // TODO ignore undefined operators (should we do that anyway?)
+    },
+    endCompat: function CanvasGraphics_endCompat() {
+      // TODO stop ignoring undefined operators
+    },
+
+    // Helper functions
+
+    consumePath: function CanvasGraphics_consumePath() {
+      var ctx = this.ctx;
+      if (this.pendingClip) {
+        if (this.pendingClip === EO_CLIP) {
+          if (ctx.mozFillRule !== undefined) {
+            ctx.mozFillRule = 'evenodd';
+            ctx.clip();
+            ctx.mozFillRule = 'nonzero';
+          } else {
+            try {
+              ctx.clip('evenodd');
+            } catch (ex) {
+              // shouldn't really happen, but browsers might think differently
+              ctx.clip();
+            }
+          }
+        } else {
+          ctx.clip();
+        }
+        this.pendingClip = null;
+      }
+      ctx.beginPath();
+    },
+    getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) {
+      if (this.cachedGetSinglePixelWidth === null) {
+        var inverse = this.ctx.mozCurrentTransformInverse;
+        // max of the current horizontal and vertical scale
+        this.cachedGetSinglePixelWidth = Math.sqrt(Math.max(
+          (inverse[0] * inverse[0] + inverse[1] * inverse[1]),
+          (inverse[2] * inverse[2] + inverse[3] * inverse[3])));
+      }
+      return this.cachedGetSinglePixelWidth;
+    },
+    getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {
+        var transform = this.ctx.mozCurrentTransform;
+        return [
+          transform[0] * x + transform[2] * y + transform[4],
+          transform[1] * x + transform[3] * y + transform[5]
+        ];
+    }
+  };
+
+  for (var op in OPS) {
+    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];
+  }
+
+  return CanvasGraphics;
+})();
+
+
+var WebGLUtils = (function WebGLUtilsClosure() {
+  function loadShader(gl, code, shaderType) {
+    var shader = gl.createShader(shaderType);
+    gl.shaderSource(shader, code);
+    gl.compileShader(shader);
+    var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
+    if (!compiled) {
+      var errorMsg = gl.getShaderInfoLog(shader);
+      throw new Error('Error during shader compilation: ' + errorMsg);
+    }
+    return shader;
+  }
+  function createVertexShader(gl, code) {
+    return loadShader(gl, code, gl.VERTEX_SHADER);
+  }
+  function createFragmentShader(gl, code) {
+    return loadShader(gl, code, gl.FRAGMENT_SHADER);
+  }
+  function createProgram(gl, shaders) {
+    var program = gl.createProgram();
+    for (var i = 0, ii = shaders.length; i < ii; ++i) {
+      gl.attachShader(program, shaders[i]);
+    }
+    gl.linkProgram(program);
+    var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
+    if (!linked) {
+      var errorMsg = gl.getProgramInfoLog(program);
+      throw new Error('Error during program linking: ' + errorMsg);
+    }
+    return program;
+  }
+  function createTexture(gl, image, textureId) {
+    gl.activeTexture(textureId);
+    var texture = gl.createTexture();
+    gl.bindTexture(gl.TEXTURE_2D, texture);
+
+    // Set the parameters so we can render any size image.
+    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
+    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
+    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
+    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
+
+    // Upload the image into the texture.
+    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
+    return texture;
+  }
+
+  var currentGL, currentCanvas;
+  function generateGL() {
+    if (currentGL) {
+      return;
+    }
+    currentCanvas = document.createElement('canvas');
+    currentGL = currentCanvas.getContext('webgl',
+      { premultipliedalpha: false });
+  }
+
+  var smaskVertexShaderCode = '\
+  attribute vec2 a_position;                                    \
+  attribute vec2 a_texCoord;                                    \
+                                                                \
+  uniform vec2 u_resolution;                                    \
+                                                                \
+  varying vec2 v_texCoord;                                      \
+                                                                \
+  void main() {                                                 \
+    vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0;   \
+    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \
+                                                                \
+    v_texCoord = a_texCoord;                                    \
+  }                                                             ';
+
+  var smaskFragmentShaderCode = '\
+  precision mediump float;                                      \
+                                                                \
+  uniform vec4 u_backdrop;                                      \
+  uniform int u_subtype;                                        \
+  uniform sampler2D u_image;                                    \
+  uniform sampler2D u_mask;                                     \
+                                                                \
+  varying vec2 v_texCoord;                                      \
+                                                                \
+  void main() {                                                 \
+    vec4 imageColor = texture2D(u_image, v_texCoord);           \
+    vec4 maskColor = texture2D(u_mask, v_texCoord);             \
+    if (u_backdrop.a > 0.0) {                                   \
+      maskColor.rgb = maskColor.rgb * maskColor.a +             \
+                      u_backdrop.rgb * (1.0 - maskColor.a);     \
+    }                                                           \
+    float lum;                                                  \
+    if (u_subtype == 0) {                                       \
+      lum = maskColor.a;                                        \
+    } else {                                                    \
+      lum = maskColor.r * 0.3 + maskColor.g * 0.59 +            \
+            maskColor.b * 0.11;                                 \
+    }                                                           \
+    imageColor.a *= lum;                                        \
+    imageColor.rgb *= imageColor.a;                             \
+    gl_FragColor = imageColor;                                  \
+  }                                                             ';
+
+  var smaskCache = null;
+
+  function initSmaskGL() {
+    var canvas, gl;
+
+    generateGL();
+    canvas = currentCanvas;
+    currentCanvas = null;
+    gl = currentGL;
+    currentGL = null;
+
+    // setup a GLSL program
+    var vertexShader = createVertexShader(gl, smaskVertexShaderCode);
+    var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
+    var program = createProgram(gl, [vertexShader, fragmentShader]);
+    gl.useProgram(program);
+
+    var cache = {};
+    cache.gl = gl;
+    cache.canvas = canvas;
+    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
+    cache.positionLocation = gl.getAttribLocation(program, 'a_position');
+    cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');
+    cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');
+
+    var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');
+    var texLayerLocation = gl.getUniformLocation(program, 'u_image');
+    var texMaskLocation = gl.getUniformLocation(program, 'u_mask');
+
+    // provide texture coordinates for the rectangle.
+    var texCoordBuffer = gl.createBuffer();
+    gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
+    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
+      0.0,  0.0,
+      1.0,  0.0,
+      0.0,  1.0,
+      0.0,  1.0,
+      1.0,  0.0,
+      1.0,  1.0]), gl.STATIC_DRAW);
+    gl.enableVertexAttribArray(texCoordLocation);
+    gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
+
+    gl.uniform1i(texLayerLocation, 0);
+    gl.uniform1i(texMaskLocation, 1);
+
+    smaskCache = cache;
+  }
+
+  function composeSMask(layer, mask, properties) {
+    var width = layer.width, height = layer.height;
+
+    if (!smaskCache) {
+      initSmaskGL();
+    }
+    var cache = smaskCache,canvas = cache.canvas, gl = cache.gl;
+    canvas.width = width;
+    canvas.height = height;
+    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
+    gl.uniform2f(cache.resolutionLocation, width, height);
+
+    if (properties.backdrop) {
+      gl.uniform4f(cache.resolutionLocation, properties.backdrop[0],
+                   properties.backdrop[1], properties.backdrop[2], 1);
+    } else {
+      gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);
+    }
+    gl.uniform1i(cache.subtypeLocation,
+                 properties.subtype === 'Luminosity' ? 1 : 0);
+
+    // Create a textures
+    var texture = createTexture(gl, layer, gl.TEXTURE0);
+    var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
+
+
+    // Create a buffer and put a single clipspace rectangle in
+    // it (2 triangles)
+    var buffer = gl.createBuffer();
+    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
+    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
+      0, 0,
+      width, 0,
+      0, height,
+      0, height,
+      width, 0,
+      width, height]), gl.STATIC_DRAW);
+    gl.enableVertexAttribArray(cache.positionLocation);
+    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
+
+    // draw
+    gl.clearColor(0, 0, 0, 0);
+    gl.enable(gl.BLEND);
+    gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
+    gl.clear(gl.COLOR_BUFFER_BIT);
+
+    gl.drawArrays(gl.TRIANGLES, 0, 6);
+
+    gl.flush();
+
+    gl.deleteTexture(texture);
+    gl.deleteTexture(maskTexture);
+    gl.deleteBuffer(buffer);
+
+    return canvas;
+  }
+
+  var figuresVertexShaderCode = '\
+  attribute vec2 a_position;                                    \
+  attribute vec3 a_color;                                       \
+                                                                \
+  uniform vec2 u_resolution;                                    \
+  uniform vec2 u_scale;                                         \
+  uniform vec2 u_offset;                                        \
+                                                                \
+  varying vec4 v_color;                                         \
+                                                                \
+  void main() {                                                 \
+    vec2 position = (a_position + u_offset) * u_scale;          \
+    vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0;     \
+    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \
+                                                                \
+    v_color = vec4(a_color / 255.0, 1.0);                       \
+  }                                                             ';
+
+  var figuresFragmentShaderCode = '\
+  precision mediump float;                                      \
+                                                                \
+  varying vec4 v_color;                                         \
+                                                                \
+  void main() {                                                 \
+    gl_FragColor = v_color;                                     \
+  }                                                             ';
+
+  var figuresCache = null;
+
+  function initFiguresGL() {
+    var canvas, gl;
+
+    generateGL();
+    canvas = currentCanvas;
+    currentCanvas = null;
+    gl = currentGL;
+    currentGL = null;
+
+    // setup a GLSL program
+    var vertexShader = createVertexShader(gl, figuresVertexShaderCode);
+    var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
+    var program = createProgram(gl, [vertexShader, fragmentShader]);
+    gl.useProgram(program);
+
+    var cache = {};
+    cache.gl = gl;
+    cache.canvas = canvas;
+    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
+    cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');
+    cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');
+    cache.positionLocation = gl.getAttribLocation(program, 'a_position');
+    cache.colorLocation = gl.getAttribLocation(program, 'a_color');
+
+    figuresCache = cache;
+  }
+
+  function drawFigures(width, height, backgroundColor, figures, context) {
+    if (!figuresCache) {
+      initFiguresGL();
+    }
+    var cache = figuresCache, canvas = cache.canvas, gl = cache.gl;
+
+    canvas.width = width;
+    canvas.height = height;
+    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
+    gl.uniform2f(cache.resolutionLocation, width, height);
+
+    // count triangle points
+    var count = 0;
+    var i, ii, rows;
+    for (i = 0, ii = figures.length; i < ii; i++) {
+      switch (figures[i].type) {
+        case 'lattice':
+          rows = (figures[i].coords.length / figures[i].verticesPerRow) | 0;
+          count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
+          break;
+        case 'triangles':
+          count += figures[i].coords.length;
+          break;
+      }
+    }
+    // transfer data
+    var coords = new Float32Array(count * 2);
+    var colors = new Uint8Array(count * 3);
+    var coordsMap = context.coords, colorsMap = context.colors;
+    var pIndex = 0, cIndex = 0;
+    for (i = 0, ii = figures.length; i < ii; i++) {
+      var figure = figures[i], ps = figure.coords, cs = figure.colors;
+      switch (figure.type) {
+        case 'lattice':
+          var cols = figure.verticesPerRow;
+          rows = (ps.length / cols) | 0;
+          for (var row = 1; row < rows; row++) {
+            var offset = row * cols + 1;
+            for (var col = 1; col < cols; col++, offset++) {
+              coords[pIndex] = coordsMap[ps[offset - cols - 1]];
+              coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
+              coords[pIndex + 2] = coordsMap[ps[offset - cols]];
+              coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];
+              coords[pIndex + 4] = coordsMap[ps[offset - 1]];
+              coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];
+              colors[cIndex] = colorsMap[cs[offset - cols - 1]];
+              colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];
+              colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];
+              colors[cIndex + 3] = colorsMap[cs[offset - cols]];
+              colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];
+              colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];
+              colors[cIndex + 6] = colorsMap[cs[offset - 1]];
+              colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];
+              colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];
+
+              coords[pIndex + 6] = coords[pIndex + 2];
+              coords[pIndex + 7] = coords[pIndex + 3];
+              coords[pIndex + 8] = coords[pIndex + 4];
+              coords[pIndex + 9] = coords[pIndex + 5];
+              coords[pIndex + 10] = coordsMap[ps[offset]];
+              coords[pIndex + 11] = coordsMap[ps[offset] + 1];
+              colors[cIndex + 9] = colors[cIndex + 3];
+              colors[cIndex + 10] = colors[cIndex + 4];
+              colors[cIndex + 11] = colors[cIndex + 5];
+              colors[cIndex + 12] = colors[cIndex + 6];
+              colors[cIndex + 13] = colors[cIndex + 7];
+              colors[cIndex + 14] = colors[cIndex + 8];
+              colors[cIndex + 15] = colorsMap[cs[offset]];
+              colors[cIndex + 16] = colorsMap[cs[offset] + 1];
+              colors[cIndex + 17] = colorsMap[cs[offset] + 2];
+              pIndex += 12;
+              cIndex += 18;
+            }
+          }
+          break;
+        case 'triangles':
+          for (var j = 0, jj = ps.length; j < jj; j++) {
+            coords[pIndex] = coordsMap[ps[j]];
+            coords[pIndex + 1] = coordsMap[ps[j] + 1];
+            colors[cIndex] = colorsMap[cs[i]];
+            colors[cIndex + 1] = colorsMap[cs[j] + 1];
+            colors[cIndex + 2] = colorsMap[cs[j] + 2];
+            pIndex += 2;
+            cIndex += 3;
+          }
+          break;
+      }
+    }
+
+    // draw
+    if (backgroundColor) {
+      gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255,
+                    backgroundColor[2] / 255, 1.0);
+    } else {
+      gl.clearColor(0, 0, 0, 0);
+    }
+    gl.clear(gl.COLOR_BUFFER_BIT);
+
+    var coordsBuffer = gl.createBuffer();
+    gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
+    gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);
+    gl.enableVertexAttribArray(cache.positionLocation);
+    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
+
+    var colorsBuffer = gl.createBuffer();
+    gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);
+    gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);
+    gl.enableVertexAttribArray(cache.colorLocation);
+    gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false,
+                           0, 0);
+
+    gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);
+    gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);
+
+    gl.drawArrays(gl.TRIANGLES, 0, count);
+
+    gl.flush();
+
+    gl.deleteBuffer(coordsBuffer);
+    gl.deleteBuffer(colorsBuffer);
+
+    return canvas;
+  }
+
+  function cleanup() {
+    if (smaskCache && smaskCache.canvas) {
+      smaskCache.canvas.width = 0;
+      smaskCache.canvas.height = 0;
+    }
+    if (figuresCache && figuresCache.canvas) {
+      figuresCache.canvas.width = 0;
+      figuresCache.canvas.height = 0;
+    }
+    smaskCache = null;
+    figuresCache = null;
+  }
+
+  return {
+    get isEnabled() {
+      if (PDFJS.disableWebGL) {
+        return false;
+      }
+      var enabled = false;
+      try {
+        generateGL();
+        enabled = !!currentGL;
+      } catch (e) { }
+      return shadow(this, 'isEnabled', enabled);
+    },
+    composeSMask: composeSMask,
+    drawFigures: drawFigures,
+    clear: cleanup
+  };
+})();
+
+
+var ShadingIRs = {};
+
+ShadingIRs.RadialAxial = {
+  fromIR: function RadialAxial_fromIR(raw) {
+    var type = raw[1];
+    var colorStops = raw[2];
+    var p0 = raw[3];
+    var p1 = raw[4];
+    var r0 = raw[5];
+    var r1 = raw[6];
+    return {
+      type: 'Pattern',
+      getPattern: function RadialAxial_getPattern(ctx) {
+        var grad;
+        if (type === 'axial') {
+          grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
+        } else if (type === 'radial') {
+          grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
+        }
+
+        for (var i = 0, ii = colorStops.length; i < ii; ++i) {
+          var c = colorStops[i];
+          grad.addColorStop(c[0], c[1]);
+        }
+        return grad;
+      }
+    };
+  }
+};
+
+var createMeshCanvas = (function createMeshCanvasClosure() {
+  function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
+    // Very basic Gouraud-shaded triangle rasterization algorithm.
+    var coords = context.coords, colors = context.colors;
+    var bytes = data.data, rowSize = data.width * 4;
+    var tmp;
+    if (coords[p1 + 1] > coords[p2 + 1]) {
+      tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;
+    }
+    if (coords[p2 + 1] > coords[p3 + 1]) {
+      tmp = p2; p2 = p3; p3 = tmp; tmp = c2; c2 = c3; c3 = tmp;
+    }
+    if (coords[p1 + 1] > coords[p2 + 1]) {
+      tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;
+    }
+    var x1 = (coords[p1] + context.offsetX) * context.scaleX;
+    var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
+    var x2 = (coords[p2] + context.offsetX) * context.scaleX;
+    var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
+    var x3 = (coords[p3] + context.offsetX) * context.scaleX;
+    var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
+    if (y1 >= y3) {
+      return;
+    }
+    var c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2];
+    var c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2];
+    var c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2];
+
+    var minY = Math.round(y1), maxY = Math.round(y3);
+    var xa, car, cag, cab;
+    var xb, cbr, cbg, cbb;
+    var k;
+    for (var y = minY; y <= maxY; y++) {
+      if (y < y2) {
+        k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);
+        xa = x1 - (x1 - x2) * k;
+        car = c1r - (c1r - c2r) * k;
+        cag = c1g - (c1g - c2g) * k;
+        cab = c1b - (c1b - c2b) * k;
+      } else {
+        k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);
+        xa = x2 - (x2 - x3) * k;
+        car = c2r - (c2r - c3r) * k;
+        cag = c2g - (c2g - c3g) * k;
+        cab = c2b - (c2b - c3b) * k;
+      }
+      k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);
+      xb = x1 - (x1 - x3) * k;
+      cbr = c1r - (c1r - c3r) * k;
+      cbg = c1g - (c1g - c3g) * k;
+      cbb = c1b - (c1b - c3b) * k;
+      var x1_ = Math.round(Math.min(xa, xb));
+      var x2_ = Math.round(Math.max(xa, xb));
+      var j = rowSize * y + x1_ * 4;
+      for (var x = x1_; x <= x2_; x++) {
+        k = (xa - x) / (xa - xb);
+        k = k < 0 ? 0 : k > 1 ? 1 : k;
+        bytes[j++] = (car - (car - cbr) * k) | 0;
+        bytes[j++] = (cag - (cag - cbg) * k) | 0;
+        bytes[j++] = (cab - (cab - cbb) * k) | 0;
+        bytes[j++] = 255;
+      }
+    }
+  }
+
+  function drawFigure(data, figure, context) {
+    var ps = figure.coords;
+    var cs = figure.colors;
+    var i, ii;
+    switch (figure.type) {
+      case 'lattice':
+        var verticesPerRow = figure.verticesPerRow;
+        var rows = Math.floor(ps.length / verticesPerRow) - 1;
+        var cols = verticesPerRow - 1;
+        for (i = 0; i < rows; i++) {
+          var q = i * verticesPerRow;
+          for (var j = 0; j < cols; j++, q++) {
+            drawTriangle(data, context,
+              ps[q], ps[q + 1], ps[q + verticesPerRow],
+              cs[q], cs[q + 1], cs[q + verticesPerRow]);
+            drawTriangle(data, context,
+              ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow],
+              cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
+          }
+        }
+        break;
+      case 'triangles':
+        for (i = 0, ii = ps.length; i < ii; i += 3) {
+          drawTriangle(data, context,
+            ps[i], ps[i + 1], ps[i + 2],
+            cs[i], cs[i + 1], cs[i + 2]);
+        }
+        break;
+      default:
+        error('illigal figure');
+        break;
+    }
+  }
+
+  function createMeshCanvas(bounds, combinesScale, coords, colors, figures,
+                            backgroundColor) {
+    // we will increase scale on some weird factor to let antialiasing take
+    // care of "rough" edges
+    var EXPECTED_SCALE = 1.1;
+    // MAX_PATTERN_SIZE is used to avoid OOM situation.
+    var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough
+
+    var offsetX = Math.floor(bounds[0]);
+    var offsetY = Math.floor(bounds[1]);
+    var boundsWidth = Math.ceil(bounds[2]) - offsetX;
+    var boundsHeight = Math.ceil(bounds[3]) - offsetY;
+
+    var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] *
+      EXPECTED_SCALE)), MAX_PATTERN_SIZE);
+    var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] *
+      EXPECTED_SCALE)), MAX_PATTERN_SIZE);
+    var scaleX = boundsWidth / width;
+    var scaleY = boundsHeight / height;
+
+    var context = {
+      coords: coords,
+      colors: colors,
+      offsetX: -offsetX,
+      offsetY: -offsetY,
+      scaleX: 1 / scaleX,
+      scaleY: 1 / scaleY
+    };
+
+    var canvas, tmpCanvas, i, ii;
+    if (WebGLUtils.isEnabled) {
+      canvas = WebGLUtils.drawFigures(width, height, backgroundColor,
+                                      figures, context);
+
+      // https://bugzilla.mozilla.org/show_bug.cgi?id=972126
+      tmpCanvas = CachedCanvases.getCanvas('mesh', width, height, false);
+      tmpCanvas.context.drawImage(canvas, 0, 0);
+      canvas = tmpCanvas.canvas;
+    } else {
+      tmpCanvas = CachedCanvases.getCanvas('mesh', width, height, false);
+      var tmpCtx = tmpCanvas.context;
+
+      var data = tmpCtx.createImageData(width, height);
+      if (backgroundColor) {
+        var bytes = data.data;
+        for (i = 0, ii = bytes.length; i < ii; i += 4) {
+          bytes[i] = backgroundColor[0];
+          bytes[i + 1] = backgroundColor[1];
+          bytes[i + 2] = backgroundColor[2];
+          bytes[i + 3] = 255;
+        }
+      }
+      for (i = 0; i < figures.length; i++) {
+        drawFigure(data, figures[i], context);
+      }
+      tmpCtx.putImageData(data, 0, 0);
+      canvas = tmpCanvas.canvas;
+    }
+
+    return {canvas: canvas, offsetX: offsetX, offsetY: offsetY,
+            scaleX: scaleX, scaleY: scaleY};
+  }
+  return createMeshCanvas;
+})();
+
+ShadingIRs.Mesh = {
+  fromIR: function Mesh_fromIR(raw) {
+    //var type = raw[1];
+    var coords = raw[2];
+    var colors = raw[3];
+    var figures = raw[4];
+    var bounds = raw[5];
+    var matrix = raw[6];
+    //var bbox = raw[7];
+    var background = raw[8];
+    return {
+      type: 'Pattern',
+      getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
+        var scale;
+        if (shadingFill) {
+          scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
+        } else {
+          // Obtain scale from matrix and current transformation matrix.
+          scale = Util.singularValueDecompose2dScale(owner.baseTransform);
+          if (matrix) {
+            var matrixScale = Util.singularValueDecompose2dScale(matrix);
+            scale = [scale[0] * matrixScale[0],
+                     scale[1] * matrixScale[1]];
+          }
+        }
+
+
+        // Rasterizing on the main thread since sending/queue large canvases
+        // might cause OOM.
+        var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords,
+          colors, figures, shadingFill ? null : background);
+
+        if (!shadingFill) {
+          ctx.setTransform.apply(ctx, owner.baseTransform);
+          if (matrix) {
+            ctx.transform.apply(ctx, matrix);
+          }
+        }
+
+        ctx.translate(temporaryPatternCanvas.offsetX,
+                      temporaryPatternCanvas.offsetY);
+        ctx.scale(temporaryPatternCanvas.scaleX,
+                  temporaryPatternCanvas.scaleY);
+
+        return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');
+      }
+    };
+  }
+};
+
+ShadingIRs.Dummy = {
+  fromIR: function Dummy_fromIR() {
+    return {
+      type: 'Pattern',
+      getPattern: function Dummy_fromIR_getPattern() {
+        return 'hotpink';
+      }
+    };
+  }
+};
+
+function getShadingPatternFromIR(raw) {
+  var shadingIR = ShadingIRs[raw[0]];
+  if (!shadingIR) {
+    error('Unknown IR type: ' + raw[0]);
+  }
+  return shadingIR.fromIR(raw);
+}
+
+var TilingPattern = (function TilingPatternClosure() {
+  var PaintType = {
+    COLORED: 1,
+    UNCOLORED: 2
+  };
+
+  var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough
+
+  function TilingPattern(IR, color, ctx, objs, commonObjs, baseTransform) {
+    this.operatorList = IR[2];
+    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
+    this.bbox = IR[4];
+    this.xstep = IR[5];
+    this.ystep = IR[6];
+    this.paintType = IR[7];
+    this.tilingType = IR[8];
+    this.color = color;
+    this.objs = objs;
+    this.commonObjs = commonObjs;
+    this.baseTransform = baseTransform;
+    this.type = 'Pattern';
+    this.ctx = ctx;
+  }
+
+  TilingPattern.prototype = {
+    createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
+      var operatorList = this.operatorList;
+      var bbox = this.bbox;
+      var xstep = this.xstep;
+      var ystep = this.ystep;
+      var paintType = this.paintType;
+      var tilingType = this.tilingType;
+      var color = this.color;
+      var objs = this.objs;
+      var commonObjs = this.commonObjs;
+
+      info('TilingType: ' + tilingType);
+
+      var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3];
+
+      var topLeft = [x0, y0];
+      // we want the canvas to be as large as the step size
+      var botRight = [x0 + xstep, y0 + ystep];
+
+      var width = botRight[0] - topLeft[0];
+      var height = botRight[1] - topLeft[1];
+
+      // Obtain scale from matrix and current transformation matrix.
+      var matrixScale = Util.singularValueDecompose2dScale(this.matrix);
+      var curMatrixScale = Util.singularValueDecompose2dScale(
+        this.baseTransform);
+      var combinedScale = [matrixScale[0] * curMatrixScale[0],
+        matrixScale[1] * curMatrixScale[1]];
+
+      // MAX_PATTERN_SIZE is used to avoid OOM situation.
+      // Use width and height values that are as close as possible to the end
+      // result when the pattern is used. Too low value makes the pattern look
+      // blurry. Too large value makes it look too crispy.
+      width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])),
+        MAX_PATTERN_SIZE);
+
+      height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])),
+        MAX_PATTERN_SIZE);
+
+      var tmpCanvas = CachedCanvases.getCanvas('pattern', width, height, true);
+      var tmpCtx = tmpCanvas.context;
+      var graphics = new CanvasGraphics(tmpCtx, commonObjs, objs);
+      graphics.groupLevel = owner.groupLevel;
+
+      this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color);
+
+      this.setScale(width, height, xstep, ystep);
+      this.transformToScale(graphics);
+
+      // transform coordinates to pattern space
+      var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];
+      graphics.transform.apply(graphics, tmpTranslate);
+
+      this.clipBbox(graphics, bbox, x0, y0, x1, y1);
+
+      graphics.executeOperatorList(operatorList);
+      return tmpCanvas.canvas;
+    },
+
+    setScale: function TilingPattern_setScale(width, height, xstep, ystep) {
+      this.scale = [width / xstep, height / ystep];
+    },
+
+    transformToScale: function TilingPattern_transformToScale(graphics) {
+      var scale = this.scale;
+      var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];
+      graphics.transform.apply(graphics, tmpScale);
+    },
+
+    scaleToContext: function TilingPattern_scaleToContext() {
+      var scale = this.scale;
+      this.ctx.scale(1 / scale[0], 1 / scale[1]);
+    },
+
+    clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
+      if (bbox && isArray(bbox) && bbox.length === 4) {
+        var bboxWidth = x1 - x0;
+        var bboxHeight = y1 - y0;
+        graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
+        graphics.clip();
+        graphics.endPath();
+      }
+    },
+
+    setFillAndStrokeStyleToContext:
+      function setFillAndStrokeStyleToContext(context, paintType, color) {
+        switch (paintType) {
+          case PaintType.COLORED:
+            var ctx = this.ctx;
+            context.fillStyle = ctx.fillStyle;
+            context.strokeStyle = ctx.strokeStyle;
+            break;
+          case PaintType.UNCOLORED:
+            var cssColor = Util.makeCssRgb(color[0], color[1], color[2]);
+            context.fillStyle = cssColor;
+            context.strokeStyle = cssColor;
+            break;
+          default:
+            error('Unsupported paint type: ' + paintType);
+        }
+      },
+
+    getPattern: function TilingPattern_getPattern(ctx, owner) {
+      var temporaryPatternCanvas = this.createPatternCanvas(owner);
+
+      ctx = this.ctx;
+      ctx.setTransform.apply(ctx, this.baseTransform);
+      ctx.transform.apply(ctx, this.matrix);
+      this.scaleToContext();
+
+      return ctx.createPattern(temporaryPatternCanvas, 'repeat');
+    }
+  };
+
+  return TilingPattern;
+})();
+
+
+PDFJS.disableFontFace = false;
+
+var FontLoader = {
+  insertRule: function fontLoaderInsertRule(rule) {
+    var styleElement = document.getElementById('PDFJS_FONT_STYLE_TAG');
+    if (!styleElement) {
+      styleElement = document.createElement('style');
+      styleElement.id = 'PDFJS_FONT_STYLE_TAG';
+      document.documentElement.getElementsByTagName('head')[0].appendChild(
+        styleElement);
+    }
+
+    var styleSheet = styleElement.sheet;
+    styleSheet.insertRule(rule, styleSheet.cssRules.length);
+  },
+
+  clear: function fontLoaderClear() {
+    var styleElement = document.getElementById('PDFJS_FONT_STYLE_TAG');
+    if (styleElement) {
+      styleElement.parentNode.removeChild(styleElement);
+    }
+//#if !(MOZCENTRAL)
+    this.nativeFontFaces.forEach(function(nativeFontFace) {
+      document.fonts.delete(nativeFontFace);
+    });
+    this.nativeFontFaces.length = 0;
+//#endif
+  },
+//#if !(MOZCENTRAL)
+  get loadTestFont() {
+    // This is a CFF font with 1 glyph for '.' that fills its entire width and
+    // height.
+    return shadow(this, 'loadTestFont', atob(
+      'T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' +
+      'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' +
+      'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' +
+      'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' +
+      'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' +
+      'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' +
+      'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' +
+      'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' +
+      'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' +
+      'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' +
+      'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' +
+      'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' +
+      'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' +
+      'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +
+      'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +
+      'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +
+      'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' +
+      'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' +
+      'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' +
+      'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' +
+      'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' +
+      'ABAAAAAAAAAAAD6AAAAAAAAA=='
+    ));
+  },
+
+  loadTestFontId: 0,
+
+  loadingContext: {
+    requests: [],
+    nextRequestId: 0
+  },
+
+  isSyncFontLoadingSupported: (function detectSyncFontLoadingSupport() {
+    if (isWorker) {
+      return false;
+    }
+
+    // User agent string sniffing is bad, but there is no reliable way to tell
+    // if font is fully loaded and ready to be used with canvas.
+    var userAgent = window.navigator.userAgent;
+    var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(userAgent);
+    if (m && m[1] >= 14) {
+      return true;
+    }
+    // TODO other browsers
+    if (userAgent === 'node') {
+      return true;
+    }
+    return false;
+  })(),
+
+  nativeFontFaces: [],
+
+  isFontLoadingAPISupported: (!isWorker && typeof document !== 'undefined' &&
+                              !!document.fonts),
+
+  addNativeFontFace: function fontLoader_addNativeFontFace(nativeFontFace) {
+    this.nativeFontFaces.push(nativeFontFace);
+    document.fonts.add(nativeFontFace);
+  },
+
+  bind: function fontLoaderBind(fonts, callback) {
+    assert(!isWorker, 'bind() shall be called from main thread');
+
+    var rules = [];
+    var fontsToLoad = [];
+    var fontLoadPromises = [];
+    for (var i = 0, ii = fonts.length; i < ii; i++) {
+      var font = fonts[i];
+
+      // Add the font to the DOM only once or skip if the font
+      // is already loaded.
+      if (font.attached || font.loading === false) {
+        continue;
+      }
+      font.attached = true;
+
+      if (this.isFontLoadingAPISupported) {
+        var nativeFontFace = font.createNativeFontFace();
+        if (nativeFontFace) {
+          fontLoadPromises.push(nativeFontFace.loaded);
+        }
+      } else {
+        var rule = font.bindDOM();
+        if (rule) {
+          rules.push(rule);
+          fontsToLoad.push(font);
+        }
+      }
+    }
+
+    var request = FontLoader.queueLoadingCallback(callback);
+    if (this.isFontLoadingAPISupported) {
+      Promise.all(fontsToLoad).then(function() {
+        request.complete();
+      });
+    } else if (rules.length > 0 && !this.isSyncFontLoadingSupported) {
+      FontLoader.prepareFontLoadEvent(rules, fontsToLoad, request);
+    } else {
+      request.complete();
+    }
+  },
+
+  queueLoadingCallback: function FontLoader_queueLoadingCallback(callback) {
+    function LoadLoader_completeRequest() {
+      assert(!request.end, 'completeRequest() cannot be called twice');
+      request.end = Date.now();
+
+      // sending all completed requests in order how they were queued
+      while (context.requests.length > 0 && context.requests[0].end) {
+        var otherRequest = context.requests.shift();
+        setTimeout(otherRequest.callback, 0);
+      }
+    }
+
+    var context = FontLoader.loadingContext;
+    var requestId = 'pdfjs-font-loading-' + (context.nextRequestId++);
+    var request = {
+      id: requestId,
+      complete: LoadLoader_completeRequest,
+      callback: callback,
+      started: Date.now()
+    };
+    context.requests.push(request);
+    return request;
+  },
+
+  prepareFontLoadEvent: function fontLoaderPrepareFontLoadEvent(rules,
+                                                                fonts,
+                                                                request) {
+      /** Hack begin */
+      // There's currently no event when a font has finished downloading so the
+      // following code is a dirty hack to 'guess' when a font is
+      // ready. It's assumed fonts are loaded in order, so add a known test
+      // font after the desired fonts and then test for the loading of that
+      // test font.
+
+      function int32(data, offset) {
+        return (data.charCodeAt(offset) << 24) |
+               (data.charCodeAt(offset + 1) << 16) |
+               (data.charCodeAt(offset + 2) << 8) |
+               (data.charCodeAt(offset + 3) & 0xff);
+      }
+
+      function spliceString(s, offset, remove, insert) {
+        var chunk1 = s.substr(0, offset);
+        var chunk2 = s.substr(offset + remove);
+        return chunk1 + insert + chunk2;
+      }
+
+      var i, ii;
+
+      var canvas = document.createElement('canvas');
+      canvas.width = 1;
+      canvas.height = 1;
+      var ctx = canvas.getContext('2d');
+
+      var called = 0;
+      function isFontReady(name, callback) {
+        called++;
+        // With setTimeout clamping this gives the font ~100ms to load.
+        if(called > 30) {
+          warn('Load test font never loaded.');
+          callback();
+          return;
+        }
+        ctx.font = '30px ' + name;
+        ctx.fillText('.', 0, 20);
+        var imageData = ctx.getImageData(0, 0, 1, 1);
+        if (imageData.data[3] > 0) {
+          callback();
+          return;
+        }
+        setTimeout(isFontReady.bind(null, name, callback));
+      }
+
+      var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++;
+      // Chromium seems to cache fonts based on a hash of the actual font data,
+      // so the font must be modified for each load test else it will appear to
+      // be loaded already.
+      // TODO: This could maybe be made faster by avoiding the btoa of the full
+      // font by splitting it in chunks before hand and padding the font id.
+      var data = this.loadTestFont;
+      var COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)
+      data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length,
+                          loadTestFontId);
+      // CFF checksum is important for IE, adjusting it
+      var CFF_CHECKSUM_OFFSET = 16;
+      var XXXX_VALUE = 0x58585858; // the "comment" filled with 'X'
+      var checksum = int32(data, CFF_CHECKSUM_OFFSET);
+      for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
+        checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;
+      }
+      if (i < loadTestFontId.length) { // align to 4 bytes boundary
+        checksum = (checksum - XXXX_VALUE +
+                    int32(loadTestFontId + 'XXX', i)) | 0;
+      }
+      data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));
+
+      var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';
+      var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' +
+                 url + '}';
+      FontLoader.insertRule(rule);
+
+      var names = [];
+      for (i = 0, ii = fonts.length; i < ii; i++) {
+        names.push(fonts[i].loadedName);
+      }
+      names.push(loadTestFontId);
+
+      var div = document.createElement('div');
+      div.setAttribute('style',
+                       'visibility: hidden;' +
+                       'width: 10px; height: 10px;' +
+                       'position: absolute; top: 0px; left: 0px;');
+      for (i = 0, ii = names.length; i < ii; ++i) {
+        var span = document.createElement('span');
+        span.textContent = 'Hi';
+        span.style.fontFamily = names[i];
+        div.appendChild(span);
+      }
+      document.body.appendChild(div);
+
+      isFontReady(loadTestFontId, function() {
+        document.body.removeChild(div);
+        request.complete();
+      });
+      /** Hack end */
+  }
+//#else
+//bind: function fontLoaderBind(fonts, callback) {
+//  assert(!isWorker, 'bind() shall be called from main thread');
+//
+//  for (var i = 0, ii = fonts.length; i < ii; i++) {
+//    var font = fonts[i];
+//    if (font.attached) {
+//      continue;
+//    }
+//
+//    font.attached = true;
+//    font.bindDOM()
+//  }
+//
+//  setTimeout(callback);
+//}
+//#endif
+};
+
+var FontFaceObject = (function FontFaceObjectClosure() {
+  function FontFaceObject(name, file, properties) {
+    this.compiledGlyphs = {};
+    if (arguments.length === 1) {
+      // importing translated data
+      var data = arguments[0];
+      for (var i in data) {
+        this[i] = data[i];
+      }
+      return;
+    }
+  }
+  FontFaceObject.prototype = {
+//#if !(MOZCENTRAL)
+    createNativeFontFace: function FontFaceObject_createNativeFontFace() {
+      if (!this.data) {
+        return null;
+      }
+
+      if (PDFJS.disableFontFace) {
+        this.disableFontFace = true;
+        return null;
+      }
+
+      var nativeFontFace = new FontFace(this.loadedName, this.data, {});
+
+      FontLoader.addNativeFontFace(nativeFontFace);
+
+      if (PDFJS.pdfBug && 'FontInspector' in globalScope &&
+          globalScope['FontInspector'].enabled) {
+        globalScope['FontInspector'].fontAdded(this);
+      }
+      return nativeFontFace;
+    },
+//#endif
+
+    bindDOM: function FontFaceObject_bindDOM() {
+      if (!this.data) {
+        return null;
+      }
+
+      if (PDFJS.disableFontFace) {
+        this.disableFontFace = true;
+        return null;
+      }
+
+      var data = bytesToString(new Uint8Array(this.data));
+      var fontName = this.loadedName;
+
+      // Add the font-face rule to the document
+      var url = ('url(data:' + this.mimetype + ';base64,' +
+                 window.btoa(data) + ');');
+      var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}';
+      FontLoader.insertRule(rule);
+
+      if (PDFJS.pdfBug && 'FontInspector' in globalScope &&
+          globalScope['FontInspector'].enabled) {
+        globalScope['FontInspector'].fontAdded(this, url);
+      }
+
+      return rule;
+    },
+
+    getPathGenerator: function FontLoader_getPathGenerator(objs, character) {
+      if (!(character in this.compiledGlyphs)) {
+        var js = objs.get(this.loadedName + '_path_' + character);
+        /*jshint -W054 */
+        this.compiledGlyphs[character] = new Function('c', 'size', js);
+      }
+      return this.compiledGlyphs[character];
+    }
+  };
+  return FontFaceObject;
+})();
+
+
+var ANNOT_MIN_SIZE = 10; // px
+
+var AnnotationUtils = (function AnnotationUtilsClosure() {
+  // TODO(mack): This dupes some of the logic in CanvasGraphics.setFont()
+  function setTextStyles(element, item, fontObj) {
+
+    var style = element.style;
+    style.fontSize = item.fontSize + 'px';
+    style.direction = item.fontDirection < 0 ? 'rtl': 'ltr';
+
+    if (!fontObj) {
+      return;
+    }
+
+    style.fontWeight = fontObj.black ?
+      (fontObj.bold ? 'bolder' : 'bold') :
+      (fontObj.bold ? 'bold' : 'normal');
+    style.fontStyle = fontObj.italic ? 'italic' : 'normal';
+
+    var fontName = fontObj.loadedName;
+    var fontFamily = fontName ? '"' + fontName + '", ' : '';
+    // Use a reasonable default font if the font doesn't specify a fallback
+    var fallbackName = fontObj.fallbackName || 'Helvetica, sans-serif';
+    style.fontFamily = fontFamily + fallbackName;
+  }
+
+  function initContainer(item, drawBorder) {
+    var container = document.createElement('section');
+    var cstyle = container.style;
+    var width = item.rect[2] - item.rect[0];
+    var height = item.rect[3] - item.rect[1];
+
+    var bWidth = item.borderWidth || 0;
+    if (bWidth) {
+      width = width - 2 * bWidth;
+      height = height - 2 * bWidth;
+      cstyle.borderWidth = bWidth + 'px';
+      var color = item.color;
+      if (drawBorder && color) {
+        cstyle.borderStyle = 'solid';
+        cstyle.borderColor = Util.makeCssRgb(Math.round(color[0] * 255),
+                                             Math.round(color[1] * 255),
+                                             Math.round(color[2] * 255));
+      }
+    }
+    cstyle.width = width + 'px';
+    cstyle.height = height + 'px';
+    return container;
+  }
+
+  function getHtmlElementForTextWidgetAnnotation(item, commonObjs) {
+    var element = document.createElement('div');
+    var width = item.rect[2] - item.rect[0];
+    var height = item.rect[3] - item.rect[1];
+    element.style.width = width + 'px';
+    element.style.height = height + 'px';
+    element.style.display = 'table';
+
+    var content = document.createElement('div');
+    content.textContent = item.fieldValue;
+    var textAlignment = item.textAlignment;
+    content.style.textAlign = ['left', 'center', 'right'][textAlignment];
+    content.style.verticalAlign = 'middle';
+    content.style.display = 'table-cell';
+
+    var fontObj = item.fontRefName ?
+      commonObjs.getData(item.fontRefName) : null;
+    setTextStyles(content, item, fontObj);
+
+    element.appendChild(content);
+
+    return element;
+  }
+
+  function getHtmlElementForTextAnnotation(item) {
+    var rect = item.rect;
+
+    // sanity check because of OOo-generated PDFs
+    if ((rect[3] - rect[1]) < ANNOT_MIN_SIZE) {
+      rect[3] = rect[1] + ANNOT_MIN_SIZE;
+    }
+    if ((rect[2] - rect[0]) < ANNOT_MIN_SIZE) {
+      rect[2] = rect[0] + (rect[3] - rect[1]); // make it square
+    }
+
+    var container = initContainer(item, false);
+    container.className = 'annotText';
+
+    var image  = document.createElement('img');
+    image.style.height = container.style.height;
+    image.style.width = container.style.width;
+    var iconName = item.name;
+    image.src = PDFJS.imageResourcesPath + 'annotation-' +
+      iconName.toLowerCase() + '.svg';
+    image.alt = '[{{type}} Annotation]';
+    image.dataset.l10nId = 'text_annotation_type';
+    image.dataset.l10nArgs = JSON.stringify({type: iconName});
+
+    var contentWrapper = document.createElement('div');
+    contentWrapper.className = 'annotTextContentWrapper';
+    contentWrapper.style.left = Math.floor(rect[2] - rect[0] + 5) + 'px';
+    contentWrapper.style.top = '-10px';
+
+    var content = document.createElement('div');
+    content.className = 'annotTextContent';
+    content.setAttribute('hidden', true);
+
+    var i, ii;
+    if (item.hasBgColor) {
+      var color = item.color;
+
+      // Enlighten the color (70%)
+      var BACKGROUND_ENLIGHT = 0.7;
+      var r = BACKGROUND_ENLIGHT * (1.0 - color[0]) + color[0];
+      var g = BACKGROUND_ENLIGHT * (1.0 - color[1]) + color[1];
+      var b = BACKGROUND_ENLIGHT * (1.0 - color[2]) + color[2];
+      content.style.backgroundColor = Util.makeCssRgb((r * 255) | 0,
+                                                      (g * 255) | 0,
+                                                      (b * 255) | 0);
+    }
+
+    var title = document.createElement('h1');
+    var text = document.createElement('p');
+    title.textContent = item.title;
+
+    if (!item.content && !item.title) {
+      content.setAttribute('hidden', true);
+    } else {
+      var e = document.createElement('span');
+      var lines = item.content.split(/(?:\r\n?|\n)/);
+      for (i = 0, ii = lines.length; i < ii; ++i) {
+        var line = lines[i];
+        e.appendChild(document.createTextNode(line));
+        if (i < (ii - 1)) {
+          e.appendChild(document.createElement('br'));
+        }
+      }
+      text.appendChild(e);
+
+      var pinned = false;
+
+      var showAnnotation = function showAnnotation(pin) {
+        if (pin) {
+          pinned = true;
+        }
+        if (content.hasAttribute('hidden')) {
+          container.style.zIndex += 1;
+          content.removeAttribute('hidden');
+        }
+      };
+
+      var hideAnnotation = function hideAnnotation(unpin) {
+        if (unpin) {
+          pinned = false;
+        }
+        if (!content.hasAttribute('hidden') && !pinned) {
+          container.style.zIndex -= 1;
+          content.setAttribute('hidden', true);
+        }
+      };
+
+      var toggleAnnotation = function toggleAnnotation() {
+        if (pinned) {
+          hideAnnotation(true);
+        } else {
+          showAnnotation(true);
+        }
+      };
+
+      image.addEventListener('click', function image_clickHandler() {
+        toggleAnnotation();
+      }, false);
+      image.addEventListener('mouseover', function image_mouseOverHandler() {
+        showAnnotation();
+      }, false);
+      image.addEventListener('mouseout', function image_mouseOutHandler() {
+        hideAnnotation();
+      }, false);
+
+      content.addEventListener('click', function content_clickHandler() {
+        hideAnnotation(true);
+      }, false);
+    }
+
+    content.appendChild(title);
+    content.appendChild(text);
+    contentWrapper.appendChild(content);
+    container.appendChild(image);
+    container.appendChild(contentWrapper);
+
+    return container;
+  }
+
+  function getHtmlElementForLinkAnnotation(item) {
+    var container = initContainer(item, true);
+    container.className = 'annotLink';
+
+    var link = document.createElement('a');
+    link.href = link.title = item.url || '';
+    if (item.url && PDFJS.openExternalLinksInNewWindow) {
+      link.target = '_blank';
+    }
+
+    container.appendChild(link);
+
+    return container;
+  }
+
+  function getHtmlElement(data, objs) {
+    switch (data.annotationType) {
+      case AnnotationType.WIDGET:
+        return getHtmlElementForTextWidgetAnnotation(data, objs);
+      case AnnotationType.TEXT:
+        return getHtmlElementForTextAnnotation(data);
+      case AnnotationType.LINK:
+        return getHtmlElementForLinkAnnotation(data);
+      default:
+        throw new Error('Unsupported annotationType: ' + data.annotationType);
+    }
+  }
+
+  return {
+    getHtmlElement: getHtmlElement
+  };
+})();
+PDFJS.AnnotationUtils = AnnotationUtils;
+
+
+//#if (GENERIC || SINGLE_FILE)
+var SVG_DEFAULTS = {
+  fontStyle: 'normal',
+  fontWeight: 'normal',
+  fillColor: '#000000'
+};
+
+var convertImgDataToPng = (function convertImgDataToPngClosure() {
+  var PNG_HEADER =
+    new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
+
+  var CHUNK_WRAPPER_SIZE = 12;
+
+  var crcTable = new Int32Array(256);
+  for (var i = 0; i < 256; i++) {
+    var c = i;
+    for (var h = 0; h < 8; h++) {
+      if (c & 1) {
+        c = 0xedB88320 ^ ((c >> 1) & 0x7fffffff);
+      } else {
+        c = (c >> 1) & 0x7fffffff;
+      }
+    }
+    crcTable[i] = c;
+  }
+
+  function crc32(data, start, end) {
+    var crc = -1;
+    for (var i = start; i < end; i++) {
+      var a = (crc ^ data[i]) & 0xff;
+      var b = crcTable[a];
+      crc = (crc >>> 8) ^ b;
+    }
+    return crc ^ -1;
+  }
+
+  function writePngChunk(type, body, data, offset) {
+    var p = offset;
+    var len = body.length;
+
+    data[p] = len >> 24 & 0xff;
+    data[p + 1] = len >> 16 & 0xff;
+    data[p + 2] = len >> 8 & 0xff;
+    data[p + 3] = len & 0xff;
+    p += 4;
+
+    data[p] = type.charCodeAt(0) & 0xff;
+    data[p + 1] = type.charCodeAt(1) & 0xff;
+    data[p + 2] = type.charCodeAt(2) & 0xff;
+    data[p + 3] = type.charCodeAt(3) & 0xff;
+    p += 4;
+
+    data.set(body, p);
+    p += body.length;
+
+    var crc = crc32(data, offset + 4, p);
+
+    data[p] = crc >> 24 & 0xff;
+    data[p + 1] = crc >> 16 & 0xff;
+    data[p + 2] = crc >> 8 & 0xff;
+    data[p + 3] = crc & 0xff;
+  }
+
+  function adler32(data, start, end) {
+    var a = 1;
+    var b = 0;
+    for (var i = start; i < end; ++i) {
+      a = (a + (data[i] & 0xff)) % 65521;
+      b = (b + a) % 65521;
+    }
+    return (b << 16) | a;
+  }
+
+  function encode(imgData, kind) {
+    var width = imgData.width;
+    var height = imgData.height;
+    var bitDepth, colorType, lineSize;
+    var bytes = imgData.data;
+
+    switch (kind) {
+      case ImageKind.GRAYSCALE_1BPP:
+        colorType = 0;
+        bitDepth = 1;
+        lineSize = (width + 7) >> 3;
+        break;
+      case ImageKind.RGB_24BPP:
+        colorType = 2;
+        bitDepth = 8;
+        lineSize = width * 3;
+        break;
+      case ImageKind.RGBA_32BPP:
+        colorType = 6;
+        bitDepth = 8;
+        lineSize = width * 4;
+        break;
+      default:
+        throw new Error('invalid format');
+    }
+
+    // prefix every row with predictor 0
+    var literals = new Uint8Array((1 + lineSize) * height);
+    var offsetLiterals = 0, offsetBytes = 0;
+    var y, i;
+    for (y = 0; y < height; ++y) {
+      literals[offsetLiterals++] = 0; // no prediction
+      literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize),
+                   offsetLiterals);
+      offsetBytes += lineSize;
+      offsetLiterals += lineSize;
+    }
+
+    if (kind === ImageKind.GRAYSCALE_1BPP) {
+      // inverting for B/W
+      offsetLiterals = 0;
+      for (y = 0; y < height; y++) {
+        offsetLiterals++; // skipping predictor
+        for (i = 0; i < lineSize; i++) {
+          literals[offsetLiterals++] ^= 0xFF;
+        }
+      }
+    }
+
+    var ihdr = new Uint8Array([
+      width >> 24 & 0xff,
+      width >> 16 & 0xff,
+      width >> 8 & 0xff,
+      width & 0xff,
+      height >> 24 & 0xff,
+      height >> 16 & 0xff,
+      height >> 8 & 0xff,
+      height & 0xff,
+      bitDepth, // bit depth
+      colorType, // color type
+      0x00, // compression method
+      0x00, // filter method
+      0x00 // interlace method
+    ]);
+
+    var len = literals.length;
+    var maxBlockLength = 0xFFFF;
+
+    var deflateBlocks = Math.ceil(len / maxBlockLength);
+    var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);
+    var pi = 0;
+    idat[pi++] = 0x78; // compression method and flags
+    idat[pi++] = 0x9c; // flags
+
+    var pos = 0;
+    while (len > maxBlockLength) {
+      // writing non-final DEFLATE blocks type 0 and length of 65535
+      idat[pi++] = 0x00;
+      idat[pi++] = 0xff;
+      idat[pi++] = 0xff;
+      idat[pi++] = 0x00;
+      idat[pi++] = 0x00;
+      idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
+      pi += maxBlockLength;
+      pos += maxBlockLength;
+      len -= maxBlockLength;
+    }
+
+    // writing non-final DEFLATE blocks type 0
+    idat[pi++] = 0x01;
+    idat[pi++] = len & 0xff;
+    idat[pi++] = len >> 8 & 0xff;
+    idat[pi++] = (~len & 0xffff) & 0xff;
+    idat[pi++] = (~len & 0xffff) >> 8 & 0xff;
+    idat.set(literals.subarray(pos), pi);
+    pi += literals.length - pos;
+
+    var adler = adler32(literals, 0, literals.length); // checksum
+    idat[pi++] = adler >> 24 & 0xff;
+    idat[pi++] = adler >> 16 & 0xff;
+    idat[pi++] = adler >> 8 & 0xff;
+    idat[pi++] = adler & 0xff;
+
+    // PNG will consists: header, IHDR+data, IDAT+data, and IEND.
+    var pngLength = PNG_HEADER.length + (CHUNK_WRAPPER_SIZE * 3) +
+                    ihdr.length + idat.length;
+    var data = new Uint8Array(pngLength);
+    var offset = 0;
+    data.set(PNG_HEADER, offset);
+    offset += PNG_HEADER.length;
+    writePngChunk('IHDR', ihdr, data, offset);
+    offset += CHUNK_WRAPPER_SIZE + ihdr.length;
+    writePngChunk('IDATA', idat, data, offset);
+    offset += CHUNK_WRAPPER_SIZE + idat.length;
+    writePngChunk('IEND', new Uint8Array(0), data, offset);
+
+    return PDFJS.createObjectURL(data, 'image/png');
+  }
+
+  return function convertImgDataToPng(imgData) {
+    var kind = (imgData.kind === undefined ?
+                ImageKind.GRAYSCALE_1BPP : imgData.kind);
+    return encode(imgData, kind);
+  };
+})();
+
+var SVGExtraState = (function SVGExtraStateClosure() {
+  function SVGExtraState() {
+    this.fontSizeScale = 1;
+    this.fontWeight = SVG_DEFAULTS.fontWeight;
+    this.fontSize = 0;
+
+    this.textMatrix = IDENTITY_MATRIX;
+    this.fontMatrix = FONT_IDENTITY_MATRIX;
+    this.leading = 0;
+
+    // Current point (in user coordinates)
+    this.x = 0;
+    this.y = 0;
+
+    // Start of text line (in text coordinates)
+    this.lineX = 0;
+    this.lineY = 0;
+
+    // Character and word spacing
+    this.charSpacing = 0;
+    this.wordSpacing = 0;
+    this.textHScale = 1;
+    this.textRise = 0;
+
+    // Default foreground and background colors
+    this.fillColor = SVG_DEFAULTS.fillColor;
+    this.strokeColor = '#000000';
+
+    this.fillAlpha = 1;
+    this.strokeAlpha = 1;
+    this.lineWidth = 1;
+    this.lineJoin = '';
+    this.lineCap = '';
+    this.miterLimit = 0;
+
+    this.dashArray = [];
+    this.dashPhase = 0;
+
+    this.dependencies = [];
+
+    // Clipping
+    this.clipId = '';
+    this.pendingClip = false;
+
+    this.maskId = '';
+  }
+
+  SVGExtraState.prototype = {
+    clone: function SVGExtraState_clone() {
+      return Object.create(this);
+    },
+    setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {
+      this.x = x;
+      this.y = y;
+    }
+  };
+  return SVGExtraState;
+})();
+
+var SVGGraphics = (function SVGGraphicsClosure() {
+  function createScratchSVG(width, height) {
+    var NS = 'http://www.w3.org/2000/svg';
+    var svg = document.createElementNS(NS, 'svg:svg');
+    svg.setAttributeNS(null, 'version', '1.1');
+    svg.setAttributeNS(null, 'width', width + 'px');
+    svg.setAttributeNS(null, 'height', height + 'px');
+    svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);
+    return svg;
+  }
+
+  function opListToTree(opList) {
+    var opTree = [];
+    var tmp = [];
+    var opListLen = opList.length;
+
+    for (var x = 0; x < opListLen; x++) {
+      if (opList[x].fn === 'save') {
+        opTree.push({'fnId': 92, 'fn': 'group', 'items': []});
+        tmp.push(opTree);
+        opTree = opTree[opTree.length - 1].items;
+        continue;
+      }
+
+      if(opList[x].fn === 'restore') {
+        opTree = tmp.pop();
+      } else {
+        opTree.push(opList[x]);
+      }
+    }
+    return opTree;
+  }
+
+  /**
+   * Formats float number.
+   * @param value {number} number to format.
+   * @returns {string}
+   */
+  function pf(value) {
+    if (value === (value | 0)) { // integer number
+      return value.toString();
+    }
+    var s = value.toFixed(10);
+    var i = s.length - 1;
+    if (s[i] !== '0') {
+      return s;
+    }
+    // removing trailing zeros
+    do {
+      i--;
+    } while (s[i] === '0');
+    return s.substr(0, s[i] === '.' ? i : i + 1);
+  }
+
+  /**
+   * Formats transform matrix. The standard rotation, scale and translate
+   * matrices are replaced by their shorter forms, and for identity matrix
+   * returns empty string to save the memory.
+   * @param m {Array} matrix to format.
+   * @returns {string}
+   */
+  function pm(m) {
+    if (m[4] === 0 && m[5] === 0) {
+      if (m[1] === 0 && m[2] === 0) {
+        if (m[0] === 1 && m[3] === 1) {
+          return '';
+        }
+        return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';
+      }
+      if (m[0] === m[3] && m[1] === -m[2]) {
+        var a = Math.acos(m[0]) * 180 / Math.PI;
+        return 'rotate(' + pf(a) + ')';
+      }
+    } else {
+      if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
+        return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';
+      }
+    }
+    return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' +
+      pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';
+  }
+
+  function SVGGraphics(commonObjs, objs) {
+    this.current = new SVGExtraState();
+    this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix
+    this.transformStack = [];
+    this.extraStack = [];
+    this.commonObjs = commonObjs;
+    this.objs = objs;
+    this.pendingEOFill = false;
+
+    this.embedFonts = false;
+    this.embeddedFonts = {};
+    this.cssStyle = null;
+  }
+
+  var NS = 'http://www.w3.org/2000/svg';
+  var XML_NS = 'http://www.w3.org/XML/1998/namespace';
+  var XLINK_NS = 'http://www.w3.org/1999/xlink';
+  var LINE_CAP_STYLES = ['butt', 'round', 'square'];
+  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
+  var clipCount = 0;
+  var maskCount = 0;
+
+  SVGGraphics.prototype = {
+    save: function SVGGraphics_save() {
+      this.transformStack.push(this.transformMatrix);
+      var old = this.current;
+      this.extraStack.push(old);
+      this.current = old.clone();
+    },
+
+    restore: function SVGGraphics_restore() {
+      this.transformMatrix = this.transformStack.pop();
+      this.current = this.extraStack.pop();
+
+      this.tgrp = document.createElementNS(NS, 'svg:g');
+      this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
+      this.pgrp.appendChild(this.tgrp);
+    },
+
+    group: function SVGGraphics_group(items) {
+      this.save();
+      this.executeOpTree(items);
+      this.restore();
+    },
+
+    loadDependencies: function SVGGraphics_loadDependencies(operatorList) {
+      var fnArray = operatorList.fnArray;
+      var fnArrayLen = fnArray.length;
+      var argsArray = operatorList.argsArray;
+
+      var self = this;
+      for (var i = 0; i < fnArrayLen; i++) {
+        if (OPS.dependency === fnArray[i]) {
+          var deps = argsArray[i];
+          for (var n = 0, nn = deps.length; n < nn; n++) {
+            var obj = deps[n];
+            var common = obj.substring(0, 2) === 'g_';
+            var promise;
+            if (common) {
+              promise = new Promise(function(resolve) {
+                self.commonObjs.get(obj, resolve);
+              });
+            } else {
+              promise = new Promise(function(resolve) {
+                self.objs.get(obj, resolve);
+              });
+            }
+            this.current.dependencies.push(promise);
+          }
+        }
+      }
+      return Promise.all(this.current.dependencies);
+    },
+
+    transform: function SVGGraphics_transform(a, b, c, d, e, f) {
+      var transformMatrix = [a, b, c, d, e, f];
+      this.transformMatrix = PDFJS.Util.transform(this.transformMatrix,
+                                                  transformMatrix);
+
+      this.tgrp = document.createElementNS(NS, 'svg:g');
+      this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
+    },
+
+    getSVG: function SVGGraphics_getSVG(operatorList, viewport) {
+      this.svg = createScratchSVG(viewport.width, viewport.height);
+      this.viewport = viewport;
+
+      return this.loadDependencies(operatorList).then(function () {
+        this.transformMatrix = IDENTITY_MATRIX;
+        this.pgrp = document.createElementNS(NS, 'svg:g'); // Parent group
+        this.pgrp.setAttributeNS(null, 'transform', pm(viewport.transform));
+        this.tgrp = document.createElementNS(NS, 'svg:g'); // Transform group
+        this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
+        this.defs = document.createElementNS(NS, 'svg:defs');
+        this.pgrp.appendChild(this.defs);
+        this.pgrp.appendChild(this.tgrp);
+        this.svg.appendChild(this.pgrp);
+        var opTree = this.convertOpList(operatorList);
+        this.executeOpTree(opTree);
+        return this.svg;
+      }.bind(this));
+    },
+
+    convertOpList: function SVGGraphics_convertOpList(operatorList) {
+      var argsArray = operatorList.argsArray;
+      var fnArray = operatorList.fnArray;
+      var fnArrayLen  = fnArray.length;
+      var REVOPS = [];
+      var opList = [];
+
+      for (var op in OPS) {
+        REVOPS[OPS[op]] = op;
+      }
+
+      for (var x = 0; x < fnArrayLen; x++) {
+        var fnId = fnArray[x];
+        opList.push({'fnId' : fnId, 'fn': REVOPS[fnId], 'args': argsArray[x]});
+      }
+      return opListToTree(opList);
+    },
+
+    executeOpTree: function SVGGraphics_executeOpTree(opTree) {
+      var opTreeLen = opTree.length;
+      for(var x = 0; x < opTreeLen; x++) {
+        var fn = opTree[x].fn;
+        var fnId = opTree[x].fnId;
+        var args = opTree[x].args;
+
+        switch (fnId | 0) {
+          case OPS.beginText:
+            this.beginText();
+            break;
+          case OPS.setLeading:
+            this.setLeading(args);
+            break;
+          case OPS.setLeadingMoveText:
+            this.setLeadingMoveText(args[0], args[1]);
+            break;
+          case OPS.setFont:
+            this.setFont(args);
+            break;
+          case OPS.showText:
+            this.showText(args[0]);
+            break;
+          case OPS.showSpacedText:
+            this.showText(args[0]);
+            break;
+          case OPS.endText:
+            this.endText();
+            break;
+          case OPS.moveText:
+            this.moveText(args[0], args[1]);
+            break;
+          case OPS.setCharSpacing:
+            this.setCharSpacing(args[0]);
+            break;
+          case OPS.setWordSpacing:
+            this.setWordSpacing(args[0]);
+            break;
+          case OPS.setHScale:
+            this.setHScale(args[0]);
+            break;
+          case OPS.setTextMatrix:
+            this.setTextMatrix(args[0], args[1], args[2],
+                               args[3], args[4], args[5]);
+            break;
+          case OPS.setLineWidth:
+            this.setLineWidth(args[0]);
+            break;
+          case OPS.setLineJoin:
+            this.setLineJoin(args[0]);
+            break;
+          case OPS.setLineCap:
+            this.setLineCap(args[0]);
+            break;
+          case OPS.setMiterLimit:
+            this.setMiterLimit(args[0]);
+            break;
+          case OPS.setFillRGBColor:
+            this.setFillRGBColor(args[0], args[1], args[2]);
+            break;
+          case OPS.setStrokeRGBColor:
+            this.setStrokeRGBColor(args[0], args[1], args[2]);
+            break;
+          case OPS.setDash:
+            this.setDash(args[0], args[1]);
+            break;
+          case OPS.setGState:
+            this.setGState(args[0]);
+            break;
+          case OPS.fill:
+            this.fill();
+            break;
+          case OPS.eoFill:
+            this.eoFill();
+            break;
+          case OPS.stroke:
+            this.stroke();
+            break;
+          case OPS.fillStroke:
+            this.fillStroke();
+            break;
+          case OPS.eoFillStroke:
+            this.eoFillStroke();
+            break;
+          case OPS.clip:
+            this.clip('nonzero');
+            break;
+          case OPS.eoClip:
+            this.clip('evenodd');
+            break;
+          case OPS.paintSolidColorImageMask:
+            this.paintSolidColorImageMask();
+            break;
+          case OPS.paintJpegXObject:
+            this.paintJpegXObject(args[0], args[1], args[2]);
+            break;
+          case OPS.paintImageXObject:
+            this.paintImageXObject(args[0]);
+            break;
+          case OPS.paintInlineImageXObject:
+            this.paintInlineImageXObject(args[0]);
+            break;
+          case OPS.paintImageMaskXObject:
+            this.paintImageMaskXObject(args[0]);
+            break;
+          case OPS.paintFormXObjectBegin:
+            this.paintFormXObjectBegin(args[0], args[1]);
+            break;
+          case OPS.paintFormXObjectEnd:
+            this.paintFormXObjectEnd();
+            break;
+          case OPS.closePath:
+            this.closePath();
+            break;
+          case OPS.closeStroke:
+            this.closeStroke();
+            break;
+          case OPS.closeFillStroke:
+            this.closeFillStroke();
+            break;
+          case OPS.nextLine:
+            this.nextLine();
+            break;
+          case OPS.transform:
+            this.transform(args[0], args[1], args[2], args[3],
+                           args[4], args[5]);
+            break;
+          case OPS.constructPath:
+            this.constructPath(args[0], args[1]);
+            break;
+          case OPS.endPath:
+            this.endPath();
+            break;
+          case 92:
+            this.group(opTree[x].items);
+            break;
+          default:
+            warn('Unimplemented method '+ fn);
+            break;
+        }
+      }
+    },
+
+    setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {
+      this.current.wordSpacing = wordSpacing;
+    },
+
+    setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {
+      this.current.charSpacing = charSpacing;
+    },
+
+    nextLine: function SVGGraphics_nextLine() {
+      this.moveText(0, this.current.leading);
+    },
+
+    setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {
+      var current = this.current;
+      this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];
+
+      this.current.x = this.current.lineX = 0;
+      this.current.y = this.current.lineY = 0;
+
+      current.xcoords = [];
+      current.tspan = document.createElementNS(NS, 'svg:tspan');
+      current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
+      current.tspan.setAttributeNS(null, 'font-size',
+                                   pf(current.fontSize) + 'px');
+      current.tspan.setAttributeNS(null, 'y', pf(-current.y));
+
+      current.txtElement = document.createElementNS(NS, 'svg:text');
+      current.txtElement.appendChild(current.tspan);
+    },
+
+    beginText: function SVGGraphics_beginText() {
+      this.current.x = this.current.lineX = 0;
+      this.current.y = this.current.lineY = 0;
+      this.current.textMatrix = IDENTITY_MATRIX;
+      this.current.lineMatrix = IDENTITY_MATRIX;
+      this.current.tspan = document.createElementNS(NS, 'svg:tspan');
+      this.current.txtElement = document.createElementNS(NS, 'svg:text');
+      this.current.txtgrp = document.createElementNS(NS, 'svg:g');
+      this.current.xcoords = [];
+    },
+
+    moveText: function SVGGraphics_moveText(x, y) {
+      var current = this.current;
+      this.current.x = this.current.lineX += x;
+      this.current.y = this.current.lineY += y;
+
+      current.xcoords = [];
+      current.tspan = document.createElementNS(NS, 'svg:tspan');
+      current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
+      current.tspan.setAttributeNS(null, 'font-size',
+                                   pf(current.fontSize) + 'px');
+      current.tspan.setAttributeNS(null, 'y', pf(-current.y));
+    },
+
+    showText: function SVGGraphics_showText(glyphs) {
+      var current = this.current;
+      var font = current.font;
+      var fontSize = current.fontSize;
+
+      if (fontSize === 0) {
+        return;
+      }
+
+      var charSpacing = current.charSpacing;
+      var wordSpacing = current.wordSpacing;
+      var fontDirection = current.fontDirection;
+      var textHScale = current.textHScale * fontDirection;
+      var glyphsLength = glyphs.length;
+      var vertical = font.vertical;
+      var widthAdvanceScale = fontSize * current.fontMatrix[0];
+
+      var x = 0, i;
+      for (i = 0; i < glyphsLength; ++i) {
+        var glyph = glyphs[i];
+        if (glyph === null) {
+          // word break
+          x += fontDirection * wordSpacing;
+          continue;
+        } else if (isNum(glyph)) {
+          x += -glyph * fontSize * 0.001;
+          continue;
+        }
+        current.xcoords.push(current.x + x * textHScale);
+
+        var width = glyph.width;
+        var character = glyph.fontChar;
+        var charWidth = width * widthAdvanceScale + charSpacing * fontDirection;
+        x += charWidth;
+
+        current.tspan.textContent += character;
+      }
+      if (vertical) {
+        current.y -= x * textHScale;
+      } else {
+        current.x += x * textHScale;
+      }
+
+      current.tspan.setAttributeNS(null, 'x',
+                                   current.xcoords.map(pf).join(' '));
+      current.tspan.setAttributeNS(null, 'y', pf(-current.y));
+      current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
+      current.tspan.setAttributeNS(null, 'font-size',
+                                   pf(current.fontSize) + 'px');
+      if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
+        current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
+      }
+      if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
+        current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
+      }
+      if (current.fillColor !== SVG_DEFAULTS.fillColor) {
+        current.tspan.setAttributeNS(null, 'fill', current.fillColor);
+      }
+
+      current.txtElement.setAttributeNS(null, 'transform',
+                                        pm(current.textMatrix) +
+                                        ' scale(1, -1)' );
+      current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
+      current.txtElement.appendChild(current.tspan);
+      current.txtgrp.appendChild(current.txtElement);
+
+      this.tgrp.appendChild(current.txtElement);
+
+    },
+
+    setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {
+      this.setLeading(-y);
+      this.moveText(x, y);
+    },
+
+    addFontStyle: function SVGGraphics_addFontStyle(fontObj) {
+      if (!this.cssStyle) {
+        this.cssStyle = document.createElementNS(NS, 'svg:style');
+        this.cssStyle.setAttributeNS(null, 'type', 'text/css');
+        this.defs.appendChild(this.cssStyle);
+      }
+
+      var url = PDFJS.createObjectURL(fontObj.data, fontObj.mimetype);
+      this.cssStyle.textContent +=
+        '@font-face { font-family: "' + fontObj.loadedName + '";' +
+        ' src: url(' + url + '); }\n';
+    },
+
+    setFont: function SVGGraphics_setFont(details) {
+      var current = this.current;
+      var fontObj = this.commonObjs.get(details[0]);
+      var size = details[1];
+      this.current.font = fontObj;
+
+      if (this.embedFonts && fontObj.data &&
+          !this.embeddedFonts[fontObj.loadedName]) {
+        this.addFontStyle(fontObj);
+        this.embeddedFonts[fontObj.loadedName] = fontObj;
+      }
+
+      current.fontMatrix = (fontObj.fontMatrix ?
+                            fontObj.fontMatrix : FONT_IDENTITY_MATRIX);
+
+      var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :
+                                 (fontObj.bold ? 'bold' : 'normal');
+      var italic = fontObj.italic ? 'italic' : 'normal';
+
+      if (size < 0) {
+        size = -size;
+        current.fontDirection = -1;
+      } else {
+        current.fontDirection = 1;
+      }
+      current.fontSize = size;
+      current.fontFamily = fontObj.loadedName;
+      current.fontWeight = bold;
+      current.fontStyle = italic;
+
+      current.tspan = document.createElementNS(NS, 'svg:tspan');
+      current.tspan.setAttributeNS(null, 'y', pf(-current.y));
+      current.xcoords = [];
+    },
+
+    endText: function SVGGraphics_endText() {
+      if (this.current.pendingClip) {
+        this.cgrp.appendChild(this.tgrp);
+        this.pgrp.appendChild(this.cgrp);
+      } else {
+        this.pgrp.appendChild(this.tgrp);
+      }
+      this.tgrp = document.createElementNS(NS, 'svg:g');
+      this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
+    },
+
+    // Path properties
+    setLineWidth: function SVGGraphics_setLineWidth(width) {
+      this.current.lineWidth = width;
+    },
+    setLineCap: function SVGGraphics_setLineCap(style) {
+      this.current.lineCap = LINE_CAP_STYLES[style];
+    },
+    setLineJoin: function SVGGraphics_setLineJoin(style) {
+      this.current.lineJoin = LINE_JOIN_STYLES[style];
+    },
+    setMiterLimit: function SVGGraphics_setMiterLimit(limit) {
+      this.current.miterLimit = limit;
+    },
+    setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {
+      var color = Util.makeCssRgb(r, g, b);
+      this.current.strokeColor = color;
+    },
+    setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {
+      var color = Util.makeCssRgb(r, g, b);
+      this.current.fillColor = color;
+      this.current.tspan = document.createElementNS(NS, 'svg:tspan');
+      this.current.xcoords = [];
+    },
+    setDash: function SVGGraphics_setDash(dashArray, dashPhase) {
+      this.current.dashArray = dashArray;
+      this.current.dashPhase = dashPhase;
+    },
+
+    constructPath: function SVGGraphics_constructPath(ops, args) {
+      var current = this.current;
+      var x = current.x, y = current.y;
+      current.path = document.createElementNS(NS, 'svg:path');
+      var d = [];
+      var opLength = ops.length;
+
+      for (var i = 0, j = 0; i < opLength; i++) {
+        switch (ops[i] | 0) {
+          case OPS.rectangle:
+            x = args[j++];
+            y = args[j++];
+            var width = args[j++];
+            var height = args[j++];
+            var xw = x + width;
+            var yh = y + height;
+            d.push('M', pf(x), pf(y), 'L', pf(xw) , pf(y), 'L', pf(xw), pf(yh),
+                   'L', pf(x), pf(yh), 'Z');
+            break;
+          case OPS.moveTo:
+            x = args[j++];
+            y = args[j++];
+            d.push('M', pf(x), pf(y));
+            break;
+          case OPS.lineTo:
+            x = args[j++];
+            y = args[j++];
+            d.push('L', pf(x) , pf(y));
+            break;
+          case OPS.curveTo:
+            x = args[j + 4];
+            y = args[j + 5];
+            d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]),
+                   pf(args[j + 3]), pf(x), pf(y));
+            j += 6;
+            break;
+          case OPS.curveTo2:
+            x = args[j + 2];
+            y = args[j + 3];
+            d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]),
+                   pf(args[j + 2]), pf(args[j + 3]));
+            j += 4;
+            break;
+          case OPS.curveTo3:
+            x = args[j + 2];
+            y = args[j + 3];
+            d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y),
+                   pf(x), pf(y));
+            j += 4;
+            break;
+          case OPS.closePath:
+            d.push('Z');
+            break;
+        }
+      }
+      current.path.setAttributeNS(null, 'd', d.join(' '));
+      current.path.setAttributeNS(null, 'stroke-miterlimit',
+                                  pf(current.miterLimit));
+      current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap);
+      current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
+      current.path.setAttributeNS(null, 'stroke-width',
+                                  pf(current.lineWidth) + 'px');
+      current.path.setAttributeNS(null, 'stroke-dasharray',
+                                  current.dashArray.map(pf).join(' '));
+      current.path.setAttributeNS(null, 'stroke-dashoffset',
+                                  pf(current.dashPhase) + 'px');
+      current.path.setAttributeNS(null, 'fill', 'none');
+
+      this.tgrp.appendChild(current.path);
+      if (current.pendingClip) {
+        this.cgrp.appendChild(this.tgrp);
+        this.pgrp.appendChild(this.cgrp);
+      } else {
+        this.pgrp.appendChild(this.tgrp);
+      }
+      // Saving a reference in current.element so that it can be addressed
+      // in 'fill' and 'stroke'
+      current.element = current.path;
+      current.setCurrentPoint(x, y);
+    },
+
+    endPath: function SVGGraphics_endPath() {
+      var current = this.current;
+      if (current.pendingClip) {
+        this.cgrp.appendChild(this.tgrp);
+        this.pgrp.appendChild(this.cgrp);
+      } else {
+        this.pgrp.appendChild(this.tgrp);
+      }
+      this.tgrp = document.createElementNS(NS, 'svg:g');
+      this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
+    },
+
+    clip: function SVGGraphics_clip(type) {
+      var current = this.current;
+      // Add current path to clipping path
+      current.clipId = 'clippath' + clipCount;
+      clipCount++;
+      this.clippath = document.createElementNS(NS, 'svg:clipPath');
+      this.clippath.setAttributeNS(null, 'id', current.clipId);
+      var clipElement = current.element.cloneNode();
+      if (type === 'evenodd') {
+        clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
+      } else {
+        clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
+      }
+      this.clippath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
+      this.clippath.appendChild(clipElement);
+      this.defs.appendChild(this.clippath);
+
+      // Create a new group with that attribute
+      current.pendingClip = true;
+      this.cgrp = document.createElementNS(NS, 'svg:g');
+      this.cgrp.setAttributeNS(null, 'clip-path',
+                               'url(#' + current.clipId + ')');
+      this.pgrp.appendChild(this.cgrp);
+    },
+
+    closePath: function SVGGraphics_closePath() {
+      var current = this.current;
+      var d = current.path.getAttributeNS(null, 'd');
+      d += 'Z';
+      current.path.setAttributeNS(null, 'd', d);
+    },
+
+    setLeading: function SVGGraphics_setLeading(leading) {
+      this.current.leading = -leading;
+    },
+
+    setTextRise: function SVGGraphics_setTextRise(textRise) {
+      this.current.textRise = textRise;
+    },
+
+    setHScale: function SVGGraphics_setHScale(scale) {
+      this.current.textHScale = scale / 100;
+    },
+
+    setGState: function SVGGraphics_setGState(states) {
+      for (var i = 0, ii = states.length; i < ii; i++) {
+        var state = states[i];
+        var key = state[0];
+        var value = state[1];
+
+        switch (key) {
+          case 'LW':
+            this.setLineWidth(value);
+            break;
+          case 'LC':
+            this.setLineCap(value);
+            break;
+          case 'LJ':
+            this.setLineJoin(value);
+            break;
+          case 'ML':
+            this.setMiterLimit(value);
+            break;
+          case 'D':
+            this.setDash(value[0], value[1]);
+            break;
+          case 'RI':
+            break;
+          case 'FL':
+            break;
+          case 'Font':
+            this.setFont(value);
+            break;
+          case 'CA':
+            break;
+          case 'ca':
+            break;
+          case 'BM':
+            break;
+          case 'SMask':
+            break;
+        }
+      }
+    },
+
+    fill: function SVGGraphics_fill() {
+      var current = this.current;
+      current.element.setAttributeNS(null, 'fill', current.fillColor);
+    },
+
+    stroke: function SVGGraphics_stroke() {
+      var current = this.current;
+      current.element.setAttributeNS(null, 'stroke', current.strokeColor);
+      current.element.setAttributeNS(null, 'fill', 'none');
+    },
+
+    eoFill: function SVGGraphics_eoFill() {
+      var current = this.current;
+      current.element.setAttributeNS(null, 'fill', current.fillColor);
+      current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
+    },
+
+    fillStroke: function SVGGraphics_fillStroke() {
+      // Order is important since stroke wants fill to be none.
+      // First stroke, then if fill needed, it will be overwritten.
+      this.stroke();
+      this.fill();
+    },
+
+    eoFillStroke: function SVGGraphics_eoFillStroke() {
+      this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
+      this.fillStroke();
+    },
+
+    closeStroke: function SVGGraphics_closeStroke() {
+      this.closePath();
+      this.stroke();
+    },
+
+    closeFillStroke: function SVGGraphics_closeFillStroke() {
+      this.closePath();
+      this.fillStroke();
+    },
+
+    paintSolidColorImageMask:
+        function SVGGraphics_paintSolidColorImageMask() {
+      var current = this.current;
+      var rect = document.createElementNS(NS, 'svg:rect');
+      rect.setAttributeNS(null, 'x', '0');
+      rect.setAttributeNS(null, 'y', '0');
+      rect.setAttributeNS(null, 'width', '1px');
+      rect.setAttributeNS(null, 'height', '1px');
+      rect.setAttributeNS(null, 'fill', current.fillColor);
+      this.tgrp.appendChild(rect);
+    },
+
+    paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {
+      var current = this.current;
+      var imgObj = this.objs.get(objId);
+      var imgEl = document.createElementNS(NS, 'svg:image');
+      imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);
+      imgEl.setAttributeNS(null, 'width', imgObj.width + 'px');
+      imgEl.setAttributeNS(null, 'height', imgObj.height + 'px');
+      imgEl.setAttributeNS(null, 'x', '0');
+      imgEl.setAttributeNS(null, 'y', pf(-h));
+      imgEl.setAttributeNS(null, 'transform',
+                           'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');
+
+      this.tgrp.appendChild(imgEl);
+      if (current.pendingClip) {
+        this.cgrp.appendChild(this.tgrp);
+        this.pgrp.appendChild(this.cgrp);
+      } else {
+        this.pgrp.appendChild(this.tgrp);
+      }
+    },
+
+    paintImageXObject: function SVGGraphics_paintImageXObject(objId) {
+      var imgData = this.objs.get(objId);
+      if (!imgData) {
+        warn('Dependent image isn\'t ready yet');
+        return;
+      }
+      this.paintInlineImageXObject(imgData);
+    },
+
+    paintInlineImageXObject:
+        function SVGGraphics_paintInlineImageXObject(imgData, mask) {
+      var current = this.current;
+      var width = imgData.width;
+      var height = imgData.height;
+
+      var imgSrc = convertImgDataToPng(imgData);
+      var cliprect = document.createElementNS(NS, 'svg:rect');
+      cliprect.setAttributeNS(null, 'x', '0');
+      cliprect.setAttributeNS(null, 'y', '0');
+      cliprect.setAttributeNS(null, 'width', pf(width));
+      cliprect.setAttributeNS(null, 'height', pf(height));
+      current.element = cliprect;
+      this.clip('nonzero');
+      var imgEl = document.createElementNS(NS, 'svg:image');
+      imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);
+      imgEl.setAttributeNS(null, 'x', '0');
+      imgEl.setAttributeNS(null, 'y', pf(-height));
+      imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
+      imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
+      imgEl.setAttributeNS(null, 'transform',
+                           'scale(' + pf(1 / width) + ' ' +
+                           pf(-1 / height) + ')');
+      if (mask) {
+        mask.appendChild(imgEl);
+      } else {
+        this.tgrp.appendChild(imgEl);
+      }
+      if (current.pendingClip) {
+        this.cgrp.appendChild(this.tgrp);
+        this.pgrp.appendChild(this.cgrp);
+      } else {
+        this.pgrp.appendChild(this.tgrp);
+      }
+    },
+
+    paintImageMaskXObject:
+        function SVGGraphics_paintImageMaskXObject(imgData) {
+      var current = this.current;
+      var width = imgData.width;
+      var height = imgData.height;
+      var fillColor = current.fillColor;
+
+      current.maskId = 'mask' + maskCount++;
+      var mask = document.createElementNS(NS, 'svg:mask');
+      mask.setAttributeNS(null, 'id', current.maskId);
+
+      var rect = document.createElementNS(NS, 'svg:rect');
+      rect.setAttributeNS(null, 'x', '0');
+      rect.setAttributeNS(null, 'y', '0');
+      rect.setAttributeNS(null, 'width', pf(width));
+      rect.setAttributeNS(null, 'height', pf(height));
+      rect.setAttributeNS(null, 'fill', fillColor);
+      rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId +')');
+      this.defs.appendChild(mask);
+      this.tgrp.appendChild(rect);
+
+      this.paintInlineImageXObject(imgData, mask);
+    },
+
+    paintFormXObjectBegin:
+        function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {
+      this.save();
+
+      if (isArray(matrix) && matrix.length === 6) {
+        this.transform(matrix[0], matrix[1], matrix[2],
+                       matrix[3], matrix[4], matrix[5]);
+      }
+
+      if (isArray(bbox) && bbox.length === 4) {
+        var width = bbox[2] - bbox[0];
+        var height = bbox[3] - bbox[1];
+
+        var cliprect = document.createElementNS(NS, 'svg:rect');
+        cliprect.setAttributeNS(null, 'x', bbox[0]);
+        cliprect.setAttributeNS(null, 'y', bbox[1]);
+        cliprect.setAttributeNS(null, 'width', pf(width));
+        cliprect.setAttributeNS(null, 'height', pf(height));
+        this.current.element = cliprect;
+        this.clip('nonzero');
+        this.endPath();
+      }
+    },
+
+    paintFormXObjectEnd:
+        function SVGGraphics_paintFormXObjectEnd() {
+      this.restore();
+    }
+  };
+  return SVGGraphics;
+})();
+
+PDFJS.SVGGraphics = SVGGraphics;
+//#endif
+
+
+}).call((typeof window === 'undefined') ? this : window);
+
+if (!PDFJS.workerSrc && typeof document !== 'undefined') {
+  // workerSrc is not set -- using last script url to define default location
+  PDFJS.workerSrc = (function () {
+    'use strict';
+    var scriptTagContainer = document.body ||
+                             document.getElementsByTagName('head')[0];
+    var pdfjsSrc = scriptTagContainer.lastChild.src;
+    return pdfjsSrc && pdfjsSrc.replace(/\.js$/i, '.worker.js');
+  })();
+}
+
diff --git a/source/ViewerJS/pdf.worker.js b/source/ViewerJS/pdf.worker.js
new file mode 100644
index 0000000..c17192e
--- /dev/null
+++ b/source/ViewerJS/pdf.worker.js
@@ -0,0 +1,39353 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+/* Copyright 2012 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*jshint globalstrict: false */
+/* globals PDFJS */
+
+// Initializing PDFJS global object (if still undefined)
+if (typeof PDFJS === 'undefined') {
+  (typeof window !== 'undefined' ? window : this).PDFJS = {};
+}
+
+PDFJS.version = '1.1.114';
+PDFJS.build = '3fd44fd';
+
+(function pdfjsWrapper() {
+  // Use strict in our context only - users might not want it
+  'use strict';
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+/* Copyright 2012 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* globals Cmd, ColorSpace, Dict, MozBlobBuilder, Name, PDFJS, Ref, URL,
+           Promise */
+
+'use strict';
+
+var globalScope = (typeof window === 'undefined') ? this : window;
+
+var isWorker = (typeof window === 'undefined');
+
+var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
+
+var TextRenderingMode = {
+  FILL: 0,
+  STROKE: 1,
+  FILL_STROKE: 2,
+  INVISIBLE: 3,
+  FILL_ADD_TO_PATH: 4,
+  STROKE_ADD_TO_PATH: 5,
+  FILL_STROKE_ADD_TO_PATH: 6,
+  ADD_TO_PATH: 7,
+  FILL_STROKE_MASK: 3,
+  ADD_TO_PATH_FLAG: 4
+};
+
+var ImageKind = {
+  GRAYSCALE_1BPP: 1,
+  RGB_24BPP: 2,
+  RGBA_32BPP: 3
+};
+
+var AnnotationType = {
+  WIDGET: 1,
+  TEXT: 2,
+  LINK: 3
+};
+
+var StreamType = {
+  UNKNOWN: 0,
+  FLATE: 1,
+  LZW: 2,
+  DCT: 3,
+  JPX: 4,
+  JBIG: 5,
+  A85: 6,
+  AHX: 7,
+  CCF: 8,
+  RL: 9
+};
+
+var FontType = {
+  UNKNOWN: 0,
+  TYPE1: 1,
+  TYPE1C: 2,
+  CIDFONTTYPE0: 3,
+  CIDFONTTYPE0C: 4,
+  TRUETYPE: 5,
+  CIDFONTTYPE2: 6,
+  TYPE3: 7,
+  OPENTYPE: 8,
+  TYPE0: 9,
+  MMTYPE1: 10
+};
+
+// The global PDFJS object exposes the API
+// In production, it will be declared outside a global wrapper
+// In development, it will be declared here
+if (!globalScope.PDFJS) {
+  globalScope.PDFJS = {};
+}
+
+globalScope.PDFJS.pdfBug = false;
+
+PDFJS.VERBOSITY_LEVELS = {
+  errors: 0,
+  warnings: 1,
+  infos: 5
+};
+
+// All the possible operations for an operator list.
+var OPS = PDFJS.OPS = {
+  // Intentionally start from 1 so it is easy to spot bad operators that will be
+  // 0's.
+  dependency: 1,
+  setLineWidth: 2,
+  setLineCap: 3,
+  setLineJoin: 4,
+  setMiterLimit: 5,
+  setDash: 6,
+  setRenderingIntent: 7,
+  setFlatness: 8,
+  setGState: 9,
+  save: 10,
+  restore: 11,
+  transform: 12,
+  moveTo: 13,
+  lineTo: 14,
+  curveTo: 15,
+  curveTo2: 16,
+  curveTo3: 17,
+  closePath: 18,
+  rectangle: 19,
+  stroke: 20,
+  closeStroke: 21,
+  fill: 22,
+  eoFill: 23,
+  fillStroke: 24,
+  eoFillStroke: 25,
+  closeFillStroke: 26,
+  closeEOFillStroke: 27,
+  endPath: 28,
+  clip: 29,
+  eoClip: 30,
+  beginText: 31,
+  endText: 32,
+  setCharSpacing: 33,
+  setWordSpacing: 34,
+  setHScale: 35,
+  setLeading: 36,
+  setFont: 37,
+  setTextRenderingMode: 38,
+  setTextRise: 39,
+  moveText: 40,
+  setLeadingMoveText: 41,
+  setTextMatrix: 42,
+  nextLine: 43,
+  showText: 44,
+  showSpacedText: 45,
+  nextLineShowText: 46,
+  nextLineSetSpacingShowText: 47,
+  setCharWidth: 48,
+  setCharWidthAndBounds: 49,
+  setStrokeColorSpace: 50,
+  setFillColorSpace: 51,
+  setStrokeColor: 52,
+  setStrokeColorN: 53,
+  setFillColor: 54,
+  setFillColorN: 55,
+  setStrokeGray: 56,
+  setFillGray: 57,
+  setStrokeRGBColor: 58,
+  setFillRGBColor: 59,
+  setStrokeCMYKColor: 60,
+  setFillCMYKColor: 61,
+  shadingFill: 62,
+  beginInlineImage: 63,
+  beginImageData: 64,
+  endInlineImage: 65,
+  paintXObject: 66,
+  markPoint: 67,
+  markPointProps: 68,
+  beginMarkedContent: 69,
+  beginMarkedContentProps: 70,
+  endMarkedContent: 71,
+  beginCompat: 72,
+  endCompat: 73,
+  paintFormXObjectBegin: 74,
+  paintFormXObjectEnd: 75,
+  beginGroup: 76,
+  endGroup: 77,
+  beginAnnotations: 78,
+  endAnnotations: 79,
+  beginAnnotation: 80,
+  endAnnotation: 81,
+  paintJpegXObject: 82,
+  paintImageMaskXObject: 83,
+  paintImageMaskXObjectGroup: 84,
+  paintImageXObject: 85,
+  paintInlineImageXObject: 86,
+  paintInlineImageXObjectGroup: 87,
+  paintImageXObjectRepeat: 88,
+  paintImageMaskXObjectRepeat: 89,
+  paintSolidColorImageMask: 90,
+  constructPath: 91
+};
+
+// A notice for devs. These are good for things that are helpful to devs, such
+// as warning that Workers were disabled, which is important to devs but not
+// end users.
+function info(msg) {
+  if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.infos) {
+    console.log('Info: ' + msg);
+  }
+}
+
+// Non-fatal warnings.
+function warn(msg) {
+  if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) {
+    console.log('Warning: ' + msg);
+  }
+}
+
+// Fatal errors that should trigger the fallback UI and halt execution by
+// throwing an exception.
+function error(msg) {
+  if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.errors) {
+    console.log('Error: ' + msg);
+    console.log(backtrace());
+  }
+  UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown);
+  throw new Error(msg);
+}
+
+function backtrace() {
+  try {
+    throw new Error();
+  } catch (e) {
+    return e.stack ? e.stack.split('\n').slice(2).join('\n') : '';
+  }
+}
+
+function assert(cond, msg) {
+  if (!cond) {
+    error(msg);
+  }
+}
+
+var UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = {
+  unknown: 'unknown',
+  forms: 'forms',
+  javaScript: 'javaScript',
+  smask: 'smask',
+  shadingPattern: 'shadingPattern',
+  font: 'font'
+};
+
+var UnsupportedManager = PDFJS.UnsupportedManager =
+  (function UnsupportedManagerClosure() {
+  var listeners = [];
+  return {
+    listen: function (cb) {
+      listeners.push(cb);
+    },
+    notify: function (featureId) {
+      warn('Unsupported feature "' + featureId + '"');
+      for (var i = 0, ii = listeners.length; i < ii; i++) {
+        listeners[i](featureId);
+      }
+    }
+  };
+})();
+
+// Combines two URLs. The baseUrl shall be absolute URL. If the url is an
+// absolute URL, it will be returned as is.
+function combineUrl(baseUrl, url) {
+  if (!url) {
+    return baseUrl;
+  }
+  if (/^[a-z][a-z0-9+\-.]*:/i.test(url)) {
+    return url;
+  }
+  var i;
+  if (url.charAt(0) === '/') {
+    // absolute path
+    i = baseUrl.indexOf('://');
+    if (url.charAt(1) === '/') {
+      ++i;
+    } else {
+      i = baseUrl.indexOf('/', i + 3);
+    }
+    return baseUrl.substring(0, i) + url;
+  } else {
+    // relative path
+    var pathLength = baseUrl.length;
+    i = baseUrl.lastIndexOf('#');
+    pathLength = i >= 0 ? i : pathLength;
+    i = baseUrl.lastIndexOf('?', pathLength);
+    pathLength = i >= 0 ? i : pathLength;
+    var prefixLength = baseUrl.lastIndexOf('/', pathLength);
+    return baseUrl.substring(0, prefixLength + 1) + url;
+  }
+}
+
+// Validates if URL is safe and allowed, e.g. to avoid XSS.
+function isValidUrl(url, allowRelative) {
+  if (!url) {
+    return false;
+  }
+  // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1)
+  // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+  var protocol = /^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url);
+  if (!protocol) {
+    return allowRelative;
+  }
+  protocol = protocol[0].toLowerCase();
+  switch (protocol) {
+    case 'http':
+    case 'https':
+    case 'ftp':
+    case 'mailto':
+    case 'tel':
+      return true;
+    default:
+      return false;
+  }
+}
+PDFJS.isValidUrl = isValidUrl;
+
+function shadow(obj, prop, value) {
+  Object.defineProperty(obj, prop, { value: value,
+                                     enumerable: true,
+                                     configurable: true,
+                                     writable: false });
+  return value;
+}
+PDFJS.shadow = shadow;
+
+var PasswordResponses = PDFJS.PasswordResponses = {
+  NEED_PASSWORD: 1,
+  INCORRECT_PASSWORD: 2
+};
+
+var PasswordException = (function PasswordExceptionClosure() {
+  function PasswordException(msg, code) {
+    this.name = 'PasswordException';
+    this.message = msg;
+    this.code = code;
+  }
+
+  PasswordException.prototype = new Error();
+  PasswordException.constructor = PasswordException;
+
+  return PasswordException;
+})();
+PDFJS.PasswordException = PasswordException;
+
+var UnknownErrorException = (function UnknownErrorExceptionClosure() {
+  function UnknownErrorException(msg, details) {
+    this.name = 'UnknownErrorException';
+    this.message = msg;
+    this.details = details;
+  }
+
+  UnknownErrorException.prototype = new Error();
+  UnknownErrorException.constructor = UnknownErrorException;
+
+  return UnknownErrorException;
+})();
+PDFJS.UnknownErrorException = UnknownErrorException;
+
+var InvalidPDFException = (function InvalidPDFExceptionClosure() {
+  function InvalidPDFException(msg) {
+    this.name = 'InvalidPDFException';
+    this.message = msg;
+  }
+
+  InvalidPDFException.prototype = new Error();
+  InvalidPDFException.constructor = InvalidPDFException;
+
+  return InvalidPDFException;
+})();
+PDFJS.InvalidPDFException = InvalidPDFException;
+
+var MissingPDFException = (function MissingPDFExceptionClosure() {
+  function MissingPDFException(msg) {
+    this.name = 'MissingPDFException';
+    this.message = msg;
+  }
+
+  MissingPDFException.prototype = new Error();
+  MissingPDFException.constructor = MissingPDFException;
+
+  return MissingPDFException;
+})();
+PDFJS.MissingPDFException = MissingPDFException;
+
+var UnexpectedResponseException =
+    (function UnexpectedResponseExceptionClosure() {
+  function UnexpectedResponseException(msg, status) {
+    this.name = 'UnexpectedResponseException';
+    this.message = msg;
+    this.status = status;
+  }
+
+  UnexpectedResponseException.prototype = new Error();
+  UnexpectedResponseException.constructor = UnexpectedResponseException;
+
+  return UnexpectedResponseException;
+})();
+PDFJS.UnexpectedResponseException = UnexpectedResponseException;
+
+var NotImplementedException = (function NotImplementedExceptionClosure() {
+  function NotImplementedException(msg) {
+    this.message = msg;
+  }
+
+  NotImplementedException.prototype = new Error();
+  NotImplementedException.prototype.name = 'NotImplementedException';
+  NotImplementedException.constructor = NotImplementedException;
+
+  return NotImplementedException;
+})();
+
+var MissingDataException = (function MissingDataExceptionClosure() {
+  function MissingDataException(begin, end) {
+    this.begin = begin;
+    this.end = end;
+    this.message = 'Missing data [' + begin + ', ' + end + ')';
+  }
+
+  MissingDataException.prototype = new Error();
+  MissingDataException.prototype.name = 'MissingDataException';
+  MissingDataException.constructor = MissingDataException;
+
+  return MissingDataException;
+})();
+
+var XRefParseException = (function XRefParseExceptionClosure() {
+  function XRefParseException(msg) {
+    this.message = msg;
+  }
+
+  XRefParseException.prototype = new Error();
+  XRefParseException.prototype.name = 'XRefParseException';
+  XRefParseException.constructor = XRefParseException;
+
+  return XRefParseException;
+})();
+
+
+function bytesToString(bytes) {
+  assert(bytes !== null && typeof bytes === 'object' &&
+         bytes.length !== undefined, 'Invalid argument for bytesToString');
+  var length = bytes.length;
+  var MAX_ARGUMENT_COUNT = 8192;
+  if (length < MAX_ARGUMENT_COUNT) {
+    return String.fromCharCode.apply(null, bytes);
+  }
+  var strBuf = [];
+  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
+    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
+    var chunk = bytes.subarray(i, chunkEnd);
+    strBuf.push(String.fromCharCode.apply(null, chunk));
+  }
+  return strBuf.join('');
+}
+
+function stringToBytes(str) {
+  assert(typeof str === 'string', 'Invalid argument for stringToBytes');
+  var length = str.length;
+  var bytes = new Uint8Array(length);
+  for (var i = 0; i < length; ++i) {
+    bytes[i] = str.charCodeAt(i) & 0xFF;
+  }
+  return bytes;
+}
+
+function string32(value) {
+  return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,
+                             (value >> 8) & 0xff, value & 0xff);
+}
+
+function log2(x) {
+  var n = 1, i = 0;
+  while (x > n) {
+    n <<= 1;
+    i++;
+  }
+  return i;
+}
+
+function readInt8(data, start) {
+  return (data[start] << 24) >> 24;
+}
+
+function readUint16(data, offset) {
+  return (data[offset] << 8) | data[offset + 1];
+}
+
+function readUint32(data, offset) {
+  return ((data[offset] << 24) | (data[offset + 1] << 16) |
+         (data[offset + 2] << 8) | data[offset + 3]) >>> 0;
+}
+
+// Lazy test the endianness of the platform
+// NOTE: This will be 'true' for simulated TypedArrays
+function isLittleEndian() {
+  var buffer8 = new Uint8Array(2);
+  buffer8[0] = 1;
+  var buffer16 = new Uint16Array(buffer8.buffer);
+  return (buffer16[0] === 1);
+}
+
+Object.defineProperty(PDFJS, 'isLittleEndian', {
+  configurable: true,
+  get: function PDFJS_isLittleEndian() {
+    return shadow(PDFJS, 'isLittleEndian', isLittleEndian());
+  }
+});
+
+//#if !(FIREFOX || MOZCENTRAL || B2G || CHROME)
+//// Lazy test if the userAgant support CanvasTypedArrays
+function hasCanvasTypedArrays() {
+  var canvas = document.createElement('canvas');
+  canvas.width = canvas.height = 1;
+  var ctx = canvas.getContext('2d');
+  var imageData = ctx.createImageData(1, 1);
+  return (typeof imageData.data.buffer !== 'undefined');
+}
+
+Object.defineProperty(PDFJS, 'hasCanvasTypedArrays', {
+  configurable: true,
+  get: function PDFJS_hasCanvasTypedArrays() {
+    return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays());
+  }
+});
+
+var Uint32ArrayView = (function Uint32ArrayViewClosure() {
+
+  function Uint32ArrayView(buffer, length) {
+    this.buffer = buffer;
+    this.byteLength = buffer.length;
+    this.length = length === undefined ? (this.byteLength >> 2) : length;
+    ensureUint32ArrayViewProps(this.length);
+  }
+  Uint32ArrayView.prototype = Object.create(null);
+
+  var uint32ArrayViewSetters = 0;
+  function createUint32ArrayProp(index) {
+    return {
+      get: function () {
+        var buffer = this.buffer, offset = index << 2;
+        return (buffer[offset] | (buffer[offset + 1] << 8) |
+          (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;
+      },
+      set: function (value) {
+        var buffer = this.buffer, offset = index << 2;
+        buffer[offset] = value & 255;
+        buffer[offset + 1] = (value >> 8) & 255;
+        buffer[offset + 2] = (value >> 16) & 255;
+        buffer[offset + 3] = (value >>> 24) & 255;
+      }
+    };
+  }
+
+  function ensureUint32ArrayViewProps(length) {
+    while (uint32ArrayViewSetters < length) {
+      Object.defineProperty(Uint32ArrayView.prototype,
+        uint32ArrayViewSetters,
+        createUint32ArrayProp(uint32ArrayViewSetters));
+      uint32ArrayViewSetters++;
+    }
+  }
+
+  return Uint32ArrayView;
+})();
+//#else
+//PDFJS.hasCanvasTypedArrays = true;
+//#endif
+
+var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
+
+var Util = PDFJS.Util = (function UtilClosure() {
+  function Util() {}
+
+  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
+
+  // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids
+  // creating many intermediate strings.
+  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
+    rgbBuf[1] = r;
+    rgbBuf[3] = g;
+    rgbBuf[5] = b;
+    return rgbBuf.join('');
+  };
+
+  // Concatenates two transformation matrices together and returns the result.
+  Util.transform = function Util_transform(m1, m2) {
+    return [
+      m1[0] * m2[0] + m1[2] * m2[1],
+      m1[1] * m2[0] + m1[3] * m2[1],
+      m1[0] * m2[2] + m1[2] * m2[3],
+      m1[1] * m2[2] + m1[3] * m2[3],
+      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],
+      m1[1] * m2[4] + m1[3] * m2[5] + m1[5]
+    ];
+  };
+
+  // For 2d affine transforms
+  Util.applyTransform = function Util_applyTransform(p, m) {
+    var xt = p[0] * m[0] + p[1] * m[2] + m[4];
+    var yt = p[0] * m[1] + p[1] * m[3] + m[5];
+    return [xt, yt];
+  };
+
+  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
+    var d = m[0] * m[3] - m[1] * m[2];
+    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
+    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
+    return [xt, yt];
+  };
+
+  // Applies the transform to the rectangle and finds the minimum axially
+  // aligned bounding box.
+  Util.getAxialAlignedBoundingBox =
+    function Util_getAxialAlignedBoundingBox(r, m) {
+
+    var p1 = Util.applyTransform(r, m);
+    var p2 = Util.applyTransform(r.slice(2, 4), m);
+    var p3 = Util.applyTransform([r[0], r[3]], m);
+    var p4 = Util.applyTransform([r[2], r[1]], m);
+    return [
+      Math.min(p1[0], p2[0], p3[0], p4[0]),
+      Math.min(p1[1], p2[1], p3[1], p4[1]),
+      Math.max(p1[0], p2[0], p3[0], p4[0]),
+      Math.max(p1[1], p2[1], p3[1], p4[1])
+    ];
+  };
+
+  Util.inverseTransform = function Util_inverseTransform(m) {
+    var d = m[0] * m[3] - m[1] * m[2];
+    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,
+      (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
+  };
+
+  // Apply a generic 3d matrix M on a 3-vector v:
+  //   | a b c |   | X |
+  //   | d e f | x | Y |
+  //   | g h i |   | Z |
+  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],
+  // with v as [X,Y,Z]
+  Util.apply3dTransform = function Util_apply3dTransform(m, v) {
+    return [
+      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],
+      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],
+      m[6] * v[0] + m[7] * v[1] + m[8] * v[2]
+    ];
+  };
+
+  // This calculation uses Singular Value Decomposition.
+  // The SVD can be represented with formula A = USV. We are interested in the
+  // matrix S here because it represents the scale values.
+  Util.singularValueDecompose2dScale =
+    function Util_singularValueDecompose2dScale(m) {
+
+    var transpose = [m[0], m[2], m[1], m[3]];
+
+    // Multiply matrix m with its transpose.
+    var a = m[0] * transpose[0] + m[1] * transpose[2];
+    var b = m[0] * transpose[1] + m[1] * transpose[3];
+    var c = m[2] * transpose[0] + m[3] * transpose[2];
+    var d = m[2] * transpose[1] + m[3] * transpose[3];
+
+    // Solve the second degree polynomial to get roots.
+    var first = (a + d) / 2;
+    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
+    var sx = first + second || 1;
+    var sy = first - second || 1;
+
+    // Scale values are the square roots of the eigenvalues.
+    return [Math.sqrt(sx), Math.sqrt(sy)];
+  };
+
+  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)
+  // For coordinate systems whose origin lies in the bottom-left, this
+  // means normalization to (BL,TR) ordering. For systems with origin in the
+  // top-left, this means (TL,BR) ordering.
+  Util.normalizeRect = function Util_normalizeRect(rect) {
+    var r = rect.slice(0); // clone rect
+    if (rect[0] > rect[2]) {
+      r[0] = rect[2];
+      r[2] = rect[0];
+    }
+    if (rect[1] > rect[3]) {
+      r[1] = rect[3];
+      r[3] = rect[1];
+    }
+    return r;
+  };
+
+  // Returns a rectangle [x1, y1, x2, y2] corresponding to the
+  // intersection of rect1 and rect2. If no intersection, returns 'false'
+  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]
+  Util.intersect = function Util_intersect(rect1, rect2) {
+    function compare(a, b) {
+      return a - b;
+    }
+
+    // Order points along the axes
+    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
+        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
+        result = [];
+
+    rect1 = Util.normalizeRect(rect1);
+    rect2 = Util.normalizeRect(rect2);
+
+    // X: first and second points belong to different rectangles?
+    if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||
+        (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {
+      // Intersection must be between second and third points
+      result[0] = orderedX[1];
+      result[2] = orderedX[2];
+    } else {
+      return false;
+    }
+
+    // Y: first and second points belong to different rectangles?
+    if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||
+        (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {
+      // Intersection must be between second and third points
+      result[1] = orderedY[1];
+      result[3] = orderedY[2];
+    } else {
+      return false;
+    }
+
+    return result;
+  };
+
+  Util.sign = function Util_sign(num) {
+    return num < 0 ? -1 : 1;
+  };
+
+  Util.appendToArray = function Util_appendToArray(arr1, arr2) {
+    Array.prototype.push.apply(arr1, arr2);
+  };
+
+  Util.prependToArray = function Util_prependToArray(arr1, arr2) {
+    Array.prototype.unshift.apply(arr1, arr2);
+  };
+
+  Util.extendObj = function extendObj(obj1, obj2) {
+    for (var key in obj2) {
+      obj1[key] = obj2[key];
+    }
+  };
+
+  Util.getInheritableProperty = function Util_getInheritableProperty(dict,
+                                                                     name) {
+    while (dict && !dict.has(name)) {
+      dict = dict.get('Parent');
+    }
+    if (!dict) {
+      return null;
+    }
+    return dict.get(name);
+  };
+
+  Util.inherit = function Util_inherit(sub, base, prototype) {
+    sub.prototype = Object.create(base.prototype);
+    sub.prototype.constructor = sub;
+    for (var prop in prototype) {
+      sub.prototype[prop] = prototype[prop];
+    }
+  };
+
+  Util.loadScript = function Util_loadScript(src, callback) {
+    var script = document.createElement('script');
+    var loaded = false;
+    script.setAttribute('src', src);
+    if (callback) {
+      script.onload = function() {
+        if (!loaded) {
+          callback();
+        }
+        loaded = true;
+      };
+    }
+    document.getElementsByTagName('head')[0].appendChild(script);
+  };
+
+  return Util;
+})();
+
+/**
+ * PDF page viewport created based on scale, rotation and offset.
+ * @class
+ * @alias PDFJS.PageViewport
+ */
+var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {
+  /**
+   * @constructor
+   * @private
+   * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.
+   * @param scale {number} scale of the viewport.
+   * @param rotation {number} rotations of the viewport in degrees.
+   * @param offsetX {number} offset X
+   * @param offsetY {number} offset Y
+   * @param dontFlip {boolean} if true, axis Y will not be flipped.
+   */
+  function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {
+    this.viewBox = viewBox;
+    this.scale = scale;
+    this.rotation = rotation;
+    this.offsetX = offsetX;
+    this.offsetY = offsetY;
+
+    // creating transform to convert pdf coordinate system to the normal
+    // canvas like coordinates taking in account scale and rotation
+    var centerX = (viewBox[2] + viewBox[0]) / 2;
+    var centerY = (viewBox[3] + viewBox[1]) / 2;
+    var rotateA, rotateB, rotateC, rotateD;
+    rotation = rotation % 360;
+    rotation = rotation < 0 ? rotation + 360 : rotation;
+    switch (rotation) {
+      case 180:
+        rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;
+        break;
+      case 90:
+        rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;
+        break;
+      case 270:
+        rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;
+        break;
+      //case 0:
+      default:
+        rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;
+        break;
+    }
+
+    if (dontFlip) {
+      rotateC = -rotateC; rotateD = -rotateD;
+    }
+
+    var offsetCanvasX, offsetCanvasY;
+    var width, height;
+    if (rotateA === 0) {
+      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
+      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
+      width = Math.abs(viewBox[3] - viewBox[1]) * scale;
+      height = Math.abs(viewBox[2] - viewBox[0]) * scale;
+    } else {
+      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
+      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
+      width = Math.abs(viewBox[2] - viewBox[0]) * scale;
+      height = Math.abs(viewBox[3] - viewBox[1]) * scale;
+    }
+    // creating transform for the following operations:
+    // translate(-centerX, -centerY), rotate and flip vertically,
+    // scale, and translate(offsetCanvasX, offsetCanvasY)
+    this.transform = [
+      rotateA * scale,
+      rotateB * scale,
+      rotateC * scale,
+      rotateD * scale,
+      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,
+      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY
+    ];
+
+    this.width = width;
+    this.height = height;
+    this.fontScale = scale;
+  }
+  PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ {
+    /**
+     * Clones viewport with additional properties.
+     * @param args {Object} (optional) If specified, may contain the 'scale' or
+     * 'rotation' properties to override the corresponding properties in
+     * the cloned viewport.
+     * @returns {PDFJS.PageViewport} Cloned viewport.
+     */
+    clone: function PageViewPort_clone(args) {
+      args = args || {};
+      var scale = 'scale' in args ? args.scale : this.scale;
+      var rotation = 'rotation' in args ? args.rotation : this.rotation;
+      return new PageViewport(this.viewBox.slice(), scale, rotation,
+                              this.offsetX, this.offsetY, args.dontFlip);
+    },
+    /**
+     * Converts PDF point to the viewport coordinates. For examples, useful for
+     * converting PDF location into canvas pixel coordinates.
+     * @param x {number} X coordinate.
+     * @param y {number} Y coordinate.
+     * @returns {Object} Object that contains 'x' and 'y' properties of the
+     * point in the viewport coordinate space.
+     * @see {@link convertToPdfPoint}
+     * @see {@link convertToViewportRectangle}
+     */
+    convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {
+      return Util.applyTransform([x, y], this.transform);
+    },
+    /**
+     * Converts PDF rectangle to the viewport coordinates.
+     * @param rect {Array} xMin, yMin, xMax and yMax coordinates.
+     * @returns {Array} Contains corresponding coordinates of the rectangle
+     * in the viewport coordinate space.
+     * @see {@link convertToViewportPoint}
+     */
+    convertToViewportRectangle:
+      function PageViewport_convertToViewportRectangle(rect) {
+      var tl = Util.applyTransform([rect[0], rect[1]], this.transform);
+      var br = Util.applyTransform([rect[2], rect[3]], this.transform);
+      return [tl[0], tl[1], br[0], br[1]];
+    },
+    /**
+     * Converts viewport coordinates to the PDF location. For examples, useful
+     * for converting canvas pixel location into PDF one.
+     * @param x {number} X coordinate.
+     * @param y {number} Y coordinate.
+     * @returns {Object} Object that contains 'x' and 'y' properties of the
+     * point in the PDF coordinate space.
+     * @see {@link convertToViewportPoint}
+     */
+    convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {
+      return Util.applyInverseTransform([x, y], this.transform);
+    }
+  };
+  return PageViewport;
+})();
+
+var PDFStringTranslateTable = [
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,
+  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,
+  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,
+  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC
+];
+
+function stringToPDFString(str) {
+  var i, n = str.length, strBuf = [];
+  if (str[0] === '\xFE' && str[1] === '\xFF') {
+    // UTF16BE BOM
+    for (i = 2; i < n; i += 2) {
+      strBuf.push(String.fromCharCode(
+        (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));
+    }
+  } else {
+    for (i = 0; i < n; ++i) {
+      var code = PDFStringTranslateTable[str.charCodeAt(i)];
+      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+    }
+  }
+  return strBuf.join('');
+}
+
+function stringToUTF8String(str) {
+  return decodeURIComponent(escape(str));
+}
+
+function isEmptyObj(obj) {
+  for (var key in obj) {
+    return false;
+  }
+  return true;
+}
+
+function isBool(v) {
+  return typeof v === 'boolean';
+}
+
+function isInt(v) {
+  return typeof v === 'number' && ((v | 0) === v);
+}
+
+function isNum(v) {
+  return typeof v === 'number';
+}
+
+function isString(v) {
+  return typeof v === 'string';
+}
+
+function isName(v) {
+  return v instanceof Name;
+}
+
+function isCmd(v, cmd) {
+  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);
+}
+
+function isDict(v, type) {
+  if (!(v instanceof Dict)) {
+    return false;
+  }
+  if (!type) {
+    return true;
+  }
+  var dictType = v.get('Type');
+  return isName(dictType) && dictType.name === type;
+}
+
+function isArray(v) {
+  return v instanceof Array;
+}
+
+function isStream(v) {
+  return typeof v === 'object' && v !== null && v.getBytes !== undefined;
+}
+
+function isArrayBuffer(v) {
+  return typeof v === 'object' && v !== null && v.byteLength !== undefined;
+}
+
+function isRef(v) {
+  return v instanceof Ref;
+}
+
+/**
+ * Promise Capability object.
+ *
+ * @typedef {Object} PromiseCapability
+ * @property {Promise} promise - A promise object.
+ * @property {function} resolve - Fullfills the promise.
+ * @property {function} reject - Rejects the promise.
+ */
+
+/**
+ * Creates a promise capability object.
+ * @alias PDFJS.createPromiseCapability
+ *
+ * @return {PromiseCapability} A capability object contains:
+ * - a Promise, resolve and reject methods.
+ */
+function createPromiseCapability() {
+  var capability = {};
+  capability.promise = new Promise(function (resolve, reject) {
+    capability.resolve = resolve;
+    capability.reject = reject;
+  });
+  return capability;
+}
+
+PDFJS.createPromiseCapability = createPromiseCapability;
+
+/**
+ * Polyfill for Promises:
+ * The following promise implementation tries to generally implement the
+ * Promise/A+ spec. Some notable differences from other promise libaries are:
+ * - There currently isn't a seperate deferred and promise object.
+ * - Unhandled rejections eventually show an error if they aren't handled.
+ *
+ * Based off of the work in:
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=810490
+ */
+(function PromiseClosure() {
+  if (globalScope.Promise) {
+    // Promises existing in the DOM/Worker, checking presence of all/resolve
+    if (typeof globalScope.Promise.all !== 'function') {
+      globalScope.Promise.all = function (iterable) {
+        var count = 0, results = [], resolve, reject;
+        var promise = new globalScope.Promise(function (resolve_, reject_) {
+          resolve = resolve_;
+          reject = reject_;
+        });
+        iterable.forEach(function (p, i) {
+          count++;
+          p.then(function (result) {
+            results[i] = result;
+            count--;
+            if (count === 0) {
+              resolve(results);
+            }
+          }, reject);
+        });
+        if (count === 0) {
+          resolve(results);
+        }
+        return promise;
+      };
+    }
+    if (typeof globalScope.Promise.resolve !== 'function') {
+      globalScope.Promise.resolve = function (value) {
+        return new globalScope.Promise(function (resolve) { resolve(value); });
+      };
+    }
+    if (typeof globalScope.Promise.reject !== 'function') {
+      globalScope.Promise.reject = function (reason) {
+        return new globalScope.Promise(function (resolve, reject) {
+          reject(reason);
+        });
+      };
+    }
+    if (typeof globalScope.Promise.prototype.catch !== 'function') {
+      globalScope.Promise.prototype.catch = function (onReject) {
+        return globalScope.Promise.prototype.then(undefined, onReject);
+      };
+    }
+    return;
+  }
+//#if !MOZCENTRAL
+  var STATUS_PENDING = 0;
+  var STATUS_RESOLVED = 1;
+  var STATUS_REJECTED = 2;
+
+  // In an attempt to avoid silent exceptions, unhandled rejections are
+  // tracked and if they aren't handled in a certain amount of time an
+  // error is logged.
+  var REJECTION_TIMEOUT = 500;
+
+  var HandlerManager = {
+    handlers: [],
+    running: false,
+    unhandledRejections: [],
+    pendingRejectionCheck: false,
+
+    scheduleHandlers: function scheduleHandlers(promise) {
+      if (promise._status === STATUS_PENDING) {
+        return;
+      }
+
+      this.handlers = this.handlers.concat(promise._handlers);
+      promise._handlers = [];
+
+      if (this.running) {
+        return;
+      }
+      this.running = true;
+
+      setTimeout(this.runHandlers.bind(this), 0);
+    },
+
+    runHandlers: function runHandlers() {
+      var RUN_TIMEOUT = 1; // ms
+      var timeoutAt = Date.now() + RUN_TIMEOUT;
+      while (this.handlers.length > 0) {
+        var handler = this.handlers.shift();
+
+        var nextStatus = handler.thisPromise._status;
+        var nextValue = handler.thisPromise._value;
+
+        try {
+          if (nextStatus === STATUS_RESOLVED) {
+            if (typeof handler.onResolve === 'function') {
+              nextValue = handler.onResolve(nextValue);
+            }
+          } else if (typeof handler.onReject === 'function') {
+              nextValue = handler.onReject(nextValue);
+              nextStatus = STATUS_RESOLVED;
+
+              if (handler.thisPromise._unhandledRejection) {
+                this.removeUnhandeledRejection(handler.thisPromise);
+              }
+          }
+        } catch (ex) {
+          nextStatus = STATUS_REJECTED;
+          nextValue = ex;
+        }
+
+        handler.nextPromise._updateStatus(nextStatus, nextValue);
+        if (Date.now() >= timeoutAt) {
+          break;
+        }
+      }
+
+      if (this.handlers.length > 0) {
+        setTimeout(this.runHandlers.bind(this), 0);
+        return;
+      }
+
+      this.running = false;
+    },
+
+    addUnhandledRejection: function addUnhandledRejection(promise) {
+      this.unhandledRejections.push({
+        promise: promise,
+        time: Date.now()
+      });
+      this.scheduleRejectionCheck();
+    },
+
+    removeUnhandeledRejection: function removeUnhandeledRejection(promise) {
+      promise._unhandledRejection = false;
+      for (var i = 0; i < this.unhandledRejections.length; i++) {
+        if (this.unhandledRejections[i].promise === promise) {
+          this.unhandledRejections.splice(i);
+          i--;
+        }
+      }
+    },
+
+    scheduleRejectionCheck: function scheduleRejectionCheck() {
+      if (this.pendingRejectionCheck) {
+        return;
+      }
+      this.pendingRejectionCheck = true;
+      setTimeout(function rejectionCheck() {
+        this.pendingRejectionCheck = false;
+        var now = Date.now();
+        for (var i = 0; i < this.unhandledRejections.length; i++) {
+          if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {
+            var unhandled = this.unhandledRejections[i].promise._value;
+            var msg = 'Unhandled rejection: ' + unhandled;
+            if (unhandled.stack) {
+              msg += '\n' + unhandled.stack;
+            }
+            warn(msg);
+            this.unhandledRejections.splice(i);
+            i--;
+          }
+        }
+        if (this.unhandledRejections.length) {
+          this.scheduleRejectionCheck();
+        }
+      }.bind(this), REJECTION_TIMEOUT);
+    }
+  };
+
+  function Promise(resolver) {
+    this._status = STATUS_PENDING;
+    this._handlers = [];
+    try {
+      resolver.call(this, this._resolve.bind(this), this._reject.bind(this));
+    } catch (e) {
+      this._reject(e);
+    }
+  }
+  /**
+   * Builds a promise that is resolved when all the passed in promises are
+   * resolved.
+   * @param {array} array of data and/or promises to wait for.
+   * @return {Promise} New dependant promise.
+   */
+  Promise.all = function Promise_all(promises) {
+    var resolveAll, rejectAll;
+    var deferred = new Promise(function (resolve, reject) {
+      resolveAll = resolve;
+      rejectAll = reject;
+    });
+    var unresolved = promises.length;
+    var results = [];
+    if (unresolved === 0) {
+      resolveAll(results);
+      return deferred;
+    }
+    function reject(reason) {
+      if (deferred._status === STATUS_REJECTED) {
+        return;
+      }
+      results = [];
+      rejectAll(reason);
+    }
+    for (var i = 0, ii = promises.length; i < ii; ++i) {
+      var promise = promises[i];
+      var resolve = (function(i) {
+        return function(value) {
+          if (deferred._status === STATUS_REJECTED) {
+            return;
+          }
+          results[i] = value;
+          unresolved--;
+          if (unresolved === 0) {
+            resolveAll(results);
+          }
+        };
+      })(i);
+      if (Promise.isPromise(promise)) {
+        promise.then(resolve, reject);
+      } else {
+        resolve(promise);
+      }
+    }
+    return deferred;
+  };
+
+  /**
+   * Checks if the value is likely a promise (has a 'then' function).
+   * @return {boolean} true if value is thenable
+   */
+  Promise.isPromise = function Promise_isPromise(value) {
+    return value && typeof value.then === 'function';
+  };
+
+  /**
+   * Creates resolved promise
+   * @param value resolve value
+   * @returns {Promise}
+   */
+  Promise.resolve = function Promise_resolve(value) {
+    return new Promise(function (resolve) { resolve(value); });
+  };
+
+  /**
+   * Creates rejected promise
+   * @param reason rejection value
+   * @returns {Promise}
+   */
+  Promise.reject = function Promise_reject(reason) {
+    return new Promise(function (resolve, reject) { reject(reason); });
+  };
+
+  Promise.prototype = {
+    _status: null,
+    _value: null,
+    _handlers: null,
+    _unhandledRejection: null,
+
+    _updateStatus: function Promise__updateStatus(status, value) {
+      if (this._status === STATUS_RESOLVED ||
+          this._status === STATUS_REJECTED) {
+        return;
+      }
+
+      if (status === STATUS_RESOLVED &&
+          Promise.isPromise(value)) {
+        value.then(this._updateStatus.bind(this, STATUS_RESOLVED),
+                   this._updateStatus.bind(this, STATUS_REJECTED));
+        return;
+      }
+
+      this._status = status;
+      this._value = value;
+
+      if (status === STATUS_REJECTED && this._handlers.length === 0) {
+        this._unhandledRejection = true;
+        HandlerManager.addUnhandledRejection(this);
+      }
+
+      HandlerManager.scheduleHandlers(this);
+    },
+
+    _resolve: function Promise_resolve(value) {
+      this._updateStatus(STATUS_RESOLVED, value);
+    },
+
+    _reject: function Promise_reject(reason) {
+      this._updateStatus(STATUS_REJECTED, reason);
+    },
+
+    then: function Promise_then(onResolve, onReject) {
+      var nextPromise = new Promise(function (resolve, reject) {
+        this.resolve = resolve;
+        this.reject = reject;
+      });
+      this._handlers.push({
+        thisPromise: this,
+        onResolve: onResolve,
+        onReject: onReject,
+        nextPromise: nextPromise
+      });
+      HandlerManager.scheduleHandlers(this);
+      return nextPromise;
+    },
+
+    catch: function Promise_catch(onReject) {
+      return this.then(undefined, onReject);
+    }
+  };
+
+  globalScope.Promise = Promise;
+//#else
+//throw new Error('DOM Promise is not present');
+//#endif
+})();
+
+var StatTimer = (function StatTimerClosure() {
+  function rpad(str, pad, length) {
+    while (str.length < length) {
+      str += pad;
+    }
+    return str;
+  }
+  function StatTimer() {
+    this.started = {};
+    this.times = [];
+    this.enabled = true;
+  }
+  StatTimer.prototype = {
+    time: function StatTimer_time(name) {
+      if (!this.enabled) {
+        return;
+      }
+      if (name in this.started) {
+        warn('Timer is already running for ' + name);
+      }
+      this.started[name] = Date.now();
+    },
+    timeEnd: function StatTimer_timeEnd(name) {
+      if (!this.enabled) {
+        return;
+      }
+      if (!(name in this.started)) {
+        warn('Timer has not been started for ' + name);
+      }
+      this.times.push({
+        'name': name,
+        'start': this.started[name],
+        'end': Date.now()
+      });
+      // Remove timer from started so it can be called again.
+      delete this.started[name];
+    },
+    toString: function StatTimer_toString() {
+      var i, ii;
+      var times = this.times;
+      var out = '';
+      // Find the longest name for padding purposes.
+      var longest = 0;
+      for (i = 0, ii = times.length; i < ii; ++i) {
+        var name = times[i]['name'];
+        if (name.length > longest) {
+          longest = name.length;
+        }
+      }
+      for (i = 0, ii = times.length; i < ii; ++i) {
+        var span = times[i];
+        var duration = span.end - span.start;
+        out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n';
+      }
+      return out;
+    }
+  };
+  return StatTimer;
+})();
+
+PDFJS.createBlob = function createBlob(data, contentType) {
+  if (typeof Blob !== 'undefined') {
+    return new Blob([data], { type: contentType });
+  }
+  // Blob builder is deprecated in FF14 and removed in FF18.
+  var bb = new MozBlobBuilder();
+  bb.append(data);
+  return bb.getBlob(contentType);
+};
+
+PDFJS.createObjectURL = (function createObjectURLClosure() {
+  // Blob/createObjectURL is not available, falling back to data schema.
+  var digits =
+    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+
+  return function createObjectURL(data, contentType) {
+    if (!PDFJS.disableCreateObjectURL &&
+        typeof URL !== 'undefined' && URL.createObjectURL) {
+      var blob = PDFJS.createBlob(data, contentType);
+      return URL.createObjectURL(blob);
+    }
+
+    var buffer = 'data:' + contentType + ';base64,';
+    for (var i = 0, ii = data.length; i < ii; i += 3) {
+      var b1 = data[i] & 0xFF;
+      var b2 = data[i + 1] & 0xFF;
+      var b3 = data[i + 2] & 0xFF;
+      var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
+      var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
+      var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;
+      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+    }
+    return buffer;
+  };
+})();
+
+function MessageHandler(name, comObj) {
+  this.name = name;
+  this.comObj = comObj;
+  this.callbackIndex = 1;
+  this.postMessageTransfers = true;
+  var callbacksCapabilities = this.callbacksCapabilities = {};
+  var ah = this.actionHandler = {};
+
+  ah['console_log'] = [function ahConsoleLog(data) {
+    console.log.apply(console, data);
+  }];
+  ah['console_error'] = [function ahConsoleError(data) {
+    console.error.apply(console, data);
+  }];
+  ah['_unsupported_feature'] = [function ah_unsupportedFeature(data) {
+    UnsupportedManager.notify(data);
+  }];
+
+  comObj.onmessage = function messageHandlerComObjOnMessage(event) {
+    var data = event.data;
+    if (data.isReply) {
+      var callbackId = data.callbackId;
+      if (data.callbackId in callbacksCapabilities) {
+        var callback = callbacksCapabilities[callbackId];
+        delete callbacksCapabilities[callbackId];
+        if ('error' in data) {
+          callback.reject(data.error);
+        } else {
+          callback.resolve(data.data);
+        }
+      } else {
+        error('Cannot resolve callback ' + callbackId);
+      }
+    } else if (data.action in ah) {
+      var action = ah[data.action];
+      if (data.callbackId) {
+        Promise.resolve().then(function () {
+          return action[0].call(action[1], data.data);
+        }).then(function (result) {
+          comObj.postMessage({
+            isReply: true,
+            callbackId: data.callbackId,
+            data: result
+          });
+        }, function (reason) {
+          comObj.postMessage({
+            isReply: true,
+            callbackId: data.callbackId,
+            error: reason
+          });
+        });
+      } else {
+        action[0].call(action[1], data.data);
+      }
+    } else {
+      error('Unknown action from worker: ' + data.action);
+    }
+  };
+}
+
+MessageHandler.prototype = {
+  on: function messageHandlerOn(actionName, handler, scope) {
+    var ah = this.actionHandler;
+    if (ah[actionName]) {
+      error('There is already an actionName called "' + actionName + '"');
+    }
+    ah[actionName] = [handler, scope];
+  },
+  /**
+   * Sends a message to the comObj to invoke the action with the supplied data.
+   * @param {String} actionName Action to call.
+   * @param {JSON} data JSON data to send.
+   * @param {Array} [transfers] Optional list of transfers/ArrayBuffers
+   */
+  send: function messageHandlerSend(actionName, data, transfers) {
+    var message = {
+      action: actionName,
+      data: data
+    };
+    this.postMessage(message, transfers);
+  },
+  /**
+   * Sends a message to the comObj to invoke the action with the supplied data.
+   * Expects that other side will callback with the response.
+   * @param {String} actionName Action to call.
+   * @param {JSON} data JSON data to send.
+   * @param {Array} [transfers] Optional list of transfers/ArrayBuffers.
+   * @returns {Promise} Promise to be resolved with response data.
+   */
+  sendWithPromise:
+    function messageHandlerSendWithPromise(actionName, data, transfers) {
+    var callbackId = this.callbackIndex++;
+    var message = {
+      action: actionName,
+      data: data,
+      callbackId: callbackId
+    };
+    var capability = createPromiseCapability();
+    this.callbacksCapabilities[callbackId] = capability;
+    try {
+      this.postMessage(message, transfers);
+    } catch (e) {
+      capability.reject(e);
+    }
+    return capability.promise;
+  },
+  /**
+   * Sends raw message to the comObj.
+   * @private
+   * @param message {Object} Raw message.
+   * @param transfers List of transfers/ArrayBuffers, or undefined.
+   */
+  postMessage: function (message, transfers) {
+    if (transfers && this.postMessageTransfers) {
+      this.comObj.postMessage(message, transfers);
+    } else {
+      this.comObj.postMessage(message);
+    }
+  }
+};
+
+function loadJpegStream(id, imageUrl, objs) {
+  var img = new Image();
+  img.onload = (function loadJpegStream_onloadClosure() {
+    objs.resolve(id, img);
+  });
+  img.onerror = (function loadJpegStream_onerrorClosure() {
+    objs.resolve(id, null);
+    warn('Error during JPEG image loading');
+  });
+  img.src = imageUrl;
+}
+
+
+
+//#if (FIREFOX || MOZCENTRAL)
+//
+//Components.utils.import('resource://gre/modules/Services.jsm');
+//
+//var EXPORTED_SYMBOLS = ['NetworkManager'];
+//
+//var console = {
+//  log: function console_log(aMsg) {
+//    var msg = 'network.js: ' + (aMsg.join ? aMsg.join('') : aMsg);
+//    Services.console.logStringMessage(msg);
+//    // TODO(mack): dump() doesn't seem to work here...
+//    dump(msg + '\n');
+//  }
+//}
+//#endif
+
+var NetworkManager = (function NetworkManagerClosure() {
+
+  var OK_RESPONSE = 200;
+  var PARTIAL_CONTENT_RESPONSE = 206;
+
+  function NetworkManager(url, args) {
+    this.url = url;
+    args = args || {};
+    this.isHttp = /^https?:/i.test(url);
+    this.httpHeaders = (this.isHttp && args.httpHeaders) || {};
+    this.withCredentials = args.withCredentials || false;
+    this.getXhr = args.getXhr ||
+      function NetworkManager_getXhr() {
+//#if B2G
+//      return new XMLHttpRequest({ mozSystem: true });
+//#else
+        return new XMLHttpRequest();
+//#endif
+      };
+
+    this.currXhrId = 0;
+    this.pendingRequests = {};
+    this.loadedRequests = {};
+  }
+
+  function getArrayBuffer(xhr) {
+    var data = xhr.response;
+    if (typeof data !== 'string') {
+      return data;
+    }
+    var length = data.length;
+    var array = new Uint8Array(length);
+    for (var i = 0; i < length; i++) {
+      array[i] = data.charCodeAt(i) & 0xFF;
+    }
+    return array.buffer;
+  }
+
+  NetworkManager.prototype = {
+    requestRange: function NetworkManager_requestRange(begin, end, listeners) {
+      var args = {
+        begin: begin,
+        end: end
+      };
+      for (var prop in listeners) {
+        args[prop] = listeners[prop];
+      }
+      return this.request(args);
+    },
+
+    requestFull: function NetworkManager_requestFull(listeners) {
+      return this.request(listeners);
+    },
+
+    request: function NetworkManager_request(args) {
+      var xhr = this.getXhr();
+      var xhrId = this.currXhrId++;
+      var pendingRequest = this.pendingRequests[xhrId] = {
+        xhr: xhr
+      };
+
+      xhr.open('GET', this.url);
+      xhr.withCredentials = this.withCredentials;
+      for (var property in this.httpHeaders) {
+        var value = this.httpHeaders[property];
+        if (typeof value === 'undefined') {
+          continue;
+        }
+        xhr.setRequestHeader(property, value);
+      }
+      if (this.isHttp && 'begin' in args && 'end' in args) {
+        var rangeStr = args.begin + '-' + (args.end - 1);
+        xhr.setRequestHeader('Range', 'bytes=' + rangeStr);
+        pendingRequest.expectedStatus = 206;
+      } else {
+        pendingRequest.expectedStatus = 200;
+      }
+
+      if (args.onProgressiveData) {
+        // Some legacy browsers might throw an exception.
+        try {
+          xhr.responseType = 'moz-chunked-arraybuffer';
+        } catch(e) {}
+        if (xhr.responseType === 'moz-chunked-arraybuffer') {
+          pendingRequest.onProgressiveData = args.onProgressiveData;
+          pendingRequest.mozChunked = true;
+        } else {
+          xhr.responseType = 'arraybuffer';
+        }
+      } else {
+        xhr.responseType = 'arraybuffer';
+      }
+
+      if (args.onError) {
+        xhr.onerror = function(evt) {
+          args.onError(xhr.status);
+        };
+      }
+      xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);
+      xhr.onprogress = this.onProgress.bind(this, xhrId);
+
+      pendingRequest.onHeadersReceived = args.onHeadersReceived;
+      pendingRequest.onDone = args.onDone;
+      pendingRequest.onError = args.onError;
+      pendingRequest.onProgress = args.onProgress;
+
+      xhr.send(null);
+
+      return xhrId;
+    },
+
+    onProgress: function NetworkManager_onProgress(xhrId, evt) {
+      var pendingRequest = this.pendingRequests[xhrId];
+      if (!pendingRequest) {
+        // Maybe abortRequest was called...
+        return;
+      }
+
+      if (pendingRequest.mozChunked) {
+        var chunk = getArrayBuffer(pendingRequest.xhr);
+        pendingRequest.onProgressiveData(chunk);
+      }
+
+      var onProgress = pendingRequest.onProgress;
+      if (onProgress) {
+        onProgress(evt);
+      }
+    },
+
+    onStateChange: function NetworkManager_onStateChange(xhrId, evt) {
+      var pendingRequest = this.pendingRequests[xhrId];
+      if (!pendingRequest) {
+        // Maybe abortRequest was called...
+        return;
+      }
+
+      var xhr = pendingRequest.xhr;
+      if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {
+        pendingRequest.onHeadersReceived();
+        delete pendingRequest.onHeadersReceived;
+      }
+
+      if (xhr.readyState !== 4) {
+        return;
+      }
+
+      if (!(xhrId in this.pendingRequests)) {
+        // The XHR request might have been aborted in onHeadersReceived()
+        // callback, in which case we should abort request
+        return;
+      }
+
+      delete this.pendingRequests[xhrId];
+
+      // success status == 0 can be on ftp, file and other protocols
+      if (xhr.status === 0 && this.isHttp) {
+        if (pendingRequest.onError) {
+          pendingRequest.onError(xhr.status);
+        }
+        return;
+      }
+      var xhrStatus = xhr.status || OK_RESPONSE;
+
+      // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:
+      // "A server MAY ignore the Range header". This means it's possible to
+      // get a 200 rather than a 206 response from a range request.
+      var ok_response_on_range_request =
+          xhrStatus === OK_RESPONSE &&
+          pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;
+
+      if (!ok_response_on_range_request &&
+          xhrStatus !== pendingRequest.expectedStatus) {
+        if (pendingRequest.onError) {
+          pendingRequest.onError(xhr.status);
+        }
+        return;
+      }
+
+      this.loadedRequests[xhrId] = true;
+
+      var chunk = getArrayBuffer(xhr);
+      if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {
+        var rangeHeader = xhr.getResponseHeader('Content-Range');
+        var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader);
+        var begin = parseInt(matches[1], 10);
+        pendingRequest.onDone({
+          begin: begin,
+          chunk: chunk
+        });
+      } else if (pendingRequest.onProgressiveData) {
+        pendingRequest.onDone(null);
+      } else {
+        pendingRequest.onDone({
+          begin: 0,
+          chunk: chunk
+        });
+      }
+    },
+
+    hasPendingRequests: function NetworkManager_hasPendingRequests() {
+      for (var xhrId in this.pendingRequests) {
+        return true;
+      }
+      return false;
+    },
+
+    getRequestXhr: function NetworkManager_getXhr(xhrId) {
+      return this.pendingRequests[xhrId].xhr;
+    },
+
+    isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {
+      return !!(this.pendingRequests[xhrId].onProgressiveData);
+    },
+
+    isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {
+      return xhrId in this.pendingRequests;
+    },
+
+    isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {
+      return xhrId in this.loadedRequests;
+    },
+
+    abortAllRequests: function NetworkManager_abortAllRequests() {
+      for (var xhrId in this.pendingRequests) {
+        this.abortRequest(xhrId | 0);
+      }
+    },
+
+    abortRequest: function NetworkManager_abortRequest(xhrId) {
+      var xhr = this.pendingRequests[xhrId].xhr;
+      delete this.pendingRequests[xhrId];
+      xhr.abort();
+    }
+  };
+
+  return NetworkManager;
+})();
+
+
+var ChunkedStream = (function ChunkedStreamClosure() {
+  function ChunkedStream(length, chunkSize, manager) {
+    this.bytes = new Uint8Array(length);
+    this.start = 0;
+    this.pos = 0;
+    this.end = length;
+    this.chunkSize = chunkSize;
+    this.loadedChunks = [];
+    this.numChunksLoaded = 0;
+    this.numChunks = Math.ceil(length / chunkSize);
+    this.manager = manager;
+    this.progressiveDataLength = 0;
+    this.lastSuccessfulEnsureByteChunk = -1;  // a single-entry cache
+  }
+
+  // required methods for a stream. if a particular stream does not
+  // implement these, an error should be thrown
+  ChunkedStream.prototype = {
+
+    getMissingChunks: function ChunkedStream_getMissingChunks() {
+      var chunks = [];
+      for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) {
+        if (!this.loadedChunks[chunk]) {
+          chunks.push(chunk);
+        }
+      }
+      return chunks;
+    },
+
+    getBaseStreams: function ChunkedStream_getBaseStreams() {
+      return [this];
+    },
+
+    allChunksLoaded: function ChunkedStream_allChunksLoaded() {
+      return this.numChunksLoaded === this.numChunks;
+    },
+
+    onReceiveData: function ChunkedStream_onReceiveData(begin, chunk) {
+      var end = begin + chunk.byteLength;
+
+      assert(begin % this.chunkSize === 0, 'Bad begin offset: ' + begin);
+      // Using this.length is inaccurate here since this.start can be moved
+      // See ChunkedStream.moveStart()
+      var length = this.bytes.length;
+      assert(end % this.chunkSize === 0 || end === length,
+             'Bad end offset: ' + end);
+
+      this.bytes.set(new Uint8Array(chunk), begin);
+      var chunkSize = this.chunkSize;
+      var beginChunk = Math.floor(begin / chunkSize);
+      var endChunk = Math.floor((end - 1) / chunkSize) + 1;
+      var curChunk;
+
+      for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {
+        if (!this.loadedChunks[curChunk]) {
+          this.loadedChunks[curChunk] = true;
+          ++this.numChunksLoaded;
+        }
+      }
+    },
+
+    onReceiveProgressiveData:
+        function ChunkedStream_onReceiveProgressiveData(data) {
+      var position = this.progressiveDataLength;
+      var beginChunk = Math.floor(position / this.chunkSize);
+
+      this.bytes.set(new Uint8Array(data), position);
+      position += data.byteLength;
+      this.progressiveDataLength = position;
+      var endChunk = position >= this.end ? this.numChunks :
+                     Math.floor(position / this.chunkSize);
+      var curChunk;
+      for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {
+        if (!this.loadedChunks[curChunk]) {
+          this.loadedChunks[curChunk] = true;
+          ++this.numChunksLoaded;
+        }
+      }
+    },
+
+    ensureByte: function ChunkedStream_ensureByte(pos) {
+      var chunk = Math.floor(pos / this.chunkSize);
+      if (chunk === this.lastSuccessfulEnsureByteChunk) {
+        return;
+      }
+
+      if (!this.loadedChunks[chunk]) {
+        throw new MissingDataException(pos, pos + 1);
+      }
+      this.lastSuccessfulEnsureByteChunk = chunk;
+    },
+
+    ensureRange: function ChunkedStream_ensureRange(begin, end) {
+      if (begin >= end) {
+        return;
+      }
+
+      if (end <= this.progressiveDataLength) {
+        return;
+      }
+
+      var chunkSize = this.chunkSize;
+      var beginChunk = Math.floor(begin / chunkSize);
+      var endChunk = Math.floor((end - 1) / chunkSize) + 1;
+      for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
+        if (!this.loadedChunks[chunk]) {
+          throw new MissingDataException(begin, end);
+        }
+      }
+    },
+
+    nextEmptyChunk: function ChunkedStream_nextEmptyChunk(beginChunk) {
+      var chunk, n;
+      for (chunk = beginChunk, n = this.numChunks; chunk < n; ++chunk) {
+        if (!this.loadedChunks[chunk]) {
+          return chunk;
+        }
+      }
+      // Wrap around to beginning
+      for (chunk = 0; chunk < beginChunk; ++chunk) {
+        if (!this.loadedChunks[chunk]) {
+          return chunk;
+        }
+      }
+      return null;
+    },
+
+    hasChunk: function ChunkedStream_hasChunk(chunk) {
+      return !!this.loadedChunks[chunk];
+    },
+
+    get length() {
+      return this.end - this.start;
+    },
+
+    get isEmpty() {
+      return this.length === 0;
+    },
+
+    getByte: function ChunkedStream_getByte() {
+      var pos = this.pos;
+      if (pos >= this.end) {
+        return -1;
+      }
+      this.ensureByte(pos);
+      return this.bytes[this.pos++];
+    },
+
+    getUint16: function ChunkedStream_getUint16() {
+      var b0 = this.getByte();
+      var b1 = this.getByte();
+      if (b0 === -1 || b1 === -1) {
+        return -1;
+      }
+      return (b0 << 8) + b1;
+    },
+
+    getInt32: function ChunkedStream_getInt32() {
+      var b0 = this.getByte();
+      var b1 = this.getByte();
+      var b2 = this.getByte();
+      var b3 = this.getByte();
+      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
+    },
+
+    // returns subarray of original buffer
+    // should only be read
+    getBytes: function ChunkedStream_getBytes(length) {
+      var bytes = this.bytes;
+      var pos = this.pos;
+      var strEnd = this.end;
+
+      if (!length) {
+        this.ensureRange(pos, strEnd);
+        return bytes.subarray(pos, strEnd);
+      }
+
+      var end = pos + length;
+      if (end > strEnd) {
+        end = strEnd;
+      }
+      this.ensureRange(pos, end);
+
+      this.pos = end;
+      return bytes.subarray(pos, end);
+    },
+
+    peekByte: function ChunkedStream_peekByte() {
+      var peekedByte = this.getByte();
+      this.pos--;
+      return peekedByte;
+    },
+
+    peekBytes: function ChunkedStream_peekBytes(length) {
+      var bytes = this.getBytes(length);
+      this.pos -= bytes.length;
+      return bytes;
+    },
+
+    getByteRange: function ChunkedStream_getBytes(begin, end) {
+      this.ensureRange(begin, end);
+      return this.bytes.subarray(begin, end);
+    },
+
+    skip: function ChunkedStream_skip(n) {
+      if (!n) {
+        n = 1;
+      }
+      this.pos += n;
+    },
+
+    reset: function ChunkedStream_reset() {
+      this.pos = this.start;
+    },
+
+    moveStart: function ChunkedStream_moveStart() {
+      this.start = this.pos;
+    },
+
+    makeSubStream: function ChunkedStream_makeSubStream(start, length, dict) {
+      this.ensureRange(start, start + length);
+
+      function ChunkedStreamSubstream() {}
+      ChunkedStreamSubstream.prototype = Object.create(this);
+      ChunkedStreamSubstream.prototype.getMissingChunks = function() {
+        var chunkSize = this.chunkSize;
+        var beginChunk = Math.floor(this.start / chunkSize);
+        var endChunk = Math.floor((this.end - 1) / chunkSize) + 1;
+        var missingChunks = [];
+        for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
+          if (!this.loadedChunks[chunk]) {
+            missingChunks.push(chunk);
+          }
+        }
+        return missingChunks;
+      };
+      var subStream = new ChunkedStreamSubstream();
+      subStream.pos = subStream.start = start;
+      subStream.end = start + length || this.end;
+      subStream.dict = dict;
+      return subStream;
+    },
+
+    isStream: true
+  };
+
+  return ChunkedStream;
+})();
+
+var ChunkedStreamManager = (function ChunkedStreamManagerClosure() {
+
+  function ChunkedStreamManager(length, chunkSize, url, args) {
+    this.stream = new ChunkedStream(length, chunkSize, this);
+    this.length = length;
+    this.chunkSize = chunkSize;
+    this.url = url;
+    this.disableAutoFetch = args.disableAutoFetch;
+    var msgHandler = this.msgHandler = args.msgHandler;
+
+    if (args.chunkedViewerLoading) {
+      msgHandler.on('OnDataRange', this.onReceiveData.bind(this));
+      msgHandler.on('OnDataProgress', this.onProgress.bind(this));
+      this.sendRequest = function ChunkedStreamManager_sendRequest(begin, end) {
+        msgHandler.send('RequestDataRange', { begin: begin, end: end });
+      };
+    } else {
+
+      var getXhr = function getXhr() {
+//#if B2G
+//      return new XMLHttpRequest({ mozSystem: true });
+//#else
+        return new XMLHttpRequest();
+//#endif
+      };
+      this.networkManager = new NetworkManager(this.url, {
+        getXhr: getXhr,
+        httpHeaders: args.httpHeaders,
+        withCredentials: args.withCredentials
+      });
+      this.sendRequest = function ChunkedStreamManager_sendRequest(begin, end) {
+        this.networkManager.requestRange(begin, end, {
+          onDone: this.onReceiveData.bind(this),
+          onProgress: this.onProgress.bind(this)
+        });
+      };
+    }
+
+    this.currRequestId = 0;
+
+    this.chunksNeededByRequest = {};
+    this.requestsByChunk = {};
+    this.callbacksByRequest = {};
+    this.progressiveDataLength = 0;
+
+    this._loadedStreamCapability = createPromiseCapability();
+
+    if (args.initialData) {
+      this.onReceiveData({chunk: args.initialData});
+    }
+  }
+
+  ChunkedStreamManager.prototype = {
+    onLoadedStream: function ChunkedStreamManager_getLoadedStream() {
+      return this._loadedStreamCapability.promise;
+    },
+
+    // Get all the chunks that are not yet loaded and groups them into
+    // contiguous ranges to load in as few requests as possible
+    requestAllChunks: function ChunkedStreamManager_requestAllChunks() {
+      var missingChunks = this.stream.getMissingChunks();
+      this.requestChunks(missingChunks);
+      return this._loadedStreamCapability.promise;
+    },
+
+    requestChunks: function ChunkedStreamManager_requestChunks(chunks,
+                                                               callback) {
+      var requestId = this.currRequestId++;
+
+      var chunksNeeded;
+      var i, ii;
+      this.chunksNeededByRequest[requestId] = chunksNeeded = {};
+      for (i = 0, ii = chunks.length; i < ii; i++) {
+        if (!this.stream.hasChunk(chunks[i])) {
+          chunksNeeded[chunks[i]] = true;
+        }
+      }
+
+      if (isEmptyObj(chunksNeeded)) {
+        if (callback) {
+          callback();
+        }
+        return;
+      }
+
+      this.callbacksByRequest[requestId] = callback;
+
+      var chunksToRequest = [];
+      for (var chunk in chunksNeeded) {
+        chunk = chunk | 0;
+        if (!(chunk in this.requestsByChunk)) {
+          this.requestsByChunk[chunk] = [];
+          chunksToRequest.push(chunk);
+        }
+        this.requestsByChunk[chunk].push(requestId);
+      }
+
+      if (!chunksToRequest.length) {
+        return;
+      }
+
+      var groupedChunksToRequest = this.groupChunks(chunksToRequest);
+
+      for (i = 0; i < groupedChunksToRequest.length; ++i) {
+        var groupedChunk = groupedChunksToRequest[i];
+        var begin = groupedChunk.beginChunk * this.chunkSize;
+        var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);
+        this.sendRequest(begin, end);
+      }
+    },
+
+    getStream: function ChunkedStreamManager_getStream() {
+      return this.stream;
+    },
+
+    // Loads any chunks in the requested range that are not yet loaded
+    requestRange: function ChunkedStreamManager_requestRange(
+                      begin, end, callback) {
+
+      end = Math.min(end, this.length);
+
+      var beginChunk = this.getBeginChunk(begin);
+      var endChunk = this.getEndChunk(end);
+
+      var chunks = [];
+      for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
+        chunks.push(chunk);
+      }
+
+      this.requestChunks(chunks, callback);
+    },
+
+    requestRanges: function ChunkedStreamManager_requestRanges(ranges,
+                                                               callback) {
+      ranges = ranges || [];
+      var chunksToRequest = [];
+
+      for (var i = 0; i < ranges.length; i++) {
+        var beginChunk = this.getBeginChunk(ranges[i].begin);
+        var endChunk = this.getEndChunk(ranges[i].end);
+        for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
+          if (chunksToRequest.indexOf(chunk) < 0) {
+            chunksToRequest.push(chunk);
+          }
+        }
+      }
+
+      chunksToRequest.sort(function(a, b) { return a - b; });
+      this.requestChunks(chunksToRequest, callback);
+    },
+
+    // Groups a sorted array of chunks into as few continguous larger
+    // chunks as possible
+    groupChunks: function ChunkedStreamManager_groupChunks(chunks) {
+      var groupedChunks = [];
+      var beginChunk = -1;
+      var prevChunk = -1;
+      for (var i = 0; i < chunks.length; ++i) {
+        var chunk = chunks[i];
+
+        if (beginChunk < 0) {
+          beginChunk = chunk;
+        }
+
+        if (prevChunk >= 0 && prevChunk + 1 !== chunk) {
+          groupedChunks.push({ beginChunk: beginChunk,
+                               endChunk: prevChunk + 1 });
+          beginChunk = chunk;
+        }
+        if (i + 1 === chunks.length) {
+          groupedChunks.push({ beginChunk: beginChunk,
+                               endChunk: chunk + 1 });
+        }
+
+        prevChunk = chunk;
+      }
+      return groupedChunks;
+    },
+
+    onProgress: function ChunkedStreamManager_onProgress(args) {
+      var bytesLoaded = (this.stream.numChunksLoaded * this.chunkSize +
+                         args.loaded);
+      this.msgHandler.send('DocProgress', {
+        loaded: bytesLoaded,
+        total: this.length
+      });
+    },
+
+    onReceiveData: function ChunkedStreamManager_onReceiveData(args) {
+      var chunk = args.chunk;
+      var isProgressive = args.begin === undefined;
+      var begin = isProgressive ? this.progressiveDataLength : args.begin;
+      var end = begin + chunk.byteLength;
+
+      var beginChunk = Math.floor(begin / this.chunkSize);
+      var endChunk = end < this.length ? Math.floor(end / this.chunkSize) :
+                                         Math.ceil(end / this.chunkSize);
+
+      if (isProgressive) {
+        this.stream.onReceiveProgressiveData(chunk);
+        this.progressiveDataLength = end;
+      } else {
+        this.stream.onReceiveData(begin, chunk);
+      }
+
+      if (this.stream.allChunksLoaded()) {
+        this._loadedStreamCapability.resolve(this.stream);
+      }
+
+      var loadedRequests = [];
+      var i, requestId;
+      for (chunk = beginChunk; chunk < endChunk; ++chunk) {
+        // The server might return more chunks than requested
+        var requestIds = this.requestsByChunk[chunk] || [];
+        delete this.requestsByChunk[chunk];
+
+        for (i = 0; i < requestIds.length; ++i) {
+          requestId = requestIds[i];
+          var chunksNeeded = this.chunksNeededByRequest[requestId];
+          if (chunk in chunksNeeded) {
+            delete chunksNeeded[chunk];
+          }
+
+          if (!isEmptyObj(chunksNeeded)) {
+            continue;
+          }
+
+          loadedRequests.push(requestId);
+        }
+      }
+
+      // If there are no pending requests, automatically fetch the next
+      // unfetched chunk of the PDF
+      if (!this.disableAutoFetch && isEmptyObj(this.requestsByChunk)) {
+        var nextEmptyChunk;
+        if (this.stream.numChunksLoaded === 1) {
+          // This is a special optimization so that after fetching the first
+          // chunk, rather than fetching the second chunk, we fetch the last
+          // chunk.
+          var lastChunk = this.stream.numChunks - 1;
+          if (!this.stream.hasChunk(lastChunk)) {
+            nextEmptyChunk = lastChunk;
+          }
+        } else {
+          nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);
+        }
+        if (isInt(nextEmptyChunk)) {
+          this.requestChunks([nextEmptyChunk]);
+        }
+      }
+
+      for (i = 0; i < loadedRequests.length; ++i) {
+        requestId = loadedRequests[i];
+        var callback = this.callbacksByRequest[requestId];
+        delete this.callbacksByRequest[requestId];
+        if (callback) {
+          callback();
+        }
+      }
+
+      this.msgHandler.send('DocProgress', {
+        loaded: this.stream.numChunksLoaded * this.chunkSize,
+        total: this.length
+      });
+    },
+
+    onError: function ChunkedStreamManager_onError(err) {
+      this._loadedStreamCapability.reject(err);
+    },
+
+    getBeginChunk: function ChunkedStreamManager_getBeginChunk(begin) {
+      var chunk = Math.floor(begin / this.chunkSize);
+      return chunk;
+    },
+
+    getEndChunk: function ChunkedStreamManager_getEndChunk(end) {
+      if (end % this.chunkSize === 0) {
+        return end / this.chunkSize;
+      }
+
+      // 0 -> 0
+      // 1 -> 1
+      // 99 -> 1
+      // 100 -> 1
+      // 101 -> 2
+      var chunk = Math.floor((end - 1) / this.chunkSize) + 1;
+      return chunk;
+    }
+  };
+
+  return ChunkedStreamManager;
+})();
+
+
+// The maximum number of bytes fetched per range request
+var RANGE_CHUNK_SIZE = 65536;
+
+// TODO(mack): Make use of PDFJS.Util.inherit() when it becomes available
+var BasePdfManager = (function BasePdfManagerClosure() {
+  function BasePdfManager() {
+    throw new Error('Cannot initialize BaseManagerManager');
+  }
+
+  BasePdfManager.prototype = {
+    onLoadedStream: function BasePdfManager_onLoadedStream() {
+      throw new NotImplementedException();
+    },
+
+    ensureDoc: function BasePdfManager_ensureDoc(prop, args) {
+      return this.ensure(this.pdfDocument, prop, args);
+    },
+
+    ensureXRef: function BasePdfManager_ensureXRef(prop, args) {
+      return this.ensure(this.pdfDocument.xref, prop, args);
+    },
+
+    ensureCatalog: function BasePdfManager_ensureCatalog(prop, args) {
+      return this.ensure(this.pdfDocument.catalog, prop, args);
+    },
+
+    getPage: function BasePdfManager_pagePage(pageIndex) {
+      return this.pdfDocument.getPage(pageIndex);
+    },
+
+    cleanup: function BasePdfManager_cleanup() {
+      return this.pdfDocument.cleanup();
+    },
+
+    ensure: function BasePdfManager_ensure(obj, prop, args) {
+      return new NotImplementedException();
+    },
+
+    requestRange: function BasePdfManager_ensure(begin, end) {
+      return new NotImplementedException();
+    },
+
+    requestLoadedStream: function BasePdfManager_requestLoadedStream() {
+      return new NotImplementedException();
+    },
+
+    sendProgressiveData: function BasePdfManager_sendProgressiveData(chunk) {
+      return new NotImplementedException();
+    },
+
+    updatePassword: function BasePdfManager_updatePassword(password) {
+      this.pdfDocument.xref.password = this.password = password;
+      if (this._passwordChangedCapability) {
+        this._passwordChangedCapability.resolve();
+      }
+    },
+
+    passwordChanged: function BasePdfManager_passwordChanged() {
+      this._passwordChangedCapability = createPromiseCapability();
+      return this._passwordChangedCapability.promise;
+    },
+
+    terminate: function BasePdfManager_terminate() {
+      return new NotImplementedException();
+    }
+  };
+
+  return BasePdfManager;
+})();
+
+var LocalPdfManager = (function LocalPdfManagerClosure() {
+  function LocalPdfManager(data, password) {
+    var stream = new Stream(data);
+    this.pdfDocument = new PDFDocument(this, stream, password);
+    this._loadedStreamCapability = createPromiseCapability();
+    this._loadedStreamCapability.resolve(stream);
+  }
+
+  LocalPdfManager.prototype = Object.create(BasePdfManager.prototype);
+  LocalPdfManager.prototype.constructor = LocalPdfManager;
+
+  LocalPdfManager.prototype.ensure =
+      function LocalPdfManager_ensure(obj, prop, args) {
+    return new Promise(function (resolve, reject) {
+      try {
+        var value = obj[prop];
+        var result;
+        if (typeof value === 'function') {
+          result = value.apply(obj, args);
+        } else {
+          result = value;
+        }
+        resolve(result);
+      } catch (e) {
+        reject(e);
+      }
+    });
+  };
+
+  LocalPdfManager.prototype.requestRange =
+      function LocalPdfManager_requestRange(begin, end) {
+    return Promise.resolve();
+  };
+
+  LocalPdfManager.prototype.requestLoadedStream =
+      function LocalPdfManager_requestLoadedStream() {
+  };
+
+  LocalPdfManager.prototype.onLoadedStream =
+      function LocalPdfManager_getLoadedStream() {
+    return this._loadedStreamCapability.promise;
+  };
+
+  LocalPdfManager.prototype.terminate =
+      function LocalPdfManager_terminate() {
+    return;
+  };
+
+  return LocalPdfManager;
+})();
+
+var NetworkPdfManager = (function NetworkPdfManagerClosure() {
+  function NetworkPdfManager(args, msgHandler) {
+
+    this.msgHandler = msgHandler;
+
+    var params = {
+      msgHandler: msgHandler,
+      httpHeaders: args.httpHeaders,
+      withCredentials: args.withCredentials,
+      chunkedViewerLoading: args.chunkedViewerLoading,
+      disableAutoFetch: args.disableAutoFetch,
+      initialData: args.initialData
+    };
+    this.streamManager = new ChunkedStreamManager(args.length, RANGE_CHUNK_SIZE,
+                                                  args.url, params);
+
+    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream(),
+                                    args.password);
+  }
+
+  NetworkPdfManager.prototype = Object.create(BasePdfManager.prototype);
+  NetworkPdfManager.prototype.constructor = NetworkPdfManager;
+
+  NetworkPdfManager.prototype.ensure =
+      function NetworkPdfManager_ensure(obj, prop, args) {
+    var pdfManager = this;
+
+    return new Promise(function (resolve, reject) {
+      function ensureHelper() {
+        try {
+          var result;
+          var value = obj[prop];
+          if (typeof value === 'function') {
+            result = value.apply(obj, args);
+          } else {
+            result = value;
+          }
+          resolve(result);
+        } catch(e) {
+          if (!(e instanceof MissingDataException)) {
+            reject(e);
+            return;
+          }
+          pdfManager.streamManager.requestRange(e.begin, e.end, ensureHelper);
+        }
+      }
+
+      ensureHelper();
+    });
+  };
+
+  NetworkPdfManager.prototype.requestRange =
+      function NetworkPdfManager_requestRange(begin, end) {
+    return new Promise(function (resolve) {
+      this.streamManager.requestRange(begin, end, function() {
+        resolve();
+      });
+    }.bind(this));
+  };
+
+  NetworkPdfManager.prototype.requestLoadedStream =
+      function NetworkPdfManager_requestLoadedStream() {
+    this.streamManager.requestAllChunks();
+  };
+
+  NetworkPdfManager.prototype.sendProgressiveData =
+      function NetworkPdfManager_sendProgressiveData(chunk) {
+    this.streamManager.onReceiveData({ chunk: chunk });
+  };
+
+  NetworkPdfManager.prototype.onLoadedStream =
+      function NetworkPdfManager_getLoadedStream() {
+    return this.streamManager.onLoadedStream();
+  };
+
+  NetworkPdfManager.prototype.terminate =
+      function NetworkPdfManager_terminate() {
+    this.streamManager.networkManager.abortAllRequests();
+  };
+
+  return NetworkPdfManager;
+})();
+
+
+var Page = (function PageClosure() {
+
+  var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
+
+  function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache) {
+    this.pdfManager = pdfManager;
+    this.pageIndex = pageIndex;
+    this.pageDict = pageDict;
+    this.xref = xref;
+    this.ref = ref;
+    this.fontCache = fontCache;
+    this.idCounters = {
+      obj: 0
+    };
+    this.resourcesPromise = null;
+  }
+
+  Page.prototype = {
+    getPageProp: function Page_getPageProp(key) {
+      return this.pageDict.get(key);
+    },
+
+    getInheritedPageProp: function Page_inheritPageProp(key) {
+      var dict = this.pageDict;
+      var value = dict.get(key);
+      while (value === undefined) {
+        dict = dict.get('Parent');
+        if (!dict) {
+          break;
+        }
+        value = dict.get(key);
+      }
+      return value;
+    },
+
+    get content() {
+      return this.getPageProp('Contents');
+    },
+
+    get resources() {
+      var value = this.getInheritedPageProp('Resources');
+      // For robustness: The spec states that a \Resources entry has to be
+      // present, but can be empty. Some document omit it still. In this case
+      // return an empty dictionary:
+      if (value === undefined) {
+        value = Dict.empty;
+      }
+      return shadow(this, 'resources', value);
+    },
+
+    get mediaBox() {
+      var obj = this.getInheritedPageProp('MediaBox');
+      // Reset invalid media box to letter size.
+      if (!isArray(obj) || obj.length !== 4) {
+        obj = LETTER_SIZE_MEDIABOX;
+      }
+      return shadow(this, 'mediaBox', obj);
+    },
+
+    get view() {
+      var mediaBox = this.mediaBox;
+      var cropBox = this.getInheritedPageProp('CropBox');
+      if (!isArray(cropBox) || cropBox.length !== 4) {
+        return shadow(this, 'view', mediaBox);
+      }
+
+      // From the spec, 6th ed., p.963:
+      // "The crop, bleed, trim, and art boxes should not ordinarily
+      // extend beyond the boundaries of the media box. If they do, they are
+      // effectively reduced to their intersection with the media box."
+      cropBox = Util.intersect(cropBox, mediaBox);
+      if (!cropBox) {
+        return shadow(this, 'view', mediaBox);
+      }
+      return shadow(this, 'view', cropBox);
+    },
+
+    get annotationRefs() {
+      return shadow(this, 'annotationRefs',
+                    this.getInheritedPageProp('Annots'));
+    },
+
+    get rotate() {
+      var rotate = this.getInheritedPageProp('Rotate') || 0;
+      // Normalize rotation so it's a multiple of 90 and between 0 and 270
+      if (rotate % 90 !== 0) {
+        rotate = 0;
+      } else if (rotate >= 360) {
+        rotate = rotate % 360;
+      } else if (rotate < 0) {
+        // The spec doesn't cover negatives, assume its counterclockwise
+        // rotation. The following is the other implementation of modulo.
+        rotate = ((rotate % 360) + 360) % 360;
+      }
+      return shadow(this, 'rotate', rotate);
+    },
+
+    getContentStream: function Page_getContentStream() {
+      var content = this.content;
+      var stream;
+      if (isArray(content)) {
+        // fetching items
+        var xref = this.xref;
+        var i, n = content.length;
+        var streams = [];
+        for (i = 0; i < n; ++i) {
+          streams.push(xref.fetchIfRef(content[i]));
+        }
+        stream = new StreamsSequenceStream(streams);
+      } else if (isStream(content)) {
+        stream = content;
+      } else {
+        // replacing non-existent page content with empty one
+        stream = new NullStream();
+      }
+      return stream;
+    },
+
+    loadResources: function Page_loadResources(keys) {
+      if (!this.resourcesPromise) {
+        // TODO: add async getInheritedPageProp and remove this.
+        this.resourcesPromise = this.pdfManager.ensure(this, 'resources');
+      }
+      return this.resourcesPromise.then(function resourceSuccess() {
+        var objectLoader = new ObjectLoader(this.resources.map,
+                                            keys,
+                                            this.xref);
+        return objectLoader.load();
+      }.bind(this));
+    },
+
+    getOperatorList: function Page_getOperatorList(handler, intent) {
+      var self = this;
+
+      var pdfManager = this.pdfManager;
+      var contentStreamPromise = pdfManager.ensure(this, 'getContentStream',
+                                                   []);
+      var resourcesPromise = this.loadResources([
+        'ExtGState',
+        'ColorSpace',
+        'Pattern',
+        'Shading',
+        'XObject',
+        'Font'
+        // ProcSet
+        // Properties
+      ]);
+
+      var partialEvaluator = new PartialEvaluator(pdfManager, this.xref,
+                                                  handler, this.pageIndex,
+                                                  'p' + this.pageIndex + '_',
+                                                  this.idCounters,
+                                                  this.fontCache);
+
+      var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);
+      var pageListPromise = dataPromises.then(function(data) {
+        var contentStream = data[0];
+        var opList = new OperatorList(intent, handler, self.pageIndex);
+
+        handler.send('StartRenderPage', {
+          transparency: partialEvaluator.hasBlendModes(self.resources),
+          pageIndex: self.pageIndex,
+          intent: intent
+        });
+        return partialEvaluator.getOperatorList(contentStream, self.resources,
+          opList).then(function () {
+            return opList;
+          });
+      });
+
+      var annotationsPromise = pdfManager.ensure(this, 'annotations');
+      return Promise.all([pageListPromise, annotationsPromise]).then(
+          function(datas) {
+        var pageOpList = datas[0];
+        var annotations = datas[1];
+
+        if (annotations.length === 0) {
+          pageOpList.flush(true);
+          return pageOpList;
+        }
+
+        var annotationsReadyPromise = Annotation.appendToOperatorList(
+          annotations, pageOpList, pdfManager, partialEvaluator, intent);
+        return annotationsReadyPromise.then(function () {
+          pageOpList.flush(true);
+          return pageOpList;
+        });
+      });
+    },
+
+    extractTextContent: function Page_extractTextContent() {
+      var handler = {
+        on: function nullHandlerOn() {},
+        send: function nullHandlerSend() {}
+      };
+
+      var self = this;
+
+      var pdfManager = this.pdfManager;
+      var contentStreamPromise = pdfManager.ensure(this, 'getContentStream',
+                                                   []);
+
+      var resourcesPromise = this.loadResources([
+        'ExtGState',
+        'XObject',
+        'Font'
+      ]);
+
+      var dataPromises = Promise.all([contentStreamPromise,
+                                      resourcesPromise]);
+      return dataPromises.then(function(data) {
+        var contentStream = data[0];
+        var partialEvaluator = new PartialEvaluator(pdfManager, self.xref,
+                                                    handler, self.pageIndex,
+                                                    'p' + self.pageIndex + '_',
+                                                    self.idCounters,
+                                                    self.fontCache);
+
+        return partialEvaluator.getTextContent(contentStream,
+                                               self.resources);
+      });
+    },
+
+    getAnnotationsData: function Page_getAnnotationsData() {
+      var annotations = this.annotations;
+      var annotationsData = [];
+      for (var i = 0, n = annotations.length; i < n; ++i) {
+        annotationsData.push(annotations[i].getData());
+      }
+      return annotationsData;
+    },
+
+    get annotations() {
+      var annotations = [];
+      var annotationRefs = (this.annotationRefs || []);
+      for (var i = 0, n = annotationRefs.length; i < n; ++i) {
+        var annotationRef = annotationRefs[i];
+        var annotation = Annotation.fromRef(this.xref, annotationRef);
+        if (annotation) {
+          annotations.push(annotation);
+        }
+      }
+      return shadow(this, 'annotations', annotations);
+    }
+  };
+
+  return Page;
+})();
+
+/**
+ * The `PDFDocument` holds all the data of the PDF file. Compared to the
+ * `PDFDoc`, this one doesn't have any job management code.
+ * Right now there exists one PDFDocument on the main thread + one object
+ * for each worker. If there is no worker support enabled, there are two
+ * `PDFDocument` objects on the main thread created.
+ */
+var PDFDocument = (function PDFDocumentClosure() {
+  var FINGERPRINT_FIRST_BYTES = 1024;
+  var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' +
+    '\x00\x00\x00\x00\x00\x00\x00\x00\x00';
+
+  function PDFDocument(pdfManager, arg, password) {
+    if (isStream(arg)) {
+      init.call(this, pdfManager, arg, password);
+    } else if (isArrayBuffer(arg)) {
+      init.call(this, pdfManager, new Stream(arg), password);
+    } else {
+      error('PDFDocument: Unknown argument type');
+    }
+  }
+
+  function init(pdfManager, stream, password) {
+    assert(stream.length > 0, 'stream must have data');
+    this.pdfManager = pdfManager;
+    this.stream = stream;
+    var xref = new XRef(this.stream, password, pdfManager);
+    this.xref = xref;
+  }
+
+  function find(stream, needle, limit, backwards) {
+    var pos = stream.pos;
+    var end = stream.end;
+    var strBuf = [];
+    if (pos + limit > end) {
+      limit = end - pos;
+    }
+    for (var n = 0; n < limit; ++n) {
+      strBuf.push(String.fromCharCode(stream.getByte()));
+    }
+    var str = strBuf.join('');
+    stream.pos = pos;
+    var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);
+    if (index === -1) {
+      return false; /* not found */
+    }
+    stream.pos += index;
+    return true; /* found */
+  }
+
+  var DocumentInfoValidators = {
+    get entries() {
+      // Lazily build this since all the validation functions below are not
+      // defined until after this file loads.
+      return shadow(this, 'entries', {
+        Title: isString,
+        Author: isString,
+        Subject: isString,
+        Keywords: isString,
+        Creator: isString,
+        Producer: isString,
+        CreationDate: isString,
+        ModDate: isString,
+        Trapped: isName
+      });
+    }
+  };
+
+  PDFDocument.prototype = {
+    parse: function PDFDocument_parse(recoveryMode) {
+      this.setup(recoveryMode);
+      try {
+        // checking if AcroForm is present
+        this.acroForm = this.catalog.catDict.get('AcroForm');
+        if (this.acroForm) {
+          this.xfa = this.acroForm.get('XFA');
+          var fields = this.acroForm.get('Fields');
+          if ((!fields || !isArray(fields) || fields.length === 0) &&
+              !this.xfa) {
+            // no fields and no XFA -- not a form (?)
+            this.acroForm = null;
+          }
+        }
+      } catch (ex) {
+        info('Something wrong with AcroForm entry');
+        this.acroForm = null;
+      }
+    },
+
+    get linearization() {
+      var linearization = null;
+      if (this.stream.length) {
+        try {
+          linearization = Linearization.create(this.stream);
+        } catch (err) {
+          if (err instanceof MissingDataException) {
+            throw err;
+          }
+          info(err);
+        }
+      }
+      // shadow the prototype getter with a data property
+      return shadow(this, 'linearization', linearization);
+    },
+    get startXRef() {
+      var stream = this.stream;
+      var startXRef = 0;
+      var linearization = this.linearization;
+      if (linearization) {
+        // Find end of first obj.
+        stream.reset();
+        if (find(stream, 'endobj', 1024)) {
+          startXRef = stream.pos + 6;
+        }
+      } else {
+        // Find startxref by jumping backward from the end of the file.
+        var step = 1024;
+        var found = false, pos = stream.end;
+        while (!found && pos > 0) {
+          pos -= step - 'startxref'.length;
+          if (pos < 0) {
+            pos = 0;
+          }
+          stream.pos = pos;
+          found = find(stream, 'startxref', step, true);
+        }
+        if (found) {
+          stream.skip(9);
+          var ch;
+          do {
+            ch = stream.getByte();
+          } while (Lexer.isSpace(ch));
+          var str = '';
+          while (ch >= 0x20 && ch <= 0x39) { // < '9'
+            str += String.fromCharCode(ch);
+            ch = stream.getByte();
+          }
+          startXRef = parseInt(str, 10);
+          if (isNaN(startXRef)) {
+            startXRef = 0;
+          }
+        }
+      }
+      // shadow the prototype getter with a data property
+      return shadow(this, 'startXRef', startXRef);
+    },
+    get mainXRefEntriesOffset() {
+      var mainXRefEntriesOffset = 0;
+      var linearization = this.linearization;
+      if (linearization) {
+        mainXRefEntriesOffset = linearization.mainXRefEntriesOffset;
+      }
+      // shadow the prototype getter with a data property
+      return shadow(this, 'mainXRefEntriesOffset', mainXRefEntriesOffset);
+    },
+    // Find the header, remove leading garbage and setup the stream
+    // starting from the header.
+    checkHeader: function PDFDocument_checkHeader() {
+      var stream = this.stream;
+      stream.reset();
+      if (find(stream, '%PDF-', 1024)) {
+        // Found the header, trim off any garbage before it.
+        stream.moveStart();
+        // Reading file format version
+        var MAX_VERSION_LENGTH = 12;
+        var version = '', ch;
+        while ((ch = stream.getByte()) > 0x20) { // SPACE
+          if (version.length >= MAX_VERSION_LENGTH) {
+            break;
+          }
+          version += String.fromCharCode(ch);
+        }
+        // removing "%PDF-"-prefix
+        this.pdfFormatVersion = version.substring(5);
+        return;
+      }
+      // May not be a PDF file, continue anyway.
+    },
+    parseStartXRef: function PDFDocument_parseStartXRef() {
+      var startXRef = this.startXRef;
+      this.xref.setStartXRef(startXRef);
+    },
+    setup: function PDFDocument_setup(recoveryMode) {
+      this.xref.parse(recoveryMode);
+      this.catalog = new Catalog(this.pdfManager, this.xref);
+    },
+    get numPages() {
+      var linearization = this.linearization;
+      var num = linearization ? linearization.numPages : this.catalog.numPages;
+      // shadow the prototype getter
+      return shadow(this, 'numPages', num);
+    },
+    get documentInfo() {
+      var docInfo = {
+        PDFFormatVersion: this.pdfFormatVersion,
+        IsAcroFormPresent: !!this.acroForm,
+        IsXFAPresent: !!this.xfa
+      };
+      var infoDict;
+      try {
+        infoDict = this.xref.trailer.get('Info');
+      } catch (err) {
+        info('The document information dictionary is invalid.');
+      }
+      if (infoDict) {
+        var validEntries = DocumentInfoValidators.entries;
+        // Only fill the document info with valid entries from the spec.
+        for (var key in validEntries) {
+          if (infoDict.has(key)) {
+            var value = infoDict.get(key);
+            // Make sure the value conforms to the spec.
+            if (validEntries[key](value)) {
+              docInfo[key] = (typeof value !== 'string' ?
+                              value : stringToPDFString(value));
+            } else {
+              info('Bad value in document info for "' + key + '"');
+            }
+          }
+        }
+      }
+      return shadow(this, 'documentInfo', docInfo);
+    },
+    get fingerprint() {
+      var xref = this.xref, idArray, hash, fileID = '';
+
+      if (xref.trailer.has('ID')) {
+        idArray = xref.trailer.get('ID');
+      }
+      if (idArray && isArray(idArray) && idArray[0] !== EMPTY_FINGERPRINT) {
+        hash = stringToBytes(idArray[0]);
+      } else {
+        if (this.stream.ensureRange) {
+          this.stream.ensureRange(0,
+            Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end));
+        }
+        hash = calculateMD5(this.stream.bytes.subarray(0,
+          FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);
+      }
+
+      for (var i = 0, n = hash.length; i < n; i++) {
+        var hex = hash[i].toString(16);
+        fileID += hex.length === 1 ? '0' + hex : hex;
+      }
+
+      return shadow(this, 'fingerprint', fileID);
+    },
+
+    getPage: function PDFDocument_getPage(pageIndex) {
+      return this.catalog.getPage(pageIndex);
+    },
+
+    cleanup: function PDFDocument_cleanup() {
+      return this.catalog.cleanup();
+    }
+  };
+
+  return PDFDocument;
+})();
+
+
+var Name = (function NameClosure() {
+  function Name(name) {
+    this.name = name;
+  }
+
+  Name.prototype = {};
+
+  var nameCache = {};
+
+  Name.get = function Name_get(name) {
+    var nameValue = nameCache[name];
+    return (nameValue ? nameValue : (nameCache[name] = new Name(name)));
+  };
+
+  return Name;
+})();
+
+var Cmd = (function CmdClosure() {
+  function Cmd(cmd) {
+    this.cmd = cmd;
+  }
+
+  Cmd.prototype = {};
+
+  var cmdCache = {};
+
+  Cmd.get = function Cmd_get(cmd) {
+    var cmdValue = cmdCache[cmd];
+    return (cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd)));
+  };
+
+  return Cmd;
+})();
+
+var Dict = (function DictClosure() {
+  var nonSerializable = function nonSerializableClosure() {
+    return nonSerializable; // creating closure on some variable
+  };
+
+  var GETALL_DICTIONARY_TYPES_WHITELIST = {
+    'Background': true,
+    'ExtGState': true,
+    'Halftone': true,
+    'Layout': true,
+    'Mask': true,
+    'Pagination': true,
+    'Printing': true
+  };
+
+  function isRecursionAllowedFor(dict) {
+    if (!isName(dict.Type)) {
+      return true;
+    }
+    var dictType = dict.Type.name;
+    return GETALL_DICTIONARY_TYPES_WHITELIST[dictType] === true;
+  }
+
+  // xref is optional
+  function Dict(xref) {
+    // Map should only be used internally, use functions below to access.
+    this.map = Object.create(null);
+    this.xref = xref;
+    this.objId = null;
+    this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict
+  }
+
+  Dict.prototype = {
+    assignXref: function Dict_assignXref(newXref) {
+      this.xref = newXref;
+    },
+
+    // automatically dereferences Ref objects
+    get: function Dict_get(key1, key2, key3) {
+      var value;
+      var xref = this.xref;
+      if (typeof (value = this.map[key1]) !== 'undefined' || key1 in this.map ||
+          typeof key2 === 'undefined') {
+        return xref ? xref.fetchIfRef(value) : value;
+      }
+      if (typeof (value = this.map[key2]) !== 'undefined' || key2 in this.map ||
+          typeof key3 === 'undefined') {
+        return xref ? xref.fetchIfRef(value) : value;
+      }
+      value = this.map[key3] || null;
+      return xref ? xref.fetchIfRef(value) : value;
+    },
+
+    // Same as get(), but returns a promise and uses fetchIfRefAsync().
+    getAsync: function Dict_getAsync(key1, key2, key3) {
+      var value;
+      var xref = this.xref;
+      if (typeof (value = this.map[key1]) !== 'undefined' || key1 in this.map ||
+          typeof key2 === 'undefined') {
+        if (xref) {
+          return xref.fetchIfRefAsync(value);
+        }
+        return Promise.resolve(value);
+      }
+      if (typeof (value = this.map[key2]) !== 'undefined' || key2 in this.map ||
+          typeof key3 === 'undefined') {
+        if (xref) {
+          return xref.fetchIfRefAsync(value);
+        }
+        return Promise.resolve(value);
+      }
+      value = this.map[key3] || null;
+      if (xref) {
+        return xref.fetchIfRefAsync(value);
+      }
+      return Promise.resolve(value);
+    },
+
+    // no dereferencing
+    getRaw: function Dict_getRaw(key) {
+      return this.map[key];
+    },
+
+    // creates new map and dereferences all Refs
+    getAll: function Dict_getAll() {
+      var all = Object.create(null);
+      var queue = null;
+      var key, obj;
+      for (key in this.map) {
+        obj = this.get(key);
+        if (obj instanceof Dict) {
+          if (isRecursionAllowedFor(obj)) {
+            (queue || (queue = [])).push({target: all, key: key, obj: obj});
+          } else {
+            all[key] = this.getRaw(key);
+          }
+        } else {
+          all[key] = obj;
+        }
+      }
+      if (!queue) {
+        return all;
+      }
+
+      // trying to take cyclic references into the account
+      var processed = Object.create(null);
+      while (queue.length > 0) {
+        var item = queue.shift();
+        var itemObj = item.obj;
+        var objId = itemObj.objId;
+        if (objId && objId in processed) {
+          item.target[item.key] = processed[objId];
+          continue;
+        }
+        var dereferenced = Object.create(null);
+        for (key in itemObj.map) {
+          obj = itemObj.get(key);
+          if (obj instanceof Dict) {
+            if (isRecursionAllowedFor(obj)) {
+              queue.push({target: dereferenced, key: key, obj: obj});
+            } else {
+              dereferenced[key] = itemObj.getRaw(key);
+            }
+          } else {
+            dereferenced[key] = obj;
+          }
+        }
+        if (objId) {
+          processed[objId] = dereferenced;
+        }
+        item.target[item.key] = dereferenced;
+      }
+      return all;
+    },
+
+    getKeys: function Dict_getKeys() {
+      return Object.keys(this.map);
+    },
+
+    set: function Dict_set(key, value) {
+      this.map[key] = value;
+    },
+
+    has: function Dict_has(key) {
+      return key in this.map;
+    },
+
+    forEach: function Dict_forEach(callback) {
+      for (var key in this.map) {
+        callback(key, this.get(key));
+      }
+    }
+  };
+
+  Dict.empty = new Dict(null);
+
+  return Dict;
+})();
+
+var Ref = (function RefClosure() {
+  function Ref(num, gen) {
+    this.num = num;
+    this.gen = gen;
+  }
+
+  Ref.prototype = {
+    toString: function Ref_toString() {
+      // This function is hot, so we make the string as compact as possible.
+      // |this.gen| is almost always zero, so we treat that case specially.
+      var str = this.num + 'R';
+      if (this.gen !== 0) {
+        str += this.gen;
+      }
+      return str;
+    }
+  };
+
+  return Ref;
+})();
+
+// The reference is identified by number and generation.
+// This structure stores only one instance of the reference.
+var RefSet = (function RefSetClosure() {
+  function RefSet() {
+    this.dict = {};
+  }
+
+  RefSet.prototype = {
+    has: function RefSet_has(ref) {
+      return ref.toString() in this.dict;
+    },
+
+    put: function RefSet_put(ref) {
+      this.dict[ref.toString()] = true;
+    },
+
+    remove: function RefSet_remove(ref) {
+      delete this.dict[ref.toString()];
+    }
+  };
+
+  return RefSet;
+})();
+
+var RefSetCache = (function RefSetCacheClosure() {
+  function RefSetCache() {
+    this.dict = Object.create(null);
+  }
+
+  RefSetCache.prototype = {
+    get: function RefSetCache_get(ref) {
+      return this.dict[ref.toString()];
+    },
+
+    has: function RefSetCache_has(ref) {
+      return ref.toString() in this.dict;
+    },
+
+    put: function RefSetCache_put(ref, obj) {
+      this.dict[ref.toString()] = obj;
+    },
+
+    putAlias: function RefSetCache_putAlias(ref, aliasRef) {
+      this.dict[ref.toString()] = this.get(aliasRef);
+    },
+
+    forEach: function RefSetCache_forEach(fn, thisArg) {
+      for (var i in this.dict) {
+        fn.call(thisArg, this.dict[i]);
+      }
+    },
+
+    clear: function RefSetCache_clear() {
+      this.dict = Object.create(null);
+    }
+  };
+
+  return RefSetCache;
+})();
+
+var Catalog = (function CatalogClosure() {
+  function Catalog(pdfManager, xref) {
+    this.pdfManager = pdfManager;
+    this.xref = xref;
+    this.catDict = xref.getCatalogObj();
+    this.fontCache = new RefSetCache();
+    assert(isDict(this.catDict),
+      'catalog object is not a dictionary');
+
+    this.pagePromises = [];
+  }
+
+  Catalog.prototype = {
+    get metadata() {
+      var streamRef = this.catDict.getRaw('Metadata');
+      if (!isRef(streamRef)) {
+        return shadow(this, 'metadata', null);
+      }
+
+      var encryptMetadata = (!this.xref.encrypt ? false :
+                             this.xref.encrypt.encryptMetadata);
+
+      var stream = this.xref.fetch(streamRef, !encryptMetadata);
+      var metadata;
+      if (stream && isDict(stream.dict)) {
+        var type = stream.dict.get('Type');
+        var subtype = stream.dict.get('Subtype');
+
+        if (isName(type) && isName(subtype) &&
+            type.name === 'Metadata' && subtype.name === 'XML') {
+          // XXX: This should examine the charset the XML document defines,
+          // however since there are currently no real means to decode
+          // arbitrary charsets, let's just hope that the author of the PDF
+          // was reasonable enough to stick with the XML default charset,
+          // which is UTF-8.
+          try {
+            metadata = stringToUTF8String(bytesToString(stream.getBytes()));
+          } catch (e) {
+            info('Skipping invalid metadata.');
+          }
+        }
+      }
+
+      return shadow(this, 'metadata', metadata);
+    },
+    get toplevelPagesDict() {
+      var pagesObj = this.catDict.get('Pages');
+      assert(isDict(pagesObj), 'invalid top-level pages dictionary');
+      // shadow the prototype getter
+      return shadow(this, 'toplevelPagesDict', pagesObj);
+    },
+    get documentOutline() {
+      var obj = null;
+      try {
+        obj = this.readDocumentOutline();
+      } catch (ex) {
+        if (ex instanceof MissingDataException) {
+          throw ex;
+        }
+        warn('Unable to read document outline');
+      }
+      return shadow(this, 'documentOutline', obj);
+    },
+    readDocumentOutline: function Catalog_readDocumentOutline() {
+      var xref = this.xref;
+      var obj = this.catDict.get('Outlines');
+      var root = { items: [] };
+      if (isDict(obj)) {
+        obj = obj.getRaw('First');
+        var processed = new RefSet();
+        if (isRef(obj)) {
+          var queue = [{obj: obj, parent: root}];
+          // to avoid recursion keeping track of the items
+          // in the processed dictionary
+          processed.put(obj);
+          while (queue.length > 0) {
+            var i = queue.shift();
+            var outlineDict = xref.fetchIfRef(i.obj);
+            if (outlineDict === null) {
+              continue;
+            }
+            if (!outlineDict.has('Title')) {
+              error('Invalid outline item');
+            }
+            var dest = outlineDict.get('A');
+            if (dest) {
+              dest = dest.get('D');
+            } else if (outlineDict.has('Dest')) {
+              dest = outlineDict.getRaw('Dest');
+              if (isName(dest)) {
+                dest = dest.name;
+              }
+            }
+            var title = outlineDict.get('Title');
+            var outlineItem = {
+              dest: dest,
+              title: stringToPDFString(title),
+              color: outlineDict.get('C') || [0, 0, 0],
+              count: outlineDict.get('Count'),
+              bold: !!(outlineDict.get('F') & 2),
+              italic: !!(outlineDict.get('F') & 1),
+              items: []
+            };
+            i.parent.items.push(outlineItem);
+            obj = outlineDict.getRaw('First');
+            if (isRef(obj) && !processed.has(obj)) {
+              queue.push({obj: obj, parent: outlineItem});
+              processed.put(obj);
+            }
+            obj = outlineDict.getRaw('Next');
+            if (isRef(obj) && !processed.has(obj)) {
+              queue.push({obj: obj, parent: i.parent});
+              processed.put(obj);
+            }
+          }
+        }
+      }
+      return (root.items.length > 0 ? root.items : null);
+    },
+    get numPages() {
+      var obj = this.toplevelPagesDict.get('Count');
+      assert(
+        isInt(obj),
+        'page count in top level pages object is not an integer'
+      );
+      // shadow the prototype getter
+      return shadow(this, 'num', obj);
+    },
+    get destinations() {
+      function fetchDestination(dest) {
+        return isDict(dest) ? dest.get('D') : dest;
+      }
+
+      var xref = this.xref;
+      var dests = {}, nameTreeRef, nameDictionaryRef;
+      var obj = this.catDict.get('Names');
+      if (obj && obj.has('Dests')) {
+        nameTreeRef = obj.getRaw('Dests');
+      } else if (this.catDict.has('Dests')) {
+        nameDictionaryRef = this.catDict.get('Dests');
+      }
+
+      if (nameDictionaryRef) {
+        // reading simple destination dictionary
+        obj = nameDictionaryRef;
+        obj.forEach(function catalogForEach(key, value) {
+          if (!value) {
+            return;
+          }
+          dests[key] = fetchDestination(value);
+        });
+      }
+      if (nameTreeRef) {
+        var nameTree = new NameTree(nameTreeRef, xref);
+        var names = nameTree.getAll();
+        for (var name in names) {
+          if (!names.hasOwnProperty(name)) {
+            continue;
+          }
+          dests[name] = fetchDestination(names[name]);
+        }
+      }
+      return shadow(this, 'destinations', dests);
+    },
+    getDestination: function Catalog_getDestination(destinationId) {
+      function fetchDestination(dest) {
+        return isDict(dest) ? dest.get('D') : dest;
+      }
+
+      var xref = this.xref;
+      var dest, nameTreeRef, nameDictionaryRef;
+      var obj = this.catDict.get('Names');
+      if (obj && obj.has('Dests')) {
+        nameTreeRef = obj.getRaw('Dests');
+      } else if (this.catDict.has('Dests')) {
+        nameDictionaryRef = this.catDict.get('Dests');
+      }
+
+      if (nameDictionaryRef) {
+        // reading simple destination dictionary
+        obj = nameDictionaryRef;
+        obj.forEach(function catalogForEach(key, value) {
+          if (!value) {
+            return;
+          }
+          if (key === destinationId) {
+            dest = fetchDestination(value);
+          }
+        });
+      }
+      if (nameTreeRef) {
+        var nameTree = new NameTree(nameTreeRef, xref);
+        dest = fetchDestination(nameTree.get(destinationId));
+      }
+      return dest;
+    },
+    get attachments() {
+      var xref = this.xref;
+      var attachments = null, nameTreeRef;
+      var obj = this.catDict.get('Names');
+      if (obj) {
+        nameTreeRef = obj.getRaw('EmbeddedFiles');
+      }
+
+      if (nameTreeRef) {
+        var nameTree = new NameTree(nameTreeRef, xref);
+        var names = nameTree.getAll();
+        for (var name in names) {
+          if (!names.hasOwnProperty(name)) {
+            continue;
+          }
+          var fs = new FileSpec(names[name], xref);
+          if (!attachments) {
+            attachments = {};
+          }
+          attachments[stringToPDFString(name)] = fs.serializable;
+        }
+      }
+      return shadow(this, 'attachments', attachments);
+    },
+    get javaScript() {
+      var xref = this.xref;
+      var obj = this.catDict.get('Names');
+
+      var javaScript = [];
+      if (obj && obj.has('JavaScript')) {
+        var nameTree = new NameTree(obj.getRaw('JavaScript'), xref);
+        var names = nameTree.getAll();
+        for (var name in names) {
+          if (!names.hasOwnProperty(name)) {
+            continue;
+          }
+          // We don't really use the JavaScript right now. This code is
+          // defensive so we don't cause errors on document load.
+          var jsDict = names[name];
+          if (!isDict(jsDict)) {
+            continue;
+          }
+          var type = jsDict.get('S');
+          if (!isName(type) || type.name !== 'JavaScript') {
+            continue;
+          }
+          var js = jsDict.get('JS');
+          if (!isString(js) && !isStream(js)) {
+            continue;
+          }
+          if (isStream(js)) {
+            js = bytesToString(js.getBytes());
+          }
+          javaScript.push(stringToPDFString(js));
+        }
+      }
+
+      // Append OpenAction actions to javaScript array
+      var openactionDict = this.catDict.get('OpenAction');
+      if (isDict(openactionDict)) {
+        var objType = openactionDict.get('Type');
+        var actionType = openactionDict.get('S');
+        var action = openactionDict.get('N');
+        var isPrintAction = (isName(objType) && objType.name === 'Action' &&
+                            isName(actionType) && actionType.name === 'Named' &&
+                            isName(action) && action.name === 'Print');
+
+        if (isPrintAction) {
+          javaScript.push('print(true);');
+        }
+      }
+
+      return shadow(this, 'javaScript', javaScript);
+    },
+
+    cleanup: function Catalog_cleanup() {
+      var promises = [];
+      this.fontCache.forEach(function (promise) {
+        promises.push(promise);
+      });
+      return Promise.all(promises).then(function (translatedFonts) {
+        for (var i = 0, ii = translatedFonts.length; i < ii; i++) {
+          var font = translatedFonts[i].dict;
+          delete font.translated;
+        }
+        this.fontCache.clear();
+      }.bind(this));
+    },
+
+    getPage: function Catalog_getPage(pageIndex) {
+      if (!(pageIndex in this.pagePromises)) {
+        this.pagePromises[pageIndex] = this.getPageDict(pageIndex).then(
+          function (a) {
+            var dict = a[0];
+            var ref = a[1];
+            return new Page(this.pdfManager, this.xref, pageIndex, dict, ref,
+                            this.fontCache);
+          }.bind(this)
+        );
+      }
+      return this.pagePromises[pageIndex];
+    },
+
+    getPageDict: function Catalog_getPageDict(pageIndex) {
+      var capability = createPromiseCapability();
+      var nodesToVisit = [this.catDict.getRaw('Pages')];
+      var currentPageIndex = 0;
+      var xref = this.xref;
+      var checkAllKids = false;
+
+      function next() {
+        while (nodesToVisit.length) {
+          var currentNode = nodesToVisit.pop();
+
+          if (isRef(currentNode)) {
+            xref.fetchAsync(currentNode).then(function (obj) {
+              if (isDict(obj, 'Page') || (isDict(obj) && !obj.has('Kids'))) {
+                if (pageIndex === currentPageIndex) {
+                  capability.resolve([obj, currentNode]);
+                } else {
+                  currentPageIndex++;
+                  next();
+                }
+                return;
+              }
+              nodesToVisit.push(obj);
+              next();
+            }, capability.reject);
+            return;
+          }
+
+          // Must be a child page dictionary.
+          assert(
+            isDict(currentNode),
+            'page dictionary kid reference points to wrong type of object'
+          );
+          var count = currentNode.get('Count');
+          // If the current node doesn't have any children, avoid getting stuck
+          // in an empty node further down in the tree (see issue5644.pdf).
+          if (count === 0) {
+            checkAllKids = true;
+          }
+          // Skip nodes where the page can't be.
+          if (currentPageIndex + count <= pageIndex) {
+            currentPageIndex += count;
+            continue;
+          }
+
+          var kids = currentNode.get('Kids');
+          assert(isArray(kids), 'page dictionary kids object is not an array');
+          if (!checkAllKids && count === kids.length) {
+            // Nodes that don't have the page have been skipped and this is the
+            // bottom of the tree which means the page requested must be a
+            // descendant of this pages node. Ideally we would just resolve the
+            // promise with the page ref here, but there is the case where more
+            // pages nodes could link to single a page (see issue 3666 pdf). To
+            // handle this push it back on the queue so if it is a pages node it
+            // will be descended into.
+            nodesToVisit = [kids[pageIndex - currentPageIndex]];
+            currentPageIndex = pageIndex;
+            continue;
+          } else {
+            for (var last = kids.length - 1; last >= 0; last--) {
+              nodesToVisit.push(kids[last]);
+            }
+          }
+        }
+        capability.reject('Page index ' + pageIndex + ' not found.');
+      }
+      next();
+      return capability.promise;
+    },
+
+    getPageIndex: function Catalog_getPageIndex(ref) {
+      // The page tree nodes have the count of all the leaves below them. To get
+      // how many pages are before we just have to walk up the tree and keep
+      // adding the count of siblings to the left of the node.
+      var xref = this.xref;
+      function pagesBeforeRef(kidRef) {
+        var total = 0;
+        var parentRef;
+        return xref.fetchAsync(kidRef).then(function (node) {
+          if (!node) {
+            return null;
+          }
+          parentRef = node.getRaw('Parent');
+          return node.getAsync('Parent');
+        }).then(function (parent) {
+          if (!parent) {
+            return null;
+          }
+          return parent.getAsync('Kids');
+        }).then(function (kids) {
+          if (!kids) {
+            return null;
+          }
+          var kidPromises = [];
+          var found = false;
+          for (var i = 0; i < kids.length; i++) {
+            var kid = kids[i];
+            assert(isRef(kid), 'kids must be a ref');
+            if (kid.num === kidRef.num) {
+              found = true;
+              break;
+            }
+            kidPromises.push(xref.fetchAsync(kid).then(function (kid) {
+              if (kid.has('Count')) {
+                var count = kid.get('Count');
+                total += count;
+              } else { // page leaf node
+                total++;
+              }
+            }));
+          }
+          if (!found) {
+            error('kid ref not found in parents kids');
+          }
+          return Promise.all(kidPromises).then(function () {
+            return [total, parentRef];
+          });
+        });
+      }
+
+      var total = 0;
+      function next(ref) {
+        return pagesBeforeRef(ref).then(function (args) {
+          if (!args) {
+            return total;
+          }
+          var count = args[0];
+          var parentRef = args[1];
+          total += count;
+          return next(parentRef);
+        });
+      }
+
+      return next(ref);
+    }
+  };
+
+  return Catalog;
+})();
+
+var XRef = (function XRefClosure() {
+  function XRef(stream, password) {
+    this.stream = stream;
+    this.entries = [];
+    this.xrefstms = {};
+    // prepare the XRef cache
+    this.cache = [];
+    this.password = password;
+    this.stats = {
+      streamTypes: [],
+      fontTypes: []
+    };
+  }
+
+  XRef.prototype = {
+    setStartXRef: function XRef_setStartXRef(startXRef) {
+      // Store the starting positions of xref tables as we process them
+      // so we can recover from missing data errors
+      this.startXRefQueue = [startXRef];
+    },
+
+    parse: function XRef_parse(recoveryMode) {
+      var trailerDict;
+      if (!recoveryMode) {
+        trailerDict = this.readXRef();
+      } else {
+        warn('Indexing all PDF objects');
+        trailerDict = this.indexObjects();
+      }
+      trailerDict.assignXref(this);
+      this.trailer = trailerDict;
+      var encrypt = trailerDict.get('Encrypt');
+      if (encrypt) {
+        var ids = trailerDict.get('ID');
+        var fileId = (ids && ids.length) ? ids[0] : '';
+        this.encrypt = new CipherTransformFactory(encrypt, fileId,
+                                                  this.password);
+      }
+
+      // get the root dictionary (catalog) object
+      if (!(this.root = trailerDict.get('Root'))) {
+        error('Invalid root reference');
+      }
+    },
+
+    processXRefTable: function XRef_processXRefTable(parser) {
+      if (!('tableState' in this)) {
+        // Stores state of the table as we process it so we can resume
+        // from middle of table in case of missing data error
+        this.tableState = {
+          entryNum: 0,
+          streamPos: parser.lexer.stream.pos,
+          parserBuf1: parser.buf1,
+          parserBuf2: parser.buf2
+        };
+      }
+
+      var obj = this.readXRefTable(parser);
+
+      // Sanity check
+      if (!isCmd(obj, 'trailer')) {
+        error('Invalid XRef table: could not find trailer dictionary');
+      }
+      // Read trailer dictionary, e.g.
+      // trailer
+      //    << /Size 22
+      //      /Root 20R
+      //      /Info 10R
+      //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]
+      //    >>
+      // The parser goes through the entire stream << ... >> and provides
+      // a getter interface for the key-value table
+      var dict = parser.getObj();
+
+      // The pdflib PDF generator can generate a nested trailer dictionary
+      if (!isDict(dict) && dict.dict) {
+        dict = dict.dict;
+      }
+      if (!isDict(dict)) {
+        error('Invalid XRef table: could not parse trailer dictionary');
+      }
+      delete this.tableState;
+
+      return dict;
+    },
+
+    readXRefTable: function XRef_readXRefTable(parser) {
+      // Example of cross-reference table:
+      // xref
+      // 0 1                    <-- subsection header (first obj #, obj count)
+      // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)
+      // 23 2                   <-- subsection header ... and so on ...
+      // 0000025518 00002 n
+      // 0000025635 00000 n
+      // trailer
+      // ...
+
+      var stream = parser.lexer.stream;
+      var tableState = this.tableState;
+      stream.pos = tableState.streamPos;
+      parser.buf1 = tableState.parserBuf1;
+      parser.buf2 = tableState.parserBuf2;
+
+      // Outer loop is over subsection headers
+      var obj;
+
+      while (true) {
+        if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) {
+          if (isCmd(obj = parser.getObj(), 'trailer')) {
+            break;
+          }
+          tableState.firstEntryNum = obj;
+          tableState.entryCount = parser.getObj();
+        }
+
+        var first = tableState.firstEntryNum;
+        var count = tableState.entryCount;
+        if (!isInt(first) || !isInt(count)) {
+          error('Invalid XRef table: wrong types in subsection header');
+        }
+        // Inner loop is over objects themselves
+        for (var i = tableState.entryNum; i < count; i++) {
+          tableState.streamPos = stream.pos;
+          tableState.entryNum = i;
+          tableState.parserBuf1 = parser.buf1;
+          tableState.parserBuf2 = parser.buf2;
+
+          var entry = {};
+          entry.offset = parser.getObj();
+          entry.gen = parser.getObj();
+          var type = parser.getObj();
+
+          if (isCmd(type, 'f')) {
+            entry.free = true;
+          } else if (isCmd(type, 'n')) {
+            entry.uncompressed = true;
+          }
+
+          // Validate entry obj
+          if (!isInt(entry.offset) || !isInt(entry.gen) ||
+              !(entry.free || entry.uncompressed)) {
+            error('Invalid entry in XRef subsection: ' + first + ', ' + count);
+          }
+
+          if (!this.entries[i + first]) {
+            this.entries[i + first] = entry;
+          }
+        }
+
+        tableState.entryNum = 0;
+        tableState.streamPos = stream.pos;
+        tableState.parserBuf1 = parser.buf1;
+        tableState.parserBuf2 = parser.buf2;
+        delete tableState.firstEntryNum;
+        delete tableState.entryCount;
+      }
+
+      // Per issue 3248: hp scanners generate bad XRef
+      if (first === 1 && this.entries[1] && this.entries[1].free) {
+        // shifting the entries
+        this.entries.shift();
+      }
+
+      // Sanity check: as per spec, first object must be free
+      if (this.entries[0] && !this.entries[0].free) {
+        error('Invalid XRef table: unexpected first object');
+      }
+      return obj;
+    },
+
+    processXRefStream: function XRef_processXRefStream(stream) {
+      if (!('streamState' in this)) {
+        // Stores state of the stream as we process it so we can resume
+        // from middle of stream in case of missing data error
+        var streamParameters = stream.dict;
+        var byteWidths = streamParameters.get('W');
+        var range = streamParameters.get('Index');
+        if (!range) {
+          range = [0, streamParameters.get('Size')];
+        }
+
+        this.streamState = {
+          entryRanges: range,
+          byteWidths: byteWidths,
+          entryNum: 0,
+          streamPos: stream.pos
+        };
+      }
+      this.readXRefStream(stream);
+      delete this.streamState;
+
+      return stream.dict;
+    },
+
+    readXRefStream: function XRef_readXRefStream(stream) {
+      var i, j;
+      var streamState = this.streamState;
+      stream.pos = streamState.streamPos;
+
+      var byteWidths = streamState.byteWidths;
+      var typeFieldWidth = byteWidths[0];
+      var offsetFieldWidth = byteWidths[1];
+      var generationFieldWidth = byteWidths[2];
+
+      var entryRanges = streamState.entryRanges;
+      while (entryRanges.length > 0) {
+        var first = entryRanges[0];
+        var n = entryRanges[1];
+
+        if (!isInt(first) || !isInt(n)) {
+          error('Invalid XRef range fields: ' + first + ', ' + n);
+        }
+        if (!isInt(typeFieldWidth) || !isInt(offsetFieldWidth) ||
+            !isInt(generationFieldWidth)) {
+          error('Invalid XRef entry fields length: ' + first + ', ' + n);
+        }
+        for (i = streamState.entryNum; i < n; ++i) {
+          streamState.entryNum = i;
+          streamState.streamPos = stream.pos;
+
+          var type = 0, offset = 0, generation = 0;
+          for (j = 0; j < typeFieldWidth; ++j) {
+            type = (type << 8) | stream.getByte();
+          }
+          // if type field is absent, its default value is 1
+          if (typeFieldWidth === 0) {
+            type = 1;
+          }
+          for (j = 0; j < offsetFieldWidth; ++j) {
+            offset = (offset << 8) | stream.getByte();
+          }
+          for (j = 0; j < generationFieldWidth; ++j) {
+            generation = (generation << 8) | stream.getByte();
+          }
+          var entry = {};
+          entry.offset = offset;
+          entry.gen = generation;
+          switch (type) {
+            case 0:
+              entry.free = true;
+              break;
+            case 1:
+              entry.uncompressed = true;
+              break;
+            case 2:
+              break;
+            default:
+              error('Invalid XRef entry type: ' + type);
+          }
+          if (!this.entries[first + i]) {
+            this.entries[first + i] = entry;
+          }
+        }
+
+        streamState.entryNum = 0;
+        streamState.streamPos = stream.pos;
+        entryRanges.splice(0, 2);
+      }
+    },
+
+    indexObjects: function XRef_indexObjects() {
+      // Simple scan through the PDF content to find objects,
+      // trailers and XRef streams.
+      function readToken(data, offset) {
+        var token = '', ch = data[offset];
+        while (ch !== 13 && ch !== 10) {
+          if (++offset >= data.length) {
+            break;
+          }
+          token += String.fromCharCode(ch);
+          ch = data[offset];
+        }
+        return token;
+      }
+      function skipUntil(data, offset, what) {
+        var length = what.length, dataLength = data.length;
+        var skipped = 0;
+        // finding byte sequence
+        while (offset < dataLength) {
+          var i = 0;
+          while (i < length && data[offset + i] === what[i]) {
+            ++i;
+          }
+          if (i >= length) {
+            break; // sequence found
+          }
+          offset++;
+          skipped++;
+        }
+        return skipped;
+      }
+      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);
+      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,
+                                          101, 102]);
+      var endobjBytes = new Uint8Array([101, 110, 100, 111, 98, 106]);
+      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);
+
+      var stream = this.stream;
+      stream.pos = 0;
+      var buffer = stream.getBytes();
+      var position = stream.start, length = buffer.length;
+      var trailers = [], xrefStms = [];
+      while (position < length) {
+        var ch = buffer[position];
+        if (ch === 32 || ch === 9 || ch === 13 || ch === 10) {
+          ++position;
+          continue;
+        }
+        if (ch === 37) { // %-comment
+          do {
+            ++position;
+            if (position >= length) {
+              break;
+            }
+            ch = buffer[position];
+          } while (ch !== 13 && ch !== 10);
+          continue;
+        }
+        var token = readToken(buffer, position);
+        var m;
+        if (token === 'xref') {
+          position += skipUntil(buffer, position, trailerBytes);
+          trailers.push(position);
+          position += skipUntil(buffer, position, startxrefBytes);
+        } else if ((m = /^(\d+)\s+(\d+)\s+obj\b/.exec(token))) {
+          this.entries[m[1]] = {
+            offset: position,
+            gen: m[2] | 0,
+            uncompressed: true
+          };
+
+          var contentLength = skipUntil(buffer, position, endobjBytes) + 7;
+          var content = buffer.subarray(position, position + contentLength);
+
+          // checking XRef stream suspect
+          // (it shall have '/XRef' and next char is not a letter)
+          var xrefTagOffset = skipUntil(content, 0, xrefBytes);
+          if (xrefTagOffset < contentLength &&
+              content[xrefTagOffset + 5] < 64) {
+            xrefStms.push(position);
+            this.xrefstms[position] = 1; // don't read it recursively
+          }
+
+          position += contentLength;
+        } else {
+          position += token.length + 1;
+        }
+      }
+      // reading XRef streams
+      var i, ii;
+      for (i = 0, ii = xrefStms.length; i < ii; ++i) {
+        this.startXRefQueue.push(xrefStms[i]);
+        this.readXRef(/* recoveryMode */ true);
+      }
+      // finding main trailer
+      var dict;
+      for (i = 0, ii = trailers.length; i < ii; ++i) {
+        stream.pos = trailers[i];
+        var parser = new Parser(new Lexer(stream), true, this);
+        var obj = parser.getObj();
+        if (!isCmd(obj, 'trailer')) {
+          continue;
+        }
+        // read the trailer dictionary
+        if (!isDict(dict = parser.getObj())) {
+          continue;
+        }
+        // taking the first one with 'ID'
+        if (dict.has('ID')) {
+          return dict;
+        }
+      }
+      // no tailer with 'ID', taking last one (if exists)
+      if (dict) {
+        return dict;
+      }
+      // nothing helps
+      // calling error() would reject worker with an UnknownErrorException.
+      throw new InvalidPDFException('Invalid PDF structure');
+    },
+
+    readXRef: function XRef_readXRef(recoveryMode) {
+      var stream = this.stream;
+
+      try {
+        while (this.startXRefQueue.length) {
+          var startXRef = this.startXRefQueue[0];
+
+          stream.pos = startXRef + stream.start;
+
+          var parser = new Parser(new Lexer(stream), true, this);
+          var obj = parser.getObj();
+          var dict;
+
+          // Get dictionary
+          if (isCmd(obj, 'xref')) {
+            // Parse end-of-file XRef
+            dict = this.processXRefTable(parser);
+            if (!this.topDict) {
+              this.topDict = dict;
+            }
+
+            // Recursively get other XRefs 'XRefStm', if any
+            obj = dict.get('XRefStm');
+            if (isInt(obj)) {
+              var pos = obj;
+              // ignore previously loaded xref streams
+              // (possible infinite recursion)
+              if (!(pos in this.xrefstms)) {
+                this.xrefstms[pos] = 1;
+                this.startXRefQueue.push(pos);
+              }
+            }
+          } else if (isInt(obj)) {
+            // Parse in-stream XRef
+            if (!isInt(parser.getObj()) ||
+                !isCmd(parser.getObj(), 'obj') ||
+                !isStream(obj = parser.getObj())) {
+              error('Invalid XRef stream');
+            }
+            dict = this.processXRefStream(obj);
+            if (!this.topDict) {
+              this.topDict = dict;
+            }
+            if (!dict) {
+              error('Failed to read XRef stream');
+            }
+          } else {
+            error('Invalid XRef stream header');
+          }
+
+          // Recursively get previous dictionary, if any
+          obj = dict.get('Prev');
+          if (isInt(obj)) {
+            this.startXRefQueue.push(obj);
+          } else if (isRef(obj)) {
+            // The spec says Prev must not be a reference, i.e. "/Prev NNN"
+            // This is a fallback for non-compliant PDFs, i.e. "/Prev NNN 0 R"
+            this.startXRefQueue.push(obj.num);
+          }
+
+          this.startXRefQueue.shift();
+        }
+
+        return this.topDict;
+      } catch (e) {
+        if (e instanceof MissingDataException) {
+          throw e;
+        }
+        info('(while reading XRef): ' + e);
+      }
+
+      if (recoveryMode) {
+        return;
+      }
+      throw new XRefParseException();
+    },
+
+    getEntry: function XRef_getEntry(i) {
+      var xrefEntry = this.entries[i];
+      if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {
+        return xrefEntry;
+      }
+      return null;
+    },
+
+    fetchIfRef: function XRef_fetchIfRef(obj) {
+      if (!isRef(obj)) {
+        return obj;
+      }
+      return this.fetch(obj);
+    },
+
+    fetch: function XRef_fetch(ref, suppressEncryption) {
+      assert(isRef(ref), 'ref object is not a reference');
+      var num = ref.num;
+      if (num in this.cache) {
+        var cacheEntry = this.cache[num];
+        return cacheEntry;
+      }
+
+      var xrefEntry = this.getEntry(num);
+
+      // the referenced entry can be free
+      if (xrefEntry === null) {
+        return (this.cache[num] = null);
+      }
+
+      if (xrefEntry.uncompressed) {
+        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);
+      } else {
+        xrefEntry = this.fetchCompressed(xrefEntry, suppressEncryption);
+      }
+      if (isDict(xrefEntry)){
+        xrefEntry.objId = ref.toString();
+      } else if (isStream(xrefEntry)) {
+        xrefEntry.dict.objId = ref.toString();
+      }
+      return xrefEntry;
+    },
+
+    fetchUncompressed: function XRef_fetchUncompressed(ref, xrefEntry,
+                                                       suppressEncryption) {
+      var gen = ref.gen;
+      var num = ref.num;
+      if (xrefEntry.gen !== gen) {
+        error('inconsistent generation in XRef');
+      }
+      var stream = this.stream.makeSubStream(xrefEntry.offset +
+                                             this.stream.start);
+      var parser = new Parser(new Lexer(stream), true, this);
+      var obj1 = parser.getObj();
+      var obj2 = parser.getObj();
+      var obj3 = parser.getObj();
+      if (!isInt(obj1) || parseInt(obj1, 10) !== num ||
+          !isInt(obj2) || parseInt(obj2, 10) !== gen ||
+          !isCmd(obj3)) {
+        error('bad XRef entry');
+      }
+      if (!isCmd(obj3, 'obj')) {
+        // some bad PDFs use "obj1234" and really mean 1234
+        if (obj3.cmd.indexOf('obj') === 0) {
+          num = parseInt(obj3.cmd.substring(3), 10);
+          if (!isNaN(num)) {
+            return num;
+          }
+        }
+        error('bad XRef entry');
+      }
+      if (this.encrypt && !suppressEncryption) {
+        xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));
+      } else {
+        xrefEntry = parser.getObj();
+      }
+      if (!isStream(xrefEntry)) {
+        this.cache[num] = xrefEntry;
+      }
+      return xrefEntry;
+    },
+
+    fetchCompressed: function XRef_fetchCompressed(xrefEntry,
+                                                   suppressEncryption) {
+      var tableOffset = xrefEntry.offset;
+      var stream = this.fetch(new Ref(tableOffset, 0));
+      if (!isStream(stream)) {
+        error('bad ObjStm stream');
+      }
+      var first = stream.dict.get('First');
+      var n = stream.dict.get('N');
+      if (!isInt(first) || !isInt(n)) {
+        error('invalid first and n parameters for ObjStm stream');
+      }
+      var parser = new Parser(new Lexer(stream), false, this);
+      parser.allowStreams = true;
+      var i, entries = [], num, nums = [];
+      // read the object numbers to populate cache
+      for (i = 0; i < n; ++i) {
+        num = parser.getObj();
+        if (!isInt(num)) {
+          error('invalid object number in the ObjStm stream: ' + num);
+        }
+        nums.push(num);
+        var offset = parser.getObj();
+        if (!isInt(offset)) {
+          error('invalid object offset in the ObjStm stream: ' + offset);
+        }
+      }
+      // read stream objects for cache
+      for (i = 0; i < n; ++i) {
+        entries.push(parser.getObj());
+        num = nums[i];
+        var entry = this.entries[num];
+        if (entry && entry.offset === tableOffset && entry.gen === i) {
+          this.cache[num] = entries[i];
+        }
+      }
+      xrefEntry = entries[xrefEntry.gen];
+      if (xrefEntry === undefined) {
+        error('bad XRef entry for compressed object');
+      }
+      return xrefEntry;
+    },
+
+    fetchIfRefAsync: function XRef_fetchIfRefAsync(obj) {
+      if (!isRef(obj)) {
+        return Promise.resolve(obj);
+      }
+      return this.fetchAsync(obj);
+    },
+
+    fetchAsync: function XRef_fetchAsync(ref, suppressEncryption) {
+      var streamManager = this.stream.manager;
+      var xref = this;
+      return new Promise(function tryFetch(resolve, reject) {
+        try {
+          resolve(xref.fetch(ref, suppressEncryption));
+        } catch (e) {
+          if (e instanceof MissingDataException) {
+            streamManager.requestRange(e.begin, e.end, function () {
+              tryFetch(resolve, reject);
+            });
+            return;
+          }
+          reject(e);
+        }
+      });
+    },
+
+    getCatalogObj: function XRef_getCatalogObj() {
+      return this.root;
+    }
+  };
+
+  return XRef;
+})();
+
+/**
+ * A NameTree is like a Dict but has some advantageous properties, see the
+ * spec (7.9.6) for more details.
+ * TODO: implement all the Dict functions and make this more efficent.
+ */
+var NameTree = (function NameTreeClosure() {
+  function NameTree(root, xref) {
+    this.root = root;
+    this.xref = xref;
+  }
+
+  NameTree.prototype = {
+    getAll: function NameTree_getAll() {
+      var dict = {};
+      if (!this.root) {
+        return dict;
+      }
+      var xref = this.xref;
+      // reading name tree
+      var processed = new RefSet();
+      processed.put(this.root);
+      var queue = [this.root];
+      while (queue.length > 0) {
+        var i, n;
+        var obj = xref.fetchIfRef(queue.shift());
+        if (!isDict(obj)) {
+          continue;
+        }
+        if (obj.has('Kids')) {
+          var kids = obj.get('Kids');
+          for (i = 0, n = kids.length; i < n; i++) {
+            var kid = kids[i];
+            if (processed.has(kid)) {
+              error('invalid destinations');
+            }
+            queue.push(kid);
+            processed.put(kid);
+          }
+          continue;
+        }
+        var names = obj.get('Names');
+        if (names) {
+          for (i = 0, n = names.length; i < n; i += 2) {
+            dict[names[i]] = xref.fetchIfRef(names[i + 1]);
+          }
+        }
+      }
+      return dict;
+    },
+
+    get: function NameTree_get(destinationId) {
+      if (!this.root) {
+        return null;
+      }
+
+      var xref = this.xref;
+      var kidsOrNames = xref.fetchIfRef(this.root);
+      var loopCount = 0;
+      var MAX_NAMES_LEVELS = 10;
+      var l, r, m;
+
+      // Perform a binary search to quickly find the entry that
+      // contains the named destination we are looking for.
+      while (kidsOrNames.has('Kids')) {
+        loopCount++;
+        if (loopCount > MAX_NAMES_LEVELS) {
+          warn('Search depth limit for named destionations has been reached.');
+          return null;
+        }
+
+        var kids = kidsOrNames.get('Kids');
+        if (!isArray(kids)) {
+          return null;
+        }
+
+        l = 0;
+        r = kids.length - 1;
+        while (l <= r) {
+          m = (l + r) >> 1;
+          var kid = xref.fetchIfRef(kids[m]);
+          var limits = kid.get('Limits');
+
+          if (destinationId < limits[0]) {
+            r = m - 1;
+          } else if (destinationId > limits[1]) {
+            l = m + 1;
+          } else {
+            kidsOrNames = xref.fetchIfRef(kids[m]);
+            break;
+          }
+        }
+        if (l > r) {
+          return null;
+        }
+      }
+
+      // If we get here, then we have found the right entry. Now
+      // go through the named destinations in the Named dictionary
+      // until we find the exact destination we're looking for.
+      var names = kidsOrNames.get('Names');
+      if (isArray(names)) {
+        // Perform a binary search to reduce the lookup time.
+        l = 0;
+        r = names.length - 2;
+        while (l <= r) {
+          // Check only even indices (0, 2, 4, ...) because the
+          // odd indices contain the actual D array.
+          m = (l + r) & ~1;
+          if (destinationId < names[m]) {
+            r = m - 2;
+          } else if (destinationId > names[m]) {
+            l = m + 2;
+          } else {
+            return xref.fetchIfRef(names[m + 1]);
+          }
+        }
+      }
+      return null;
+    }
+  };
+  return NameTree;
+})();
+
+/**
+ * "A PDF file can refer to the contents of another file by using a File
+ * Specification (PDF 1.1)", see the spec (7.11) for more details.
+ * NOTE: Only embedded files are supported (as part of the attachments support)
+ * TODO: support the 'URL' file system (with caching if !/V), portable
+ * collections attributes and related files (/RF)
+ */
+var FileSpec = (function FileSpecClosure() {
+  function FileSpec(root, xref) {
+    if (!root || !isDict(root)) {
+      return;
+    }
+    this.xref = xref;
+    this.root = root;
+    if (root.has('FS')) {
+      this.fs = root.get('FS');
+    }
+    this.description = root.has('Desc') ?
+                         stringToPDFString(root.get('Desc')) :
+                         '';
+    if (root.has('RF')) {
+      warn('Related file specifications are not supported');
+    }
+    this.contentAvailable = true;
+    if (!root.has('EF')) {
+      this.contentAvailable = false;
+      warn('Non-embedded file specifications are not supported');
+    }
+  }
+
+  function pickPlatformItem(dict) {
+    // Look for the filename in this order:
+    // UF, F, Unix, Mac, DOS
+    if (dict.has('UF')) {
+      return dict.get('UF');
+    } else if (dict.has('F')) {
+      return dict.get('F');
+    } else if (dict.has('Unix')) {
+      return dict.get('Unix');
+    } else if (dict.has('Mac')) {
+      return dict.get('Mac');
+    } else if (dict.has('DOS')) {
+      return dict.get('DOS');
+    } else {
+      return null;
+    }
+  }
+
+  FileSpec.prototype = {
+    get filename() {
+      if (!this._filename && this.root) {
+        var filename = pickPlatformItem(this.root) || 'unnamed';
+        this._filename = stringToPDFString(filename).
+          replace(/\\\\/g, '\\').
+          replace(/\\\//g, '/').
+          replace(/\\/g, '/');
+      }
+      return this._filename;
+    },
+    get content() {
+      if (!this.contentAvailable) {
+        return null;
+      }
+      if (!this.contentRef && this.root) {
+        this.contentRef = pickPlatformItem(this.root.get('EF'));
+      }
+      var content = null;
+      if (this.contentRef) {
+        var xref = this.xref;
+        var fileObj = xref.fetchIfRef(this.contentRef);
+        if (fileObj && isStream(fileObj)) {
+          content = fileObj.getBytes();
+        } else {
+          warn('Embedded file specification points to non-existing/invalid ' +
+            'content');
+        }
+      } else {
+        warn('Embedded file specification does not have a content');
+      }
+      return content;
+    },
+    get serializable() {
+      return {
+        filename: this.filename,
+        content: this.content
+      };
+    }
+  };
+  return FileSpec;
+})();
+
+/**
+ * A helper for loading missing data in object graphs. It traverses the graph
+ * depth first and queues up any objects that have missing data. Once it has
+ * has traversed as many objects that are available it attempts to bundle the
+ * missing data requests and then resume from the nodes that weren't ready.
+ *
+ * NOTE: It provides protection from circular references by keeping track of
+ * of loaded references. However, you must be careful not to load any graphs
+ * that have references to the catalog or other pages since that will cause the
+ * entire PDF document object graph to be traversed.
+ */
+var ObjectLoader = (function() {
+  function mayHaveChildren(value) {
+    return isRef(value) || isDict(value) || isArray(value) || isStream(value);
+  }
+
+  function addChildren(node, nodesToVisit) {
+    var value;
+    if (isDict(node) || isStream(node)) {
+      var map;
+      if (isDict(node)) {
+        map = node.map;
+      } else {
+        map = node.dict.map;
+      }
+      for (var key in map) {
+        value = map[key];
+        if (mayHaveChildren(value)) {
+          nodesToVisit.push(value);
+        }
+      }
+    } else if (isArray(node)) {
+      for (var i = 0, ii = node.length; i < ii; i++) {
+        value = node[i];
+        if (mayHaveChildren(value)) {
+          nodesToVisit.push(value);
+        }
+      }
+    }
+  }
+
+  function ObjectLoader(obj, keys, xref) {
+    this.obj = obj;
+    this.keys = keys;
+    this.xref = xref;
+    this.refSet = null;
+  }
+
+  ObjectLoader.prototype = {
+    load: function ObjectLoader_load() {
+      var keys = this.keys;
+      this.capability = createPromiseCapability();
+      // Don't walk the graph if all the data is already loaded.
+      if (!(this.xref.stream instanceof ChunkedStream) ||
+          this.xref.stream.getMissingChunks().length === 0) {
+        this.capability.resolve();
+        return this.capability.promise;
+      }
+
+      this.refSet = new RefSet();
+      // Setup the initial nodes to visit.
+      var nodesToVisit = [];
+      for (var i = 0; i < keys.length; i++) {
+        nodesToVisit.push(this.obj[keys[i]]);
+      }
+
+      this.walk(nodesToVisit);
+      return this.capability.promise;
+    },
+
+    walk: function ObjectLoader_walk(nodesToVisit) {
+      var nodesToRevisit = [];
+      var pendingRequests = [];
+      // DFS walk of the object graph.
+      while (nodesToVisit.length) {
+        var currentNode = nodesToVisit.pop();
+
+        // Only references or chunked streams can cause missing data exceptions.
+        if (isRef(currentNode)) {
+          // Skip nodes that have already been visited.
+          if (this.refSet.has(currentNode)) {
+            continue;
+          }
+          try {
+            var ref = currentNode;
+            this.refSet.put(ref);
+            currentNode = this.xref.fetch(currentNode);
+          } catch (e) {
+            if (!(e instanceof MissingDataException)) {
+              throw e;
+            }
+            nodesToRevisit.push(currentNode);
+            pendingRequests.push({ begin: e.begin, end: e.end });
+          }
+        }
+        if (currentNode && currentNode.getBaseStreams) {
+          var baseStreams = currentNode.getBaseStreams();
+          var foundMissingData = false;
+          for (var i = 0; i < baseStreams.length; i++) {
+            var stream = baseStreams[i];
+            if (stream.getMissingChunks && stream.getMissingChunks().length) {
+              foundMissingData = true;
+              pendingRequests.push({
+                begin: stream.start,
+                end: stream.end
+              });
+            }
+          }
+          if (foundMissingData) {
+            nodesToRevisit.push(currentNode);
+          }
+        }
+
+        addChildren(currentNode, nodesToVisit);
+      }
+
+      if (pendingRequests.length) {
+        this.xref.stream.manager.requestRanges(pendingRequests,
+            function pendingRequestCallback() {
+          nodesToVisit = nodesToRevisit;
+          for (var i = 0; i < nodesToRevisit.length; i++) {
+            var node = nodesToRevisit[i];
+            // Remove any reference nodes from the currrent refset so they
+            // aren't skipped when we revist them.
+            if (isRef(node)) {
+              this.refSet.remove(node);
+            }
+          }
+          this.walk(nodesToVisit);
+        }.bind(this));
+        return;
+      }
+      // Everything is loaded.
+      this.refSet = null;
+      this.capability.resolve();
+    }
+  };
+
+  return ObjectLoader;
+})();
+
+
+var ISOAdobeCharset = [
+  '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar',
+  'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright',
+  'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero',
+  'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
+  'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question',
+  'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+  'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+  'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',
+  'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
+  'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+  'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',
+  'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
+  'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
+  'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',
+  'periodcentered', 'paragraph', 'bullet', 'quotesinglbase',
+  'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',
+  'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde',
+  'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla',
+  'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine',
+  'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash',
+  'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu',
+  'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter',
+  'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior',
+  'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright',
+  'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde',
+  'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute',
+  'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex',
+  'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex',
+  'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute',
+  'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla',
+  'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex',
+  'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis',
+  'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis',
+  'ugrave', 'yacute', 'ydieresis', 'zcaron'
+];
+
+var ExpertCharset = [
+  '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle',
+  'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',
+  'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',
+  'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',
+  'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',
+  'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle',
+  'colon', 'semicolon', 'commasuperior', 'threequartersemdash',
+  'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior',
+  'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',
+  'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
+  'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',
+  'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',
+  'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',
+  'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',
+  'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',
+  'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',
+  'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle',
+  'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',
+  'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall',
+  'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall',
+  'Cedillasmall', 'onequarter', 'onehalf', 'threequarters',
+  'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',
+  'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',
+  'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',
+  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',
+  'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',
+  'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',
+  'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',
+  'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall',
+  'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall',
+  'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',
+  'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',
+  'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',
+  'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',
+  'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',
+  'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',
+  'Ydieresissmall'
+];
+
+var ExpertSubsetCharset = [
+  '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior',
+  'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',
+  'onedotenleader', 'comma', 'hyphen', 'period', 'fraction',
+  'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',
+  'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle',
+  'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior',
+  'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior',
+  'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',
+  'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
+  'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',
+  'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted',
+  'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter',
+  'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',
+  'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',
+  'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',
+  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',
+  'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',
+  'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',
+  'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',
+  'periodinferior', 'commainferior'
+];
+
+
+var DEFAULT_ICON_SIZE = 22; // px
+var SUPPORTED_TYPES = ['Link', 'Text', 'Widget'];
+
+var Annotation = (function AnnotationClosure() {
+  // 12.5.5: Algorithm: Appearance streams
+  function getTransformMatrix(rect, bbox, matrix) {
+    var bounds = Util.getAxialAlignedBoundingBox(bbox, matrix);
+    var minX = bounds[0];
+    var minY = bounds[1];
+    var maxX = bounds[2];
+    var maxY = bounds[3];
+
+    if (minX === maxX || minY === maxY) {
+      // From real-life file, bbox was [0, 0, 0, 0]. In this case,
+      // just apply the transform for rect
+      return [1, 0, 0, 1, rect[0], rect[1]];
+    }
+
+    var xRatio = (rect[2] - rect[0]) / (maxX - minX);
+    var yRatio = (rect[3] - rect[1]) / (maxY - minY);
+    return [
+      xRatio,
+      0,
+      0,
+      yRatio,
+      rect[0] - minX * xRatio,
+      rect[1] - minY * yRatio
+    ];
+  }
+
+  function getDefaultAppearance(dict) {
+    var appearanceState = dict.get('AP');
+    if (!isDict(appearanceState)) {
+      return;
+    }
+
+    var appearance;
+    var appearances = appearanceState.get('N');
+    if (isDict(appearances)) {
+      var as = dict.get('AS');
+      if (as && appearances.has(as.name)) {
+        appearance = appearances.get(as.name);
+      }
+    } else {
+      appearance = appearances;
+    }
+    return appearance;
+  }
+
+  function Annotation(params) {
+    var dict = params.dict;
+    var data = this.data = {};
+
+    data.subtype = dict.get('Subtype').name;
+    var rect = dict.get('Rect') || [0, 0, 0, 0];
+    data.rect = Util.normalizeRect(rect);
+    data.annotationFlags = dict.get('F');
+
+    var color = dict.get('C');
+    if (!color) {
+      // The PDF spec does not mention how a missing color array is interpreted.
+      // Adobe Reader seems to default to black in this case.
+      data.color = [0, 0, 0];
+    } else if (isArray(color)) {
+      switch (color.length) {
+        case 0:
+          // Empty array denotes transparent border.
+          data.color = null;
+          break;
+        case 1:
+          // TODO: implement DeviceGray
+          break;
+        case 3:
+          data.color = color;
+          break;
+        case 4:
+          // TODO: implement DeviceCMYK
+          break;
+      }
+    }
+
+    // Some types of annotations have border style dict which has more
+    // info than the border array
+    if (dict.has('BS')) {
+      var borderStyle = dict.get('BS');
+      data.borderWidth = borderStyle.has('W') ? borderStyle.get('W') : 1;
+    } else {
+      var borderArray = dict.get('Border') || [0, 0, 1];
+      data.borderWidth = borderArray[2] || 0;
+
+      // TODO: implement proper support for annotations with line dash patterns.
+      var dashArray = borderArray[3];
+      if (data.borderWidth > 0 && dashArray) {
+        if (!isArray(dashArray)) {
+          // Ignore the border if dashArray is not actually an array,
+          // this is consistent with the behaviour in Adobe Reader.
+          data.borderWidth = 0;
+        } else {
+          var dashArrayLength = dashArray.length;
+          if (dashArrayLength > 0) {
+            // According to the PDF specification: the elements in a dashArray
+            // shall be numbers that are nonnegative and not all equal to zero.
+            var isInvalid = false;
+            var numPositive = 0;
+            for (var i = 0; i < dashArrayLength; i++) {
+              var validNumber = (+dashArray[i] >= 0);
+              if (!validNumber) {
+                isInvalid = true;
+                break;
+              } else if (dashArray[i] > 0) {
+                numPositive++;
+              }
+            }
+            if (isInvalid || numPositive === 0) {
+              data.borderWidth = 0;
+            }
+          }
+        }
+      }
+    }
+
+    this.appearance = getDefaultAppearance(dict);
+    data.hasAppearance = !!this.appearance;
+    data.id = params.ref.num;
+  }
+
+  Annotation.prototype = {
+
+    getData: function Annotation_getData() {
+      return this.data;
+    },
+
+    isInvisible: function Annotation_isInvisible() {
+      var data = this.data;
+      if (data && SUPPORTED_TYPES.indexOf(data.subtype) !== -1) {
+        return false;
+      } else {
+        return !!(data &&
+                  data.annotationFlags &&            // Default: not invisible
+                  data.annotationFlags & 0x1);       // Invisible
+      }
+    },
+
+    isViewable: function Annotation_isViewable() {
+      var data = this.data;
+      return !!(!this.isInvisible() &&
+                data &&
+                (!data.annotationFlags ||
+                 !(data.annotationFlags & 0x22)) &&  // Hidden or NoView
+                data.rect);                          // rectangle is necessary
+    },
+
+    isPrintable: function Annotation_isPrintable() {
+      var data = this.data;
+      return !!(!this.isInvisible() &&
+                data &&
+                data.annotationFlags &&              // Default: not printable
+                data.annotationFlags & 0x4 &&        // Print
+                !(data.annotationFlags & 0x2) &&     // Hidden
+                data.rect);                          // rectangle is necessary
+    },
+
+    loadResources: function Annotation_loadResources(keys) {
+      return new Promise(function (resolve, reject) {
+        this.appearance.dict.getAsync('Resources').then(function (resources) {
+          if (!resources) {
+            resolve();
+            return;
+          }
+          var objectLoader = new ObjectLoader(resources.map,
+                                              keys,
+                                              resources.xref);
+          objectLoader.load().then(function() {
+            resolve(resources);
+          }, reject);
+        }, reject);
+      }.bind(this));
+    },
+
+    getOperatorList: function Annotation_getOperatorList(evaluator) {
+
+      if (!this.appearance) {
+        return Promise.resolve(new OperatorList());
+      }
+
+      var data = this.data;
+
+      var appearanceDict = this.appearance.dict;
+      var resourcesPromise = this.loadResources([
+        'ExtGState',
+        'ColorSpace',
+        'Pattern',
+        'Shading',
+        'XObject',
+        'Font'
+        // ProcSet
+        // Properties
+      ]);
+      var bbox = appearanceDict.get('BBox') || [0, 0, 1, 1];
+      var matrix = appearanceDict.get('Matrix') || [1, 0, 0, 1, 0 ,0];
+      var transform = getTransformMatrix(data.rect, bbox, matrix);
+      var self = this;
+
+      return resourcesPromise.then(function(resources) {
+          var opList = new OperatorList();
+          opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]);
+          return evaluator.getOperatorList(self.appearance, resources, opList).
+            then(function () {
+              opList.addOp(OPS.endAnnotation, []);
+              self.appearance.reset();
+              return opList;
+            });
+        });
+    }
+  };
+
+  Annotation.getConstructor =
+      function Annotation_getConstructor(subtype, fieldType) {
+
+    if (!subtype) {
+      return;
+    }
+
+    // TODO(mack): Implement FreeText annotations
+    if (subtype === 'Link') {
+      return LinkAnnotation;
+    } else if (subtype === 'Text') {
+      return TextAnnotation;
+    } else if (subtype === 'Widget') {
+      if (!fieldType) {
+        return;
+      }
+
+      if (fieldType === 'Tx') {
+        return TextWidgetAnnotation;
+      } else {
+        return WidgetAnnotation;
+      }
+    } else {
+      return Annotation;
+    }
+  };
+
+  Annotation.fromRef = function Annotation_fromRef(xref, ref) {
+
+    var dict = xref.fetchIfRef(ref);
+    if (!isDict(dict)) {
+      return;
+    }
+
+    var subtype = dict.get('Subtype');
+    subtype = isName(subtype) ? subtype.name : '';
+    if (!subtype) {
+      return;
+    }
+
+    var fieldType = Util.getInheritableProperty(dict, 'FT');
+    fieldType = isName(fieldType) ? fieldType.name : '';
+
+    var Constructor = Annotation.getConstructor(subtype, fieldType);
+    if (!Constructor) {
+      return;
+    }
+
+    var params = {
+      dict: dict,
+      ref: ref,
+    };
+
+    var annotation = new Constructor(params);
+
+    if (annotation.isViewable() || annotation.isPrintable()) {
+      return annotation;
+    } else {
+      if (SUPPORTED_TYPES.indexOf(subtype) === -1) {
+        warn('unimplemented annotation type: ' + subtype);
+      }
+    }
+  };
+
+  Annotation.appendToOperatorList = function Annotation_appendToOperatorList(
+      annotations, opList, pdfManager, partialEvaluator, intent) {
+
+    function reject(e) {
+      annotationsReadyCapability.reject(e);
+    }
+
+    var annotationsReadyCapability = createPromiseCapability();
+
+    var annotationPromises = [];
+    for (var i = 0, n = annotations.length; i < n; ++i) {
+      if (intent === 'display' && annotations[i].isViewable() ||
+          intent === 'print' && annotations[i].isPrintable()) {
+        annotationPromises.push(
+          annotations[i].getOperatorList(partialEvaluator));
+      }
+    }
+    Promise.all(annotationPromises).then(function(datas) {
+      opList.addOp(OPS.beginAnnotations, []);
+      for (var i = 0, n = datas.length; i < n; ++i) {
+        var annotOpList = datas[i];
+        opList.addOpList(annotOpList);
+      }
+      opList.addOp(OPS.endAnnotations, []);
+      annotationsReadyCapability.resolve();
+    }, reject);
+
+    return annotationsReadyCapability.promise;
+  };
+
+  return Annotation;
+})();
+
+var WidgetAnnotation = (function WidgetAnnotationClosure() {
+
+  function WidgetAnnotation(params) {
+    Annotation.call(this, params);
+
+    var dict = params.dict;
+    var data = this.data;
+
+    data.fieldValue = stringToPDFString(
+      Util.getInheritableProperty(dict, 'V') || '');
+    data.alternativeText = stringToPDFString(dict.get('TU') || '');
+    data.defaultAppearance = Util.getInheritableProperty(dict, 'DA') || '';
+    var fieldType = Util.getInheritableProperty(dict, 'FT');
+    data.fieldType = isName(fieldType) ? fieldType.name : '';
+    data.fieldFlags = Util.getInheritableProperty(dict, 'Ff') || 0;
+    this.fieldResources = Util.getInheritableProperty(dict, 'DR') || Dict.empty;
+
+    // Building the full field name by collecting the field and
+    // its ancestors 'T' data and joining them using '.'.
+    var fieldName = [];
+    var namedItem = dict;
+    var ref = params.ref;
+    while (namedItem) {
+      var parent = namedItem.get('Parent');
+      var parentRef = namedItem.getRaw('Parent');
+      var name = namedItem.get('T');
+      if (name) {
+        fieldName.unshift(stringToPDFString(name));
+      } else if (parent && ref) {
+        // The field name is absent, that means more than one field
+        // with the same name may exist. Replacing the empty name
+        // with the '`' plus index in the parent's 'Kids' array.
+        // This is not in the PDF spec but necessary to id the
+        // the input controls.
+        var kids = parent.get('Kids');
+        var j, jj;
+        for (j = 0, jj = kids.length; j < jj; j++) {
+          var kidRef = kids[j];
+          if (kidRef.num === ref.num && kidRef.gen === ref.gen) {
+            break;
+          }
+        }
+        fieldName.unshift('`' + j);
+      }
+      namedItem = parent;
+      ref = parentRef;
+    }
+    data.fullName = fieldName.join('.');
+  }
+
+  var parent = Annotation.prototype;
+  Util.inherit(WidgetAnnotation, Annotation, {
+    isViewable: function WidgetAnnotation_isViewable() {
+      if (this.data.fieldType === 'Sig') {
+        warn('unimplemented annotation type: Widget signature');
+        return false;
+      }
+
+      return parent.isViewable.call(this);
+    }
+  });
+
+  return WidgetAnnotation;
+})();
+
+var TextWidgetAnnotation = (function TextWidgetAnnotationClosure() {
+  function TextWidgetAnnotation(params) {
+    WidgetAnnotation.call(this, params);
+
+    this.data.textAlignment = Util.getInheritableProperty(params.dict, 'Q');
+    this.data.annotationType = AnnotationType.WIDGET;
+    this.data.hasHtml = !this.data.hasAppearance && !!this.data.fieldValue;
+  }
+
+  Util.inherit(TextWidgetAnnotation, WidgetAnnotation, {
+    getOperatorList: function TextWidgetAnnotation_getOperatorList(evaluator) {
+      if (this.appearance) {
+        return Annotation.prototype.getOperatorList.call(this, evaluator);
+      }
+
+      var opList = new OperatorList();
+      var data = this.data;
+
+      // Even if there is an appearance stream, ignore it. This is the
+      // behaviour used by Adobe Reader.
+      if (!data.defaultAppearance) {
+        return Promise.resolve(opList);
+      }
+
+      var stream = new Stream(stringToBytes(data.defaultAppearance));
+      return evaluator.getOperatorList(stream, this.fieldResources, opList).
+        then(function () {
+          return opList;
+        });
+    }
+  });
+
+  return TextWidgetAnnotation;
+})();
+
+var InteractiveAnnotation = (function InteractiveAnnotationClosure() {
+  function InteractiveAnnotation(params) {
+    Annotation.call(this, params);
+
+    this.data.hasHtml = true;
+  }
+
+  Util.inherit(InteractiveAnnotation, Annotation, { });
+
+  return InteractiveAnnotation;
+})();
+
+var TextAnnotation = (function TextAnnotationClosure() {
+  function TextAnnotation(params) {
+    InteractiveAnnotation.call(this, params);
+
+    var dict = params.dict;
+    var data = this.data;
+
+    var content = dict.get('Contents');
+    var title = dict.get('T');
+    data.annotationType = AnnotationType.TEXT;
+    data.content = stringToPDFString(content || '');
+    data.title = stringToPDFString(title || '');
+
+    if (data.hasAppearance) {
+      data.name = 'NoIcon';
+    } else {
+      data.rect[1] = data.rect[3] - DEFAULT_ICON_SIZE;
+      data.rect[2] = data.rect[0] + DEFAULT_ICON_SIZE;
+      data.name = dict.has('Name') ? dict.get('Name').name : 'Note';
+    }
+
+    if (dict.has('C')) {
+      data.hasBgColor = true;
+    }
+  }
+
+  Util.inherit(TextAnnotation, InteractiveAnnotation, { });
+
+  return TextAnnotation;
+})();
+
+var LinkAnnotation = (function LinkAnnotationClosure() {
+  function LinkAnnotation(params) {
+    InteractiveAnnotation.call(this, params);
+
+    var dict = params.dict;
+    var data = this.data;
+    data.annotationType = AnnotationType.LINK;
+
+    var action = dict.get('A');
+    if (action && isDict(action)) {
+      var linkType = action.get('S').name;
+      if (linkType === 'URI') {
+        var url = action.get('URI');
+        if (isName(url)) {
+          // Some bad PDFs do not put parentheses around relative URLs.
+          url = '/' + url.name;
+        } else if (url) {
+          url = addDefaultProtocolToUrl(url);
+        }
+        // TODO: pdf spec mentions urls can be relative to a Base
+        // entry in the dictionary.
+        if (!isValidUrl(url, false)) {
+          url = '';
+        }
+        data.url = url;
+      } else if (linkType === 'GoTo') {
+        data.dest = action.get('D');
+      } else if (linkType === 'GoToR') {
+        var urlDict = action.get('F');
+        if (isDict(urlDict)) {
+          // We assume that the 'url' is a Filspec dictionary
+          // and fetch the url without checking any further
+          url = urlDict.get('F') || '';
+        }
+
+        // TODO: pdf reference says that GoToR
+        // can also have 'NewWindow' attribute
+        if (!isValidUrl(url, false)) {
+          url = '';
+        }
+        data.url = url;
+        data.dest = action.get('D');
+      } else if (linkType === 'Named') {
+        data.action = action.get('N').name;
+      } else {
+        warn('unrecognized link type: ' + linkType);
+      }
+    } else if (dict.has('Dest')) {
+      // simple destination link
+      var dest = dict.get('Dest');
+      data.dest = isName(dest) ? dest.name : dest;
+    }
+  }
+
+  // Lets URLs beginning with 'www.' default to using the 'http://' protocol.
+  function addDefaultProtocolToUrl(url) {
+    if (url && url.indexOf('www.') === 0) {
+      return ('http://' + url);
+    }
+    return url;
+  }
+
+  Util.inherit(LinkAnnotation, InteractiveAnnotation, { });
+
+  return LinkAnnotation;
+})();
+
+
+var PDFFunction = (function PDFFunctionClosure() {
+  var CONSTRUCT_SAMPLED = 0;
+  var CONSTRUCT_INTERPOLATED = 2;
+  var CONSTRUCT_STICHED = 3;
+  var CONSTRUCT_POSTSCRIPT = 4;
+
+  return {
+    getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps,
+                                                       str) {
+      var i, ii;
+      var length = 1;
+      for (i = 0, ii = size.length; i < ii; i++) {
+        length *= size[i];
+      }
+      length *= outputSize;
+
+      var array = new Array(length);
+      var codeSize = 0;
+      var codeBuf = 0;
+      // 32 is a valid bps so shifting won't work
+      var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);
+
+      var strBytes = str.getBytes((length * bps + 7) / 8);
+      var strIdx = 0;
+      for (i = 0; i < length; i++) {
+        while (codeSize < bps) {
+          codeBuf <<= 8;
+          codeBuf |= strBytes[strIdx++];
+          codeSize += 8;
+        }
+        codeSize -= bps;
+        array[i] = (codeBuf >> codeSize) * sampleMul;
+        codeBuf &= (1 << codeSize) - 1;
+      }
+      return array;
+    },
+
+    getIR: function PDFFunction_getIR(xref, fn) {
+      var dict = fn.dict;
+      if (!dict) {
+        dict = fn;
+      }
+
+      var types = [this.constructSampled,
+                   null,
+                   this.constructInterpolated,
+                   this.constructStiched,
+                   this.constructPostScript];
+
+      var typeNum = dict.get('FunctionType');
+      var typeFn = types[typeNum];
+      if (!typeFn) {
+        error('Unknown type of function');
+      }
+
+      return typeFn.call(this, fn, dict, xref);
+    },
+
+    fromIR: function PDFFunction_fromIR(IR) {
+      var type = IR[0];
+      switch (type) {
+        case CONSTRUCT_SAMPLED:
+          return this.constructSampledFromIR(IR);
+        case CONSTRUCT_INTERPOLATED:
+          return this.constructInterpolatedFromIR(IR);
+        case CONSTRUCT_STICHED:
+          return this.constructStichedFromIR(IR);
+        //case CONSTRUCT_POSTSCRIPT:
+        default:
+          return this.constructPostScriptFromIR(IR);
+      }
+    },
+
+    parse: function PDFFunction_parse(xref, fn) {
+      var IR = this.getIR(xref, fn);
+      return this.fromIR(IR);
+    },
+
+    parseArray: function PDFFunction_parseArray(xref, fnObj) {
+      if (!isArray(fnObj)) {
+        // not an array -- parsing as regular function
+        return this.parse(xref, fnObj);
+      }
+
+      var fnArray = [];
+      for (var j = 0, jj = fnObj.length; j < jj; j++) {
+        var obj = xref.fetchIfRef(fnObj[j]);
+        fnArray.push(PDFFunction.parse(xref, obj));
+      }
+      return function (src, srcOffset, dest, destOffset) {
+        for (var i = 0, ii = fnArray.length; i < ii; i++) {
+          fnArray[i](src, srcOffset, dest, destOffset + i);
+        }
+      };
+    },
+
+    constructSampled: function PDFFunction_constructSampled(str, dict) {
+      function toMultiArray(arr) {
+        var inputLength = arr.length;
+        var out = [];
+        var index = 0;
+        for (var i = 0; i < inputLength; i += 2) {
+          out[index] = [arr[i], arr[i + 1]];
+          ++index;
+        }
+        return out;
+      }
+      var domain = dict.get('Domain');
+      var range = dict.get('Range');
+
+      if (!domain || !range) {
+        error('No domain or range');
+      }
+
+      var inputSize = domain.length / 2;
+      var outputSize = range.length / 2;
+
+      domain = toMultiArray(domain);
+      range = toMultiArray(range);
+
+      var size = dict.get('Size');
+      var bps = dict.get('BitsPerSample');
+      var order = dict.get('Order') || 1;
+      if (order !== 1) {
+        // No description how cubic spline interpolation works in PDF32000:2008
+        // As in poppler, ignoring order, linear interpolation may work as good
+        info('No support for cubic spline interpolation: ' + order);
+      }
+
+      var encode = dict.get('Encode');
+      if (!encode) {
+        encode = [];
+        for (var i = 0; i < inputSize; ++i) {
+          encode.push(0);
+          encode.push(size[i] - 1);
+        }
+      }
+      encode = toMultiArray(encode);
+
+      var decode = dict.get('Decode');
+      if (!decode) {
+        decode = range;
+      } else {
+        decode = toMultiArray(decode);
+      }
+
+      var samples = this.getSampleArray(size, outputSize, bps, str);
+
+      return [
+        CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size,
+        outputSize, Math.pow(2, bps) - 1, range
+      ];
+    },
+
+    constructSampledFromIR: function PDFFunction_constructSampledFromIR(IR) {
+      // See chapter 3, page 109 of the PDF reference
+      function interpolate(x, xmin, xmax, ymin, ymax) {
+        return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin)));
+      }
+
+      return function constructSampledFromIRResult(src, srcOffset,
+                                                   dest, destOffset) {
+        // See chapter 3, page 110 of the PDF reference.
+        var m = IR[1];
+        var domain = IR[2];
+        var encode = IR[3];
+        var decode = IR[4];
+        var samples = IR[5];
+        var size = IR[6];
+        var n = IR[7];
+        //var mask = IR[8];
+        var range = IR[9];
+
+        // Building the cube vertices: its part and sample index
+        // http://rjwagner49.com/Mathematics/Interpolation.pdf
+        var cubeVertices = 1 << m;
+        var cubeN = new Float64Array(cubeVertices);
+        var cubeVertex = new Uint32Array(cubeVertices);
+        var i, j;
+        for (j = 0; j < cubeVertices; j++) {
+          cubeN[j] = 1;
+        }
+
+        var k = n, pos = 1;
+        // Map x_i to y_j for 0 <= i < m using the sampled function.
+        for (i = 0; i < m; ++i) {
+          // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)
+          var domain_2i = domain[i][0];
+          var domain_2i_1 = domain[i][1];
+          var xi = Math.min(Math.max(src[srcOffset +i], domain_2i),
+                            domain_2i_1);
+
+          // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,
+          //                   Encode_2i, Encode_2i+1)
+          var e = interpolate(xi, domain_2i, domain_2i_1,
+                              encode[i][0], encode[i][1]);
+
+          // e_i' = min(max(e_i, 0), Size_i - 1)
+          var size_i = size[i];
+          e = Math.min(Math.max(e, 0), size_i - 1);
+
+          // Adjusting the cube: N and vertex sample index
+          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;
+          var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);
+          var n1 = e - e0; // (e - e0) / (e1 - e0);
+          var offset0 = e0 * k;
+          var offset1 = offset0 + k; // e1 * k
+          for (j = 0; j < cubeVertices; j++) {
+            if (j & pos) {
+              cubeN[j] *= n1;
+              cubeVertex[j] += offset1;
+            } else {
+              cubeN[j] *= n0;
+              cubeVertex[j] += offset0;
+            }
+          }
+
+          k *= size_i;
+          pos <<= 1;
+        }
+
+        for (j = 0; j < n; ++j) {
+          // Sum all cube vertices' samples portions
+          var rj = 0;
+          for (i = 0; i < cubeVertices; i++) {
+            rj += samples[cubeVertex[i] + j] * cubeN[i];
+          }
+
+          // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,
+          //                    Decode_2j, Decode_2j+1)
+          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
+
+          // y_j = min(max(r_j, range_2j), range_2j+1)
+          dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]),
+                                          range[j][1]);
+        }
+      };
+    },
+
+    constructInterpolated: function PDFFunction_constructInterpolated(str,
+                                                                      dict) {
+      var c0 = dict.get('C0') || [0];
+      var c1 = dict.get('C1') || [1];
+      var n = dict.get('N');
+
+      if (!isArray(c0) || !isArray(c1)) {
+        error('Illegal dictionary for interpolated function');
+      }
+
+      var length = c0.length;
+      var diff = [];
+      for (var i = 0; i < length; ++i) {
+        diff.push(c1[i] - c0[i]);
+      }
+
+      return [CONSTRUCT_INTERPOLATED, c0, diff, n];
+    },
+
+    constructInterpolatedFromIR:
+      function PDFFunction_constructInterpolatedFromIR(IR) {
+      var c0 = IR[1];
+      var diff = IR[2];
+      var n = IR[3];
+
+      var length = diff.length;
+
+      return function constructInterpolatedFromIRResult(src, srcOffset,
+                                                        dest, destOffset) {
+        var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);
+
+        for (var j = 0; j < length; ++j) {
+          dest[destOffset + j] = c0[j] + (x * diff[j]);
+        }
+      };
+    },
+
+    constructStiched: function PDFFunction_constructStiched(fn, dict, xref) {
+      var domain = dict.get('Domain');
+
+      if (!domain) {
+        error('No domain');
+      }
+
+      var inputSize = domain.length / 2;
+      if (inputSize !== 1) {
+        error('Bad domain for stiched function');
+      }
+
+      var fnRefs = dict.get('Functions');
+      var fns = [];
+      for (var i = 0, ii = fnRefs.length; i < ii; ++i) {
+        fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i])));
+      }
+
+      var bounds = dict.get('Bounds');
+      var encode = dict.get('Encode');
+
+      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];
+    },
+
+    constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) {
+      var domain = IR[1];
+      var bounds = IR[2];
+      var encode = IR[3];
+      var fnsIR = IR[4];
+      var fns = [];
+      var tmpBuf = new Float32Array(1);
+
+      for (var i = 0, ii = fnsIR.length; i < ii; i++) {
+        fns.push(PDFFunction.fromIR(fnsIR[i]));
+      }
+
+      return function constructStichedFromIRResult(src, srcOffset,
+                                                   dest, destOffset) {
+        var clip = function constructStichedFromIRClip(v, min, max) {
+          if (v > max) {
+            v = max;
+          } else if (v < min) {
+            v = min;
+          }
+          return v;
+        };
+
+        // clip to domain
+        var v = clip(src[srcOffset], domain[0], domain[1]);
+        // calulate which bound the value is in
+        for (var i = 0, ii = bounds.length; i < ii; ++i) {
+          if (v < bounds[i]) {
+            break;
+          }
+        }
+
+        // encode value into domain of function
+        var dmin = domain[0];
+        if (i > 0) {
+          dmin = bounds[i - 1];
+        }
+        var dmax = domain[1];
+        if (i < bounds.length) {
+          dmax = bounds[i];
+        }
+
+        var rmin = encode[2 * i];
+        var rmax = encode[2 * i + 1];
+
+        tmpBuf[0] = rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
+
+        // call the appropriate function
+        fns[i](tmpBuf, 0, dest, destOffset);
+      };
+    },
+
+    constructPostScript: function PDFFunction_constructPostScript(fn, dict,
+                                                                  xref) {
+      var domain = dict.get('Domain');
+      var range = dict.get('Range');
+
+      if (!domain) {
+        error('No domain.');
+      }
+
+      if (!range) {
+        error('No range.');
+      }
+
+      var lexer = new PostScriptLexer(fn);
+      var parser = new PostScriptParser(lexer);
+      var code = parser.parse();
+
+      return [CONSTRUCT_POSTSCRIPT, domain, range, code];
+    },
+
+    constructPostScriptFromIR: function PDFFunction_constructPostScriptFromIR(
+                                          IR) {
+      var domain = IR[1];
+      var range = IR[2];
+      var code = IR[3];
+
+      var compiled = (new PostScriptCompiler()).compile(code, domain, range);
+      if (compiled) {
+        // Compiled function consists of simple expressions such as addition,
+        // subtraction, Math.max, and also contains 'var' and 'return'
+        // statements. See the generation in the PostScriptCompiler below.
+        /*jshint -W054 */
+        return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled);
+      }
+
+      info('Unable to compile PS function');
+
+      var numOutputs = range.length >> 1;
+      var numInputs = domain.length >> 1;
+      var evaluator = new PostScriptEvaluator(code);
+      // Cache the values for a big speed up, the cache size is limited though
+      // since the number of possible values can be huge from a PS function.
+      var cache = {};
+      // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values
+      // seen in our tests.
+      var MAX_CACHE_SIZE = 2048 * 4;
+      var cache_available = MAX_CACHE_SIZE;
+      var tmpBuf = new Float32Array(numInputs);
+
+      return function constructPostScriptFromIRResult(src, srcOffset,
+                                                      dest, destOffset) {
+        var i, value;
+        var key = '';
+        var input = tmpBuf;
+        for (i = 0; i < numInputs; i++) {
+          value = src[srcOffset + i];
+          input[i] = value;
+          key += value + '_';
+        }
+
+        var cachedValue = cache[key];
+        if (cachedValue !== undefined) {
+          dest.set(cachedValue, destOffset);
+          return;
+        }
+
+        var output = new Float32Array(numOutputs);
+        var stack = evaluator.execute(input);
+        var stackIndex = stack.length - numOutputs;
+        for (i = 0; i < numOutputs; i++) {
+          value = stack[stackIndex + i];
+          var bound = range[i * 2];
+          if (value < bound) {
+            value = bound;
+          } else {
+            bound = range[i * 2 +1];
+            if (value > bound) {
+              value = bound;
+            }
+          }
+          output[i] = value;
+        }
+        if (cache_available > 0) {
+          cache_available--;
+          cache[key] = output;
+        }
+        dest.set(output, destOffset);
+      };
+    }
+  };
+})();
+
+function isPDFFunction(v) {
+  var fnDict;
+  if (typeof v !== 'object') {
+    return false;
+  } else if (isDict(v)) {
+    fnDict = v;
+  } else if (isStream(v)) {
+    fnDict = v.dict;
+  } else {
+    return false;
+  }
+  return fnDict.has('FunctionType');
+}
+
+var PostScriptStack = (function PostScriptStackClosure() {
+  var MAX_STACK_SIZE = 100;
+  function PostScriptStack(initialStack) {
+    this.stack = !initialStack ? [] :
+                 Array.prototype.slice.call(initialStack, 0);
+  }
+
+  PostScriptStack.prototype = {
+    push: function PostScriptStack_push(value) {
+      if (this.stack.length >= MAX_STACK_SIZE) {
+        error('PostScript function stack overflow.');
+      }
+      this.stack.push(value);
+    },
+    pop: function PostScriptStack_pop() {
+      if (this.stack.length <= 0) {
+        error('PostScript function stack underflow.');
+      }
+      return this.stack.pop();
+    },
+    copy: function PostScriptStack_copy(n) {
+      if (this.stack.length + n >= MAX_STACK_SIZE) {
+        error('PostScript function stack overflow.');
+      }
+      var stack = this.stack;
+      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {
+        stack.push(stack[i]);
+      }
+    },
+    index: function PostScriptStack_index(n) {
+      this.push(this.stack[this.stack.length - n - 1]);
+    },
+    // rotate the last n stack elements p times
+    roll: function PostScriptStack_roll(n, p) {
+      var stack = this.stack;
+      var l = stack.length - n;
+      var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t;
+      for (i = l, j = r; i < j; i++, j--) {
+        t = stack[i]; stack[i] = stack[j]; stack[j] = t;
+      }
+      for (i = l, j = c - 1; i < j; i++, j--) {
+        t = stack[i]; stack[i] = stack[j]; stack[j] = t;
+      }
+      for (i = c, j = r; i < j; i++, j--) {
+        t = stack[i]; stack[i] = stack[j]; stack[j] = t;
+      }
+    }
+  };
+  return PostScriptStack;
+})();
+var PostScriptEvaluator = (function PostScriptEvaluatorClosure() {
+  function PostScriptEvaluator(operators) {
+    this.operators = operators;
+  }
+  PostScriptEvaluator.prototype = {
+    execute: function PostScriptEvaluator_execute(initialStack) {
+      var stack = new PostScriptStack(initialStack);
+      var counter = 0;
+      var operators = this.operators;
+      var length = operators.length;
+      var operator, a, b;
+      while (counter < length) {
+        operator = operators[counter++];
+        if (typeof operator === 'number') {
+          // Operator is really an operand and should be pushed to the stack.
+          stack.push(operator);
+          continue;
+        }
+        switch (operator) {
+          // non standard ps operators
+          case 'jz': // jump if false
+            b = stack.pop();
+            a = stack.pop();
+            if (!a) {
+              counter = b;
+            }
+            break;
+          case 'j': // jump
+            a = stack.pop();
+            counter = a;
+            break;
+
+          // all ps operators in alphabetical order (excluding if/ifelse)
+          case 'abs':
+            a = stack.pop();
+            stack.push(Math.abs(a));
+            break;
+          case 'add':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a + b);
+            break;
+          case 'and':
+            b = stack.pop();
+            a = stack.pop();
+            if (isBool(a) && isBool(b)) {
+              stack.push(a && b);
+            } else {
+              stack.push(a & b);
+            }
+            break;
+          case 'atan':
+            a = stack.pop();
+            stack.push(Math.atan(a));
+            break;
+          case 'bitshift':
+            b = stack.pop();
+            a = stack.pop();
+            if (a > 0) {
+              stack.push(a << b);
+            } else {
+              stack.push(a >> b);
+            }
+            break;
+          case 'ceiling':
+            a = stack.pop();
+            stack.push(Math.ceil(a));
+            break;
+          case 'copy':
+            a = stack.pop();
+            stack.copy(a);
+            break;
+          case 'cos':
+            a = stack.pop();
+            stack.push(Math.cos(a));
+            break;
+          case 'cvi':
+            a = stack.pop() | 0;
+            stack.push(a);
+            break;
+          case 'cvr':
+            // noop
+            break;
+          case 'div':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a / b);
+            break;
+          case 'dup':
+            stack.copy(1);
+            break;
+          case 'eq':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a === b);
+            break;
+          case 'exch':
+            stack.roll(2, 1);
+            break;
+          case 'exp':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(Math.pow(a, b));
+            break;
+          case 'false':
+            stack.push(false);
+            break;
+          case 'floor':
+            a = stack.pop();
+            stack.push(Math.floor(a));
+            break;
+          case 'ge':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a >= b);
+            break;
+          case 'gt':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a > b);
+            break;
+          case 'idiv':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push((a / b) | 0);
+            break;
+          case 'index':
+            a = stack.pop();
+            stack.index(a);
+            break;
+          case 'le':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a <= b);
+            break;
+          case 'ln':
+            a = stack.pop();
+            stack.push(Math.log(a));
+            break;
+          case 'log':
+            a = stack.pop();
+            stack.push(Math.log(a) / Math.LN10);
+            break;
+          case 'lt':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a < b);
+            break;
+          case 'mod':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a % b);
+            break;
+          case 'mul':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a * b);
+            break;
+          case 'ne':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a !== b);
+            break;
+          case 'neg':
+            a = stack.pop();
+            stack.push(-a);
+            break;
+          case 'not':
+            a = stack.pop();
+            if (isBool(a)) {
+              stack.push(!a);
+            } else {
+              stack.push(~a);
+            }
+            break;
+          case 'or':
+            b = stack.pop();
+            a = stack.pop();
+            if (isBool(a) && isBool(b)) {
+              stack.push(a || b);
+            } else {
+              stack.push(a | b);
+            }
+            break;
+          case 'pop':
+            stack.pop();
+            break;
+          case 'roll':
+            b = stack.pop();
+            a = stack.pop();
+            stack.roll(a, b);
+            break;
+          case 'round':
+            a = stack.pop();
+            stack.push(Math.round(a));
+            break;
+          case 'sin':
+            a = stack.pop();
+            stack.push(Math.sin(a));
+            break;
+          case 'sqrt':
+            a = stack.pop();
+            stack.push(Math.sqrt(a));
+            break;
+          case 'sub':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a - b);
+            break;
+          case 'true':
+            stack.push(true);
+            break;
+          case 'truncate':
+            a = stack.pop();
+            a = a < 0 ? Math.ceil(a) : Math.floor(a);
+            stack.push(a);
+            break;
+          case 'xor':
+            b = stack.pop();
+            a = stack.pop();
+            if (isBool(a) && isBool(b)) {
+              stack.push(a !== b);
+            } else {
+              stack.push(a ^ b);
+            }
+            break;
+          default:
+            error('Unknown operator ' + operator);
+            break;
+        }
+      }
+      return stack.stack;
+    }
+  };
+  return PostScriptEvaluator;
+})();
+
+// Most of the PDFs functions consist of simple operations such as:
+//   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.
+//
+// We can compile most of such programs, and at the same moment, we can
+// optimize some expressions using basic math properties. Keeping track of
+// min/max values will allow us to avoid extra Math.min/Math.max calls.
+var PostScriptCompiler = (function PostScriptCompilerClosure() {
+  function AstNode(type) {
+    this.type = type;
+  }
+  AstNode.prototype.visit = function (visitor) {
+    throw new Error('abstract method');
+  };
+
+  function AstArgument(index, min, max) {
+    AstNode.call(this, 'args');
+    this.index = index;
+    this.min = min;
+    this.max = max;
+  }
+  AstArgument.prototype = Object.create(AstNode.prototype);
+  AstArgument.prototype.visit = function (visitor) {
+    visitor.visitArgument(this);
+  };
+
+  function AstLiteral(number) {
+    AstNode.call(this, 'literal');
+    this.number = number;
+    this.min = number;
+    this.max = number;
+  }
+  AstLiteral.prototype = Object.create(AstNode.prototype);
+  AstLiteral.prototype.visit = function (visitor) {
+    visitor.visitLiteral(this);
+  };
+
+  function AstBinaryOperation(op, arg1, arg2, min, max) {
+    AstNode.call(this, 'binary');
+    this.op = op;
+    this.arg1 = arg1;
+    this.arg2 = arg2;
+    this.min = min;
+    this.max = max;
+  }
+  AstBinaryOperation.prototype = Object.create(AstNode.prototype);
+  AstBinaryOperation.prototype.visit = function (visitor) {
+    visitor.visitBinaryOperation(this);
+  };
+
+  function AstMin(arg, max) {
+    AstNode.call(this, 'max');
+    this.arg = arg;
+    this.min = arg.min;
+    this.max = max;
+  }
+  AstMin.prototype = Object.create(AstNode.prototype);
+  AstMin.prototype.visit = function (visitor) {
+    visitor.visitMin(this);
+  };
+
+  function AstVariable(index, min, max) {
+    AstNode.call(this, 'var');
+    this.index = index;
+    this.min = min;
+    this.max = max;
+  }
+  AstVariable.prototype = Object.create(AstNode.prototype);
+  AstVariable.prototype.visit = function (visitor) {
+    visitor.visitVariable(this);
+  };
+
+  function AstVariableDefinition(variable, arg) {
+    AstNode.call(this, 'definition');
+    this.variable = variable;
+    this.arg = arg;
+  }
+  AstVariableDefinition.prototype = Object.create(AstNode.prototype);
+  AstVariableDefinition.prototype.visit = function (visitor) {
+    visitor.visitVariableDefinition(this);
+  };
+
+  function ExpressionBuilderVisitor() {
+    this.parts = [];
+  }
+  ExpressionBuilderVisitor.prototype = {
+    visitArgument: function (arg) {
+      this.parts.push('Math.max(', arg.min, ', Math.min(',
+                      arg.max, ', src[srcOffset + ', arg.index, ']))');
+    },
+    visitVariable: function (variable) {
+      this.parts.push('v', variable.index);
+    },
+    visitLiteral: function (literal) {
+      this.parts.push(literal.number);
+    },
+    visitBinaryOperation: function (operation) {
+      this.parts.push('(');
+      operation.arg1.visit(this);
+      this.parts.push(' ', operation.op, ' ');
+      operation.arg2.visit(this);
+      this.parts.push(')');
+    },
+    visitVariableDefinition: function (definition) {
+      this.parts.push('var ');
+      definition.variable.visit(this);
+      this.parts.push(' = ');
+      definition.arg.visit(this);
+      this.parts.push(';');
+    },
+    visitMin: function (max) {
+      this.parts.push('Math.min(');
+      max.arg.visit(this);
+      this.parts.push(', ', max.max, ')');
+    },
+    toString: function () {
+      return this.parts.join('');
+    }
+  };
+
+  function buildAddOperation(num1, num2) {
+    if (num2.type === 'literal' && num2.number === 0) {
+      // optimization: second operand is 0
+      return num1;
+    }
+    if (num1.type === 'literal' && num1.number === 0) {
+      // optimization: first operand is 0
+      return num2;
+    }
+    if (num2.type === 'literal' && num1.type === 'literal') {
+      // optimization: operands operand are literals
+      return new AstLiteral(num1.number + num2.number);
+    }
+    return new AstBinaryOperation('+', num1, num2,
+                                  num1.min + num2.min, num1.max + num2.max);
+  }
+
+  function buildMulOperation(num1, num2) {
+    if (num2.type === 'literal') {
+      // optimization: second operands is a literal...
+      if (num2.number === 0) {
+        return new AstLiteral(0); // and it's 0
+      } else if (num2.number === 1) {
+        return num1; // and it's 1
+      } else if (num1.type === 'literal') {
+        // ... and first operands is a literal too
+        return new AstLiteral(num1.number * num2.number);
+      }
+    }
+    if (num1.type === 'literal') {
+      // optimization: first operands is a literal...
+      if (num1.number === 0) {
+        return new AstLiteral(0); // and it's 0
+      } else if (num1.number === 1) {
+        return num2; // and it's 1
+      }
+    }
+    var min = Math.min(num1.min * num2.min, num1.min * num2.max,
+                       num1.max * num2.min, num1.max * num2.max);
+    var max = Math.max(num1.min * num2.min, num1.min * num2.max,
+                       num1.max * num2.min, num1.max * num2.max);
+    return new AstBinaryOperation('*', num1, num2, min, max);
+  }
+
+  function buildSubOperation(num1, num2) {
+    if (num2.type === 'literal') {
+      // optimization: second operands is a literal...
+      if (num2.number === 0) {
+        return num1; // ... and it's 0
+      } else if (num1.type === 'literal') {
+        // ... and first operands is a literal too
+        return new AstLiteral(num1.number - num2.number);
+      }
+    }
+    if (num2.type === 'binary' && num2.op === '-' &&
+      num1.type === 'literal' && num1.number === 1 &&
+      num2.arg1.type === 'literal' && num2.arg1.number === 1) {
+      // optimization for case: 1 - (1 - x)
+      return num2.arg2;
+    }
+    return new AstBinaryOperation('-', num1, num2,
+                                  num1.min - num2.max, num1.max - num2.min);
+  }
+
+  function buildMinOperation(num1, max) {
+    if (num1.min >= max) {
+      // optimization: num1 min value is not less than required max
+      return new AstLiteral(max); // just returning max
+    } else if (num1.max <= max) {
+      // optimization: num1 max value is not greater than required max
+      return num1; // just returning an argument
+    }
+    return new AstMin(num1, max);
+  }
+
+  function PostScriptCompiler() {}
+  PostScriptCompiler.prototype = {
+    compile: function PostScriptCompiler_compile(code, domain, range) {
+      var stack = [];
+      var i, ii;
+      var instructions = [];
+      var inputSize = domain.length >> 1, outputSize = range.length >> 1;
+      var lastRegister = 0;
+      var n, j, min, max;
+      var num1, num2, ast1, ast2, tmpVar, item;
+      for (i = 0; i < inputSize; i++) {
+        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));
+      }
+
+      for (i = 0, ii = code.length; i < ii; i++) {
+        item = code[i];
+        if (typeof item === 'number') {
+          stack.push(new AstLiteral(item));
+          continue;
+        }
+
+        switch (item) {
+          case 'add':
+            if (stack.length < 2) {
+              return null;
+            }
+            num2 = stack.pop();
+            num1 = stack.pop();
+            stack.push(buildAddOperation(num1, num2));
+            break;
+          case 'cvr':
+            if (stack.length < 1) {
+              return null;
+            }
+            break;
+          case 'mul':
+            if (stack.length < 2) {
+              return null;
+            }
+            num2 = stack.pop();
+            num1 = stack.pop();
+            stack.push(buildMulOperation(num1, num2));
+            break;
+          case 'sub':
+            if (stack.length < 2) {
+              return null;
+            }
+            num2 = stack.pop();
+            num1 = stack.pop();
+            stack.push(buildSubOperation(num1, num2));
+            break;
+          case 'exch':
+            if (stack.length < 2) {
+              return null;
+            }
+            ast1 = stack.pop(); ast2 = stack.pop();
+            stack.push(ast1, ast2);
+            break;
+          case 'pop':
+            if (stack.length < 1) {
+              return null;
+            }
+            stack.pop();
+            break;
+          case 'index':
+            if (stack.length < 1) {
+              return null;
+            }
+            num1 = stack.pop();
+            if (num1.type !== 'literal') {
+              return null;
+            }
+            n = num1.number;
+            if (n < 0 || (n|0) !== n || stack.length < n) {
+              return null;
+            }
+            ast1 = stack[stack.length - n - 1];
+            if (ast1.type === 'literal' || ast1.type === 'var') {
+              stack.push(ast1);
+              break;
+            }
+            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);
+            stack[stack.length - n - 1] = tmpVar;
+            stack.push(tmpVar);
+            instructions.push(new AstVariableDefinition(tmpVar, ast1));
+            break;
+          case 'dup':
+            if (stack.length < 1) {
+              return null;
+            }
+            if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' &&
+                code[i + 3] === i + 7 && code[i + 4] === 'jz' &&
+                code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) {
+              // special case of the commands sequence for the min operation
+              num1 = stack.pop();
+              stack.push(buildMinOperation(num1, code[i + 1]));
+              i += 6;
+              break;
+            }
+            ast1 = stack[stack.length - 1];
+            if (ast1.type === 'literal' || ast1.type === 'var') {
+              // we don't have to save into intermediate variable a literal or
+              // variable.
+              stack.push(ast1);
+              break;
+            }
+            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);
+            stack[stack.length - 1] = tmpVar;
+            stack.push(tmpVar);
+            instructions.push(new AstVariableDefinition(tmpVar, ast1));
+            break;
+          case 'roll':
+            if (stack.length < 2) {
+              return null;
+            }
+            num2 = stack.pop();
+            num1 = stack.pop();
+            if (num2.type !== 'literal' || num1.type !== 'literal') {
+              // both roll operands must be numbers
+              return null;
+            }
+            j = num2.number;
+            n = num1.number;
+            if (n <= 0 || (n|0) !== n || (j|0) !== j || stack.length < n) {
+              // ... and integers
+              return null;
+            }
+            j = ((j % n) + n) % n;
+            if (j === 0) {
+              break; // just skipping -- there are nothing to rotate
+            }
+            Array.prototype.push.apply(stack,
+                                       stack.splice(stack.length - n, n - j));
+            break;
+          default:
+            return null; // unsupported operator
+        }
+      }
+
+      if (stack.length !== outputSize) {
+        return null;
+      }
+
+      var result = [];
+      instructions.forEach(function (instruction) {
+        var statementBuilder = new ExpressionBuilderVisitor();
+        instruction.visit(statementBuilder);
+        result.push(statementBuilder.toString());
+      });
+      stack.forEach(function (expr, i) {
+        var statementBuilder = new ExpressionBuilderVisitor();
+        expr.visit(statementBuilder);
+        var min = range[i * 2], max = range[i * 2 + 1];
+        var out = [statementBuilder.toString()];
+        if (min > expr.min) {
+          out.unshift('Math.max(', min, ', ');
+          out.push(')');
+        }
+        if (max < expr.max) {
+          out.unshift('Math.min(', max, ', ');
+          out.push(')');
+        }
+        out.unshift('dest[destOffset + ', i, '] = ');
+        out.push(';');
+        result.push(out.join(''));
+      });
+      return result.join('\n');
+    }
+  };
+
+  return PostScriptCompiler;
+})();
+
+
+var ColorSpace = (function ColorSpaceClosure() {
+  // Constructor should define this.numComps, this.defaultColor, this.name
+  function ColorSpace() {
+    error('should not call ColorSpace constructor');
+  }
+
+  ColorSpace.prototype = {
+    /**
+     * Converts the color value to the RGB color. The color components are
+     * located in the src array starting from the srcOffset. Returns the array
+     * of the rgb components, each value ranging from [0,255].
+     */
+    getRgb: function ColorSpace_getRgb(src, srcOffset) {
+      var rgb = new Uint8Array(3);
+      this.getRgbItem(src, srcOffset, rgb, 0);
+      return rgb;
+    },
+    /**
+     * Converts the color value to the RGB color, similar to the getRgb method.
+     * The result placed into the dest array starting from the destOffset.
+     */
+    getRgbItem: function ColorSpace_getRgbItem(src, srcOffset,
+                                               dest, destOffset) {
+      error('Should not call ColorSpace.getRgbItem');
+    },
+    /**
+     * Converts the specified number of the color values to the RGB colors.
+     * The colors are located in the src array starting from the srcOffset.
+     * The result is placed into the dest array starting from the destOffset.
+     * The src array items shall be in [0,2^bits) range, the dest array items
+     * will be in [0,255] range. alpha01 indicates how many alpha components
+     * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA
+     * array).
+     */
+    getRgbBuffer: function ColorSpace_getRgbBuffer(src, srcOffset, count,
+                                                   dest, destOffset, bits,
+                                                   alpha01) {
+      error('Should not call ColorSpace.getRgbBuffer');
+    },
+    /**
+     * Determines the number of bytes required to store the result of the
+     * conversion done by the getRgbBuffer method. As in getRgbBuffer,
+     * |alpha01| is either 0 (RGB output) or 1 (RGBA output).
+     */
+    getOutputLength: function ColorSpace_getOutputLength(inputLength,
+                                                         alpha01) {
+      error('Should not call ColorSpace.getOutputLength');
+    },
+    /**
+     * Returns true if source data will be equal the result/output data.
+     */
+    isPassthrough: function ColorSpace_isPassthrough(bits) {
+      return false;
+    },
+    /**
+     * Fills in the RGB colors in the destination buffer.  alpha01 indicates
+     * how many alpha components there are in the dest array; it will be either
+     * 0 (RGB array) or 1 (RGBA array).
+     */
+    fillRgb: function ColorSpace_fillRgb(dest, originalWidth,
+                                         originalHeight, width, height,
+                                         actualHeight, bpc, comps, alpha01) {
+      var count = originalWidth * originalHeight;
+      var rgbBuf = null;
+      var numComponentColors = 1 << bpc;
+      var needsResizing = originalHeight !== height || originalWidth !== width;
+      var i, ii;
+
+      if (this.isPassthrough(bpc)) {
+        rgbBuf = comps;
+      } else if (this.numComps === 1 && count > numComponentColors &&
+          this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') {
+        // Optimization: create a color map when there is just one component and
+        // we are converting more colors than the size of the color map. We
+        // don't build the map if the colorspace is gray or rgb since those
+        // methods are faster than building a map. This mainly offers big speed
+        // ups for indexed and alternate colorspaces.
+        //
+        // TODO it may be worth while to cache the color map. While running
+        // testing I never hit a cache so I will leave that out for now (perhaps
+        // we are reparsing colorspaces too much?).
+        var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) :
+                                   new Uint16Array(numComponentColors);
+        var key;
+        for (i = 0; i < numComponentColors; i++) {
+          allColors[i] = i;
+        }
+        var colorMap = new Uint8Array(numComponentColors * 3);
+        this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc,
+                          /* alpha01 = */ 0);
+
+        var destPos, rgbPos;
+        if (!needsResizing) {
+          // Fill in the RGB values directly into |dest|.
+          destPos = 0;
+          for (i = 0; i < count; ++i) {
+            key = comps[i] * 3;
+            dest[destPos++] = colorMap[key];
+            dest[destPos++] = colorMap[key + 1];
+            dest[destPos++] = colorMap[key + 2];
+            destPos += alpha01;
+          }
+        } else {
+          rgbBuf = new Uint8Array(count * 3);
+          rgbPos = 0;
+          for (i = 0; i < count; ++i) {
+            key = comps[i] * 3;
+            rgbBuf[rgbPos++] = colorMap[key];
+            rgbBuf[rgbPos++] = colorMap[key + 1];
+            rgbBuf[rgbPos++] = colorMap[key + 2];
+          }
+        }
+      } else {
+        if (!needsResizing) {
+          // Fill in the RGB values directly into |dest|.
+          this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc,
+                            alpha01);
+        } else {
+          rgbBuf = new Uint8Array(count * 3);
+          this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc,
+                            /* alpha01 = */ 0);
+        }
+      }
+
+      if (rgbBuf) {
+        if (needsResizing) {
+          PDFImage.resize(rgbBuf, bpc, 3, originalWidth, originalHeight, width,
+                          height, dest, alpha01);
+        } else {
+          rgbPos = 0;
+          destPos = 0;
+          for (i = 0, ii = width * actualHeight; i < ii; i++) {
+            dest[destPos++] = rgbBuf[rgbPos++];
+            dest[destPos++] = rgbBuf[rgbPos++];
+            dest[destPos++] = rgbBuf[rgbPos++];
+            destPos += alpha01;
+          }
+        }
+      }
+    },
+    /**
+     * True if the colorspace has components in the default range of [0, 1].
+     * This should be true for all colorspaces except for lab color spaces
+     * which are [0,100], [-128, 127], [-128, 127].
+     */
+    usesZeroToOneRange: true
+  };
+
+  ColorSpace.parse = function ColorSpace_parse(cs, xref, res) {
+    var IR = ColorSpace.parseToIR(cs, xref, res);
+    if (IR instanceof AlternateCS) {
+      return IR;
+    }
+    return ColorSpace.fromIR(IR);
+  };
+
+  ColorSpace.fromIR = function ColorSpace_fromIR(IR) {
+    var name = isArray(IR) ? IR[0] : IR;
+    var whitePoint, blackPoint, gamma;
+
+    switch (name) {
+      case 'DeviceGrayCS':
+        return this.singletons.gray;
+      case 'DeviceRgbCS':
+        return this.singletons.rgb;
+      case 'DeviceCmykCS':
+        return this.singletons.cmyk;
+      case 'CalGrayCS':
+        whitePoint = IR[1].WhitePoint;
+        blackPoint = IR[1].BlackPoint;
+        gamma = IR[1].Gamma;
+        return new CalGrayCS(whitePoint, blackPoint, gamma);
+      case 'CalRGBCS':
+        whitePoint = IR[1].WhitePoint;
+        blackPoint = IR[1].BlackPoint;
+        gamma = IR[1].Gamma;
+        var matrix = IR[1].Matrix;
+        return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);
+      case 'PatternCS':
+        var basePatternCS = IR[1];
+        if (basePatternCS) {
+          basePatternCS = ColorSpace.fromIR(basePatternCS);
+        }
+        return new PatternCS(basePatternCS);
+      case 'IndexedCS':
+        var baseIndexedCS = IR[1];
+        var hiVal = IR[2];
+        var lookup = IR[3];
+        return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup);
+      case 'AlternateCS':
+        var numComps = IR[1];
+        var alt = IR[2];
+        var tintFnIR = IR[3];
+
+        return new AlternateCS(numComps, ColorSpace.fromIR(alt),
+                                PDFFunction.fromIR(tintFnIR));
+      case 'LabCS':
+        whitePoint = IR[1].WhitePoint;
+        blackPoint = IR[1].BlackPoint;
+        var range = IR[1].Range;
+        return new LabCS(whitePoint, blackPoint, range);
+      default:
+        error('Unknown name ' + name);
+    }
+    return null;
+  };
+
+  ColorSpace.parseToIR = function ColorSpace_parseToIR(cs, xref, res) {
+    if (isName(cs)) {
+      var colorSpaces = res.get('ColorSpace');
+      if (isDict(colorSpaces)) {
+        var refcs = colorSpaces.get(cs.name);
+        if (refcs) {
+          cs = refcs;
+        }
+      }
+    }
+
+    cs = xref.fetchIfRef(cs);
+    var mode;
+
+    if (isName(cs)) {
+      mode = cs.name;
+      this.mode = mode;
+
+      switch (mode) {
+        case 'DeviceGray':
+        case 'G':
+          return 'DeviceGrayCS';
+        case 'DeviceRGB':
+        case 'RGB':
+          return 'DeviceRgbCS';
+        case 'DeviceCMYK':
+        case 'CMYK':
+          return 'DeviceCmykCS';
+        case 'Pattern':
+          return ['PatternCS', null];
+        default:
+          error('unrecognized colorspace ' + mode);
+      }
+    } else if (isArray(cs)) {
+      mode = cs[0].name;
+      this.mode = mode;
+      var numComps, params;
+
+      switch (mode) {
+        case 'DeviceGray':
+        case 'G':
+          return 'DeviceGrayCS';
+        case 'DeviceRGB':
+        case 'RGB':
+          return 'DeviceRgbCS';
+        case 'DeviceCMYK':
+        case 'CMYK':
+          return 'DeviceCmykCS';
+        case 'CalGray':
+          params = xref.fetchIfRef(cs[1]).getAll();
+          return ['CalGrayCS', params];
+        case 'CalRGB':
+          params = xref.fetchIfRef(cs[1]).getAll();
+          return ['CalRGBCS', params];
+        case 'ICCBased':
+          var stream = xref.fetchIfRef(cs[1]);
+          var dict = stream.dict;
+          numComps = dict.get('N');
+          if (numComps === 1) {
+            return 'DeviceGrayCS';
+          } else if (numComps === 3) {
+            return 'DeviceRgbCS';
+          } else if (numComps === 4) {
+            return 'DeviceCmykCS';
+          }
+          break;
+        case 'Pattern':
+          var basePatternCS = cs[1];
+          if (basePatternCS) {
+            basePatternCS = ColorSpace.parseToIR(basePatternCS, xref, res);
+          }
+          return ['PatternCS', basePatternCS];
+        case 'Indexed':
+        case 'I':
+          var baseIndexedCS = ColorSpace.parseToIR(cs[1], xref, res);
+          var hiVal = cs[2] + 1;
+          var lookup = xref.fetchIfRef(cs[3]);
+          if (isStream(lookup)) {
+            lookup = lookup.getBytes();
+          }
+          return ['IndexedCS', baseIndexedCS, hiVal, lookup];
+        case 'Separation':
+        case 'DeviceN':
+          var name = cs[1];
+          numComps = 1;
+          if (isName(name)) {
+            numComps = 1;
+          } else if (isArray(name)) {
+            numComps = name.length;
+          }
+          var alt = ColorSpace.parseToIR(cs[2], xref, res);
+          var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3]));
+          return ['AlternateCS', numComps, alt, tintFnIR];
+        case 'Lab':
+          params = cs[1].getAll();
+          return ['LabCS', params];
+        default:
+          error('unimplemented color space object "' + mode + '"');
+      }
+    } else {
+      error('unrecognized color space object: "' + cs + '"');
+    }
+    return null;
+  };
+  /**
+   * Checks if a decode map matches the default decode map for a color space.
+   * This handles the general decode maps where there are two values per
+   * component. e.g. [0, 1, 0, 1, 0, 1] for a RGB color.
+   * This does not handle Lab, Indexed, or Pattern decode maps since they are
+   * slightly different.
+   * @param {Array} decode Decode map (usually from an image).
+   * @param {Number} n Number of components the color space has.
+   */
+  ColorSpace.isDefaultDecode = function ColorSpace_isDefaultDecode(decode, n) {
+    if (!decode) {
+      return true;
+    }
+
+    if (n * 2 !== decode.length) {
+      warn('The decode map is not the correct length');
+      return true;
+    }
+    for (var i = 0, ii = decode.length; i < ii; i += 2) {
+      if (decode[i] !== 0 || decode[i + 1] !== 1) {
+        return false;
+      }
+    }
+    return true;
+  };
+
+  ColorSpace.singletons = {
+    get gray() {
+      return shadow(this, 'gray', new DeviceGrayCS());
+    },
+    get rgb() {
+      return shadow(this, 'rgb', new DeviceRgbCS());
+    },
+    get cmyk() {
+      return shadow(this, 'cmyk', new DeviceCmykCS());
+    }
+  };
+
+  return ColorSpace;
+})();
+
+/**
+ * Alternate color space handles both Separation and DeviceN color spaces.  A
+ * Separation color space is actually just a DeviceN with one color component.
+ * Both color spaces use a tinting function to convert colors to a base color
+ * space.
+ */
+var AlternateCS = (function AlternateCSClosure() {
+  function AlternateCS(numComps, base, tintFn) {
+    this.name = 'Alternate';
+    this.numComps = numComps;
+    this.defaultColor = new Float32Array(numComps);
+    for (var i = 0; i < numComps; ++i) {
+      this.defaultColor[i] = 1;
+    }
+    this.base = base;
+    this.tintFn = tintFn;
+    this.tmpBuf = new Float32Array(base.numComps);
+  }
+
+  AlternateCS.prototype = {
+    getRgb: ColorSpace.prototype.getRgb,
+    getRgbItem: function AlternateCS_getRgbItem(src, srcOffset,
+                                                dest, destOffset) {
+      var tmpBuf = this.tmpBuf;
+      this.tintFn(src, srcOffset, tmpBuf, 0);
+      this.base.getRgbItem(tmpBuf, 0, dest, destOffset);
+    },
+    getRgbBuffer: function AlternateCS_getRgbBuffer(src, srcOffset, count,
+                                                    dest, destOffset, bits,
+                                                    alpha01) {
+      var tintFn = this.tintFn;
+      var base = this.base;
+      var scale = 1 / ((1 << bits) - 1);
+      var baseNumComps = base.numComps;
+      var usesZeroToOneRange = base.usesZeroToOneRange;
+      var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) &&
+                          alpha01 === 0;
+      var pos = isPassthrough ? destOffset : 0;
+      var baseBuf = isPassthrough ? dest : new Uint8Array(baseNumComps * count);
+      var numComps = this.numComps;
+
+      var scaled = new Float32Array(numComps);
+      var tinted = new Float32Array(baseNumComps);
+      var i, j;
+      if (usesZeroToOneRange) {
+        for (i = 0; i < count; i++) {
+          for (j = 0; j < numComps; j++) {
+            scaled[j] = src[srcOffset++] * scale;
+          }
+          tintFn(scaled, 0, tinted, 0);
+          for (j = 0; j < baseNumComps; j++) {
+            baseBuf[pos++] = tinted[j] * 255;
+          }
+        }
+      } else {
+        for (i = 0; i < count; i++) {
+          for (j = 0; j < numComps; j++) {
+            scaled[j] = src[srcOffset++] * scale;
+          }
+          tintFn(scaled, 0, tinted, 0);
+          base.getRgbItem(tinted, 0, baseBuf, pos);
+          pos += baseNumComps;
+        }
+      }
+      if (!isPassthrough) {
+        base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);
+      }
+    },
+    getOutputLength: function AlternateCS_getOutputLength(inputLength,
+                                                          alpha01) {
+      return this.base.getOutputLength(inputLength *
+                                       this.base.numComps / this.numComps,
+                                       alpha01);
+    },
+    isPassthrough: ColorSpace.prototype.isPassthrough,
+    fillRgb: ColorSpace.prototype.fillRgb,
+    isDefaultDecode: function AlternateCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    },
+    usesZeroToOneRange: true
+  };
+
+  return AlternateCS;
+})();
+
+var PatternCS = (function PatternCSClosure() {
+  function PatternCS(baseCS) {
+    this.name = 'Pattern';
+    this.base = baseCS;
+  }
+  PatternCS.prototype = {};
+
+  return PatternCS;
+})();
+
+var IndexedCS = (function IndexedCSClosure() {
+  function IndexedCS(base, highVal, lookup) {
+    this.name = 'Indexed';
+    this.numComps = 1;
+    this.defaultColor = new Uint8Array([0]);
+    this.base = base;
+    this.highVal = highVal;
+
+    var baseNumComps = base.numComps;
+    var length = baseNumComps * highVal;
+    var lookupArray;
+
+    if (isStream(lookup)) {
+      lookupArray = new Uint8Array(length);
+      var bytes = lookup.getBytes(length);
+      lookupArray.set(bytes);
+    } else if (isString(lookup)) {
+      lookupArray = new Uint8Array(length);
+      for (var i = 0; i < length; ++i) {
+        lookupArray[i] = lookup.charCodeAt(i);
+      }
+    } else if (lookup instanceof Uint8Array || lookup instanceof Array) {
+      lookupArray = lookup;
+    } else {
+      error('Unrecognized lookup table: ' + lookup);
+    }
+    this.lookup = lookupArray;
+  }
+
+  IndexedCS.prototype = {
+    getRgb: ColorSpace.prototype.getRgb,
+    getRgbItem: function IndexedCS_getRgbItem(src, srcOffset,
+                                              dest, destOffset) {
+      var numComps = this.base.numComps;
+      var start = src[srcOffset] * numComps;
+      this.base.getRgbItem(this.lookup, start, dest, destOffset);
+    },
+    getRgbBuffer: function IndexedCS_getRgbBuffer(src, srcOffset, count,
+                                                  dest, destOffset, bits,
+                                                  alpha01) {
+      var base = this.base;
+      var numComps = base.numComps;
+      var outputDelta = base.getOutputLength(numComps, alpha01);
+      var lookup = this.lookup;
+
+      for (var i = 0; i < count; ++i) {
+        var lookupPos = src[srcOffset++] * numComps;
+        base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);
+        destOffset += outputDelta;
+      }
+    },
+    getOutputLength: function IndexedCS_getOutputLength(inputLength, alpha01) {
+      return this.base.getOutputLength(inputLength * this.base.numComps,
+                                       alpha01);
+    },
+    isPassthrough: ColorSpace.prototype.isPassthrough,
+    fillRgb: ColorSpace.prototype.fillRgb,
+    isDefaultDecode: function IndexedCS_isDefaultDecode(decodeMap) {
+      // indexed color maps shouldn't be changed
+      return true;
+    },
+    usesZeroToOneRange: true
+  };
+  return IndexedCS;
+})();
+
+var DeviceGrayCS = (function DeviceGrayCSClosure() {
+  function DeviceGrayCS() {
+    this.name = 'DeviceGray';
+    this.numComps = 1;
+    this.defaultColor = new Float32Array([0]);
+  }
+
+  DeviceGrayCS.prototype = {
+    getRgb: ColorSpace.prototype.getRgb,
+    getRgbItem: function DeviceGrayCS_getRgbItem(src, srcOffset,
+                                                 dest, destOffset) {
+      var c = (src[srcOffset] * 255) | 0;
+      c = c < 0 ? 0 : c > 255 ? 255 : c;
+      dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;
+    },
+    getRgbBuffer: function DeviceGrayCS_getRgbBuffer(src, srcOffset, count,
+                                                     dest, destOffset, bits,
+                                                     alpha01) {
+      var scale = 255 / ((1 << bits) - 1);
+      var j = srcOffset, q = destOffset;
+      for (var i = 0; i < count; ++i) {
+        var c = (scale * src[j++]) | 0;
+        dest[q++] = c;
+        dest[q++] = c;
+        dest[q++] = c;
+        q += alpha01;
+      }
+    },
+    getOutputLength: function DeviceGrayCS_getOutputLength(inputLength,
+                                                           alpha01) {
+      return inputLength * (3 + alpha01);
+    },
+    isPassthrough: ColorSpace.prototype.isPassthrough,
+    fillRgb: ColorSpace.prototype.fillRgb,
+    isDefaultDecode: function DeviceGrayCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    },
+    usesZeroToOneRange: true
+  };
+  return DeviceGrayCS;
+})();
+
+var DeviceRgbCS = (function DeviceRgbCSClosure() {
+  function DeviceRgbCS() {
+    this.name = 'DeviceRGB';
+    this.numComps = 3;
+    this.defaultColor = new Float32Array([0, 0, 0]);
+  }
+  DeviceRgbCS.prototype = {
+    getRgb: ColorSpace.prototype.getRgb,
+    getRgbItem: function DeviceRgbCS_getRgbItem(src, srcOffset,
+                                                dest, destOffset) {
+      var r = (src[srcOffset] * 255) | 0;
+      var g = (src[srcOffset + 1] * 255) | 0;
+      var b = (src[srcOffset + 2] * 255) | 0;
+      dest[destOffset] = r < 0 ? 0 : r > 255 ? 255 : r;
+      dest[destOffset + 1] = g < 0 ? 0 : g > 255 ? 255 : g;
+      dest[destOffset + 2] = b < 0 ? 0 : b > 255 ? 255 : b;
+    },
+    getRgbBuffer: function DeviceRgbCS_getRgbBuffer(src, srcOffset, count,
+                                                    dest, destOffset, bits,
+                                                    alpha01) {
+      if (bits === 8 && alpha01 === 0) {
+        dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);
+        return;
+      }
+      var scale = 255 / ((1 << bits) - 1);
+      var j = srcOffset, q = destOffset;
+      for (var i = 0; i < count; ++i) {
+        dest[q++] = (scale * src[j++]) | 0;
+        dest[q++] = (scale * src[j++]) | 0;
+        dest[q++] = (scale * src[j++]) | 0;
+        q += alpha01;
+      }
+    },
+    getOutputLength: function DeviceRgbCS_getOutputLength(inputLength,
+                                                          alpha01) {
+      return (inputLength * (3 + alpha01) / 3) | 0;
+    },
+    isPassthrough: function DeviceRgbCS_isPassthrough(bits) {
+      return bits === 8;
+    },
+    fillRgb: ColorSpace.prototype.fillRgb,
+    isDefaultDecode: function DeviceRgbCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    },
+    usesZeroToOneRange: true
+  };
+  return DeviceRgbCS;
+})();
+
+var DeviceCmykCS = (function DeviceCmykCSClosure() {
+  // The coefficients below was found using numerical analysis: the method of
+  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,
+  // where color_value is the tabular value from the table of sampled RGB colors
+  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding
+  // CMYK color conversion using the estimation below:
+  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255
+  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {
+    var c = src[srcOffset + 0] * srcScale;
+    var m = src[srcOffset + 1] * srcScale;
+    var y = src[srcOffset + 2] * srcScale;
+    var k = src[srcOffset + 3] * srcScale;
+
+    var r =
+      (c * (-4.387332384609988 * c + 54.48615194189176 * m +
+            18.82290502165302 * y + 212.25662451639585 * k +
+            -285.2331026137004) +
+       m * (1.7149763477362134 * m - 5.6096736904047315 * y +
+            -17.873870861415444 * k - 5.497006427196366) +
+       y * (-2.5217340131683033 * y - 21.248923337353073 * k +
+            17.5119270841813) +
+       k * (-21.86122147463605 * k - 189.48180835922747) + 255) | 0;
+    var g =
+      (c * (8.841041422036149 * c + 60.118027045597366 * m +
+            6.871425592049007 * y + 31.159100130055922 * k +
+            -79.2970844816548) +
+       m * (-15.310361306967817 * m + 17.575251261109482 * y +
+            131.35250912493976 * k - 190.9453302588951) +
+       y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +
+       k * (-20.737325471181034 * k - 187.80453709719578) + 255) | 0;
+    var b =
+      (c * (0.8842522430003296 * c + 8.078677503112928 * m +
+            30.89978309703729 * y - 0.23883238689178934 * k +
+            -14.183576799673286) +
+       m * (10.49593273432072 * m + 63.02378494754052 * y +
+            50.606957656360734 * k - 112.23884253719248) +
+       y * (0.03296041114873217 * y + 115.60384449646641 * k +
+            -193.58209356861505) +
+       k * (-22.33816807309886 * k - 180.12613974708367) + 255) | 0;
+
+    dest[destOffset] = r > 255 ? 255 : r < 0 ? 0 : r;
+    dest[destOffset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;
+    dest[destOffset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;
+  }
+
+  function DeviceCmykCS() {
+    this.name = 'DeviceCMYK';
+    this.numComps = 4;
+    this.defaultColor = new Float32Array([0, 0, 0, 1]);
+  }
+  DeviceCmykCS.prototype = {
+    getRgb: ColorSpace.prototype.getRgb,
+    getRgbItem: function DeviceCmykCS_getRgbItem(src, srcOffset,
+                                                 dest, destOffset) {
+      convertToRgb(src, srcOffset, 1, dest, destOffset);
+    },
+    getRgbBuffer: function DeviceCmykCS_getRgbBuffer(src, srcOffset, count,
+                                                     dest, destOffset, bits,
+                                                     alpha01) {
+      var scale = 1 / ((1 << bits) - 1);
+      for (var i = 0; i < count; i++) {
+        convertToRgb(src, srcOffset, scale, dest, destOffset);
+        srcOffset += 4;
+        destOffset += 3 + alpha01;
+      }
+    },
+    getOutputLength: function DeviceCmykCS_getOutputLength(inputLength,
+                                                           alpha01) {
+      return (inputLength / 4 * (3 + alpha01)) | 0;
+    },
+    isPassthrough: ColorSpace.prototype.isPassthrough,
+    fillRgb: ColorSpace.prototype.fillRgb,
+    isDefaultDecode: function DeviceCmykCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    },
+    usesZeroToOneRange: true
+  };
+
+  return DeviceCmykCS;
+})();
+
+//
+// CalGrayCS: Based on "PDF Reference, Sixth Ed", p.245
+//
+var CalGrayCS = (function CalGrayCSClosure() {
+  function CalGrayCS(whitePoint, blackPoint, gamma) {
+    this.name = 'CalGray';
+    this.numComps = 1;
+    this.defaultColor = new Float32Array([0]);
+
+    if (!whitePoint) {
+      error('WhitePoint missing - required for color space CalGray');
+    }
+    blackPoint = blackPoint || [0, 0, 0];
+    gamma = gamma || 1;
+
+    // Translate arguments to spec variables.
+    this.XW = whitePoint[0];
+    this.YW = whitePoint[1];
+    this.ZW = whitePoint[2];
+
+    this.XB = blackPoint[0];
+    this.YB = blackPoint[1];
+    this.ZB = blackPoint[2];
+
+    this.G = gamma;
+
+    // Validate variables as per spec.
+    if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {
+      error('Invalid WhitePoint components for ' + this.name +
+            ', no fallback available');
+    }
+
+    if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
+      info('Invalid BlackPoint for ' + this.name + ', falling back to default');
+      this.XB = this.YB = this.ZB = 0;
+    }
+
+    if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {
+      warn(this.name + ', BlackPoint: XB: ' + this.XB + ', YB: ' + this.YB +
+           ', ZB: ' + this.ZB + ', only default values are supported.');
+    }
+
+    if (this.G < 1) {
+      info('Invalid Gamma: ' + this.G + ' for ' + this.name +
+           ', falling back to default');
+      this.G = 1;
+    }
+  }
+
+  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
+    // A represents a gray component of a calibrated gray space.
+    // A <---> AG in the spec
+    var A = src[srcOffset] * scale;
+    var AG = Math.pow(A, cs.G);
+
+    // Computes L as per spec. ( = cs.YW * AG )
+    // Except if other than default BlackPoint values are used.
+    var L = cs.YW * AG;
+    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.
+    // Convert values to rgb range [0, 255].
+    var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0) | 0;
+    dest[destOffset] = val;
+    dest[destOffset + 1] = val;
+    dest[destOffset + 2] = val;
+  }
+
+  CalGrayCS.prototype = {
+    getRgb: ColorSpace.prototype.getRgb,
+    getRgbItem: function CalGrayCS_getRgbItem(src, srcOffset,
+                                              dest, destOffset) {
+      convertToRgb(this, src, srcOffset, dest, destOffset, 1);
+    },
+    getRgbBuffer: function CalGrayCS_getRgbBuffer(src, srcOffset, count,
+                                                  dest, destOffset, bits,
+                                                  alpha01) {
+      var scale = 1 / ((1 << bits) - 1);
+
+      for (var i = 0; i < count; ++i) {
+        convertToRgb(this, src, srcOffset, dest, destOffset, scale);
+        srcOffset += 1;
+        destOffset += 3 + alpha01;
+      }
+    },
+    getOutputLength: function CalGrayCS_getOutputLength(inputLength, alpha01) {
+      return inputLength * (3 + alpha01);
+    },
+    isPassthrough: ColorSpace.prototype.isPassthrough,
+    fillRgb: ColorSpace.prototype.fillRgb,
+    isDefaultDecode: function CalGrayCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    },
+    usesZeroToOneRange: true
+  };
+  return CalGrayCS;
+})();
+
+//
+// CalRGBCS: Based on "PDF Reference, Sixth Ed", p.247
+//
+var CalRGBCS = (function CalRGBCSClosure() {
+
+  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these
+  // matrices.
+  var BRADFORD_SCALE_MATRIX = new Float32Array([
+    0.8951, 0.2664, -0.1614,
+    -0.7502, 1.7135, 0.0367,
+    0.0389, -0.0685, 1.0296]);
+
+  var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([
+    0.9869929, -0.1470543, 0.1599627,
+    0.4323053, 0.5183603, 0.0492912,
+    -0.0085287, 0.0400428, 0.9684867]);
+
+  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.
+  var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([
+    3.2404542, -1.5371385, -0.4985314,
+    -0.9692660, 1.8760108, 0.0415560,
+    0.0556434, -0.2040259, 1.0572252]);
+
+  var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);
+
+  var tempNormalizeMatrix = new Float32Array(3);
+  var tempConvertMatrix1 = new Float32Array(3);
+  var tempConvertMatrix2 = new Float32Array(3);
+
+  var DECODE_L_CONSTANT = Math.pow(((8 + 16) / 116), 3) / 8.0;
+
+  function CalRGBCS(whitePoint, blackPoint, gamma, matrix) {
+    this.name = 'CalRGB';
+    this.numComps = 3;
+    this.defaultColor = new Float32Array(3);
+
+    if (!whitePoint) {
+      error('WhitePoint missing - required for color space CalRGB');
+    }
+    blackPoint = blackPoint || new Float32Array(3);
+    gamma = gamma || new Float32Array([1, 1, 1]);
+    matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
+
+    // Translate arguments to spec variables.
+    var XW = whitePoint[0];
+    var YW = whitePoint[1];
+    var ZW = whitePoint[2];
+    this.whitePoint = whitePoint;
+
+    var XB = blackPoint[0];
+    var YB = blackPoint[1];
+    var ZB = blackPoint[2];
+    this.blackPoint = blackPoint;
+
+    this.GR = gamma[0];
+    this.GG = gamma[1];
+    this.GB = gamma[2];
+
+    this.MXA = matrix[0];
+    this.MYA = matrix[1];
+    this.MZA = matrix[2];
+    this.MXB = matrix[3];
+    this.MYB = matrix[4];
+    this.MZB = matrix[5];
+    this.MXC = matrix[6];
+    this.MYC = matrix[7];
+    this.MZC = matrix[8];
+
+    // Validate variables as per spec.
+    if (XW < 0 || ZW < 0 || YW !== 1) {
+      error('Invalid WhitePoint components for ' + this.name +
+            ', no fallback available');
+    }
+
+    if (XB < 0 || YB < 0 || ZB < 0) {
+      info('Invalid BlackPoint for ' + this.name + ' [' + XB + ', ' + YB +
+           ', ' + ZB + '], falling back to default');
+      this.blackPoint = new Float32Array(3);
+    }
+
+    if (this.GR < 0 || this.GG < 0 || this.GB < 0) {
+      info('Invalid Gamma [' + this.GR + ', ' + this.GG + ', ' + this.GB +
+           '] for ' + this.name + ', falling back to default');
+      this.GR = this.GG = this.GB = 1;
+    }
+
+    if (this.MXA < 0 || this.MYA < 0 || this.MZA < 0 ||
+        this.MXB < 0 || this.MYB < 0 || this.MZB < 0 ||
+        this.MXC < 0 || this.MYC < 0 || this.MZC < 0) {
+      info('Invalid Matrix for ' + this.name + ' [' +
+           this.MXA + ', ' + this.MYA + ', ' + this.MZA +
+           this.MXB + ', ' + this.MYB + ', ' + this.MZB +
+           this.MXC + ', ' + this.MYC + ', ' + this.MZC +
+           '], falling back to default');
+      this.MXA = this.MYB = this.MZC = 1;
+      this.MXB = this.MYA = this.MZA = this.MXC = this.MYC = this.MZB = 0;
+    }
+  }
+
+  function matrixProduct(a, b, result) {
+      result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+      result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];
+      result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];
+  }
+
+  function convertToFlat(sourceWhitePoint, LMS, result) {
+      result[0] = LMS[0] * 1 / sourceWhitePoint[0];
+      result[1] = LMS[1] * 1 / sourceWhitePoint[1];
+      result[2] = LMS[2] * 1 / sourceWhitePoint[2];
+  }
+
+  function convertToD65(sourceWhitePoint, LMS, result) {
+    var D65X = 0.95047;
+    var D65Y = 1;
+    var D65Z = 1.08883;
+
+    result[0] = LMS[0] * D65X / sourceWhitePoint[0];
+    result[1] = LMS[1] * D65Y / sourceWhitePoint[1];
+    result[2] = LMS[2] * D65Z / sourceWhitePoint[2];
+  }
+
+  function sRGBTransferFunction(color) {
+    // See http://en.wikipedia.org/wiki/SRGB.
+    if (color <= 0.0031308){
+      return adjustToRange(0, 1, 12.92 * color);
+    }
+
+    return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055);
+  }
+
+  function adjustToRange(min, max, value) {
+    return Math.max(min, Math.min(max, value));
+  }
+
+  function decodeL(L) {
+    if (L < 0) {
+      return -decodeL(-L);
+    }
+
+    if (L > 8.0) {
+      return Math.pow(((L + 16) / 116), 3);
+    }
+
+    return L * DECODE_L_CONSTANT;
+  }
+
+  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {
+
+    // In case the blackPoint is already the default blackPoint then there is
+    // no need to do compensation.
+    if (sourceBlackPoint[0] === 0 &&
+        sourceBlackPoint[1] === 0 &&
+        sourceBlackPoint[2] === 0) {
+      result[0] = XYZ_Flat[0];
+      result[1] = XYZ_Flat[1];
+      result[2] = XYZ_Flat[2];
+      return;
+    }
+
+    // For the blackPoint calculation details, please see
+    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/
+    // AdobeBPC.pdf.
+    // The destination blackPoint is the default blackPoint [0, 0, 0].
+    var zeroDecodeL = decodeL(0);
+
+    var X_DST = zeroDecodeL;
+    var X_SRC = decodeL(sourceBlackPoint[0]);
+
+    var Y_DST = zeroDecodeL;
+    var Y_SRC = decodeL(sourceBlackPoint[1]);
+
+    var Z_DST = zeroDecodeL;
+    var Z_SRC = decodeL(sourceBlackPoint[2]);
+
+    var X_Scale = (1 - X_DST) / (1 - X_SRC);
+    var X_Offset = 1 - X_Scale;
+
+    var Y_Scale = (1 - Y_DST) / (1 - Y_SRC);
+    var Y_Offset = 1 - Y_Scale;
+
+    var Z_Scale = (1 - Z_DST) / (1 - Z_SRC);
+    var Z_Offset = 1 - Z_Scale;
+
+    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;
+    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;
+    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;
+  }
+
+  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {
+
+    // In case the whitePoint is already flat then there is no need to do
+    // normalization.
+    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {
+      result[0] = XYZ_In[0];
+      result[1] = XYZ_In[1];
+      result[2] = XYZ_In[2];
+      return;
+    }
+
+    var LMS = result;
+    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
+
+    var LMS_Flat = tempNormalizeMatrix;
+    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);
+
+    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);
+  }
+
+  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {
+
+    var LMS = result;
+    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
+
+    var LMS_D65 = tempNormalizeMatrix;
+    convertToD65(sourceWhitePoint, LMS, LMS_D65);
+
+    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);
+  }
+
+  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
+    // A, B and C represent a red, green and blue components of a calibrated
+    // rgb space.
+    var A = adjustToRange(0, 1, src[srcOffset] * scale);
+    var B = adjustToRange(0, 1, src[srcOffset + 1] * scale);
+    var C = adjustToRange(0, 1, src[srcOffset + 2] * scale);
+
+    // A <---> AGR in the spec
+    // B <---> BGG in the spec
+    // C <---> CGB in the spec
+    var AGR = Math.pow(A, cs.GR);
+    var BGG = Math.pow(B, cs.GG);
+    var CGB = Math.pow(C, cs.GB);
+
+    // Computes intermediate variables L, M, N as per spec.
+    // To decode X, Y, Z values map L, M, N directly to them.
+    var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;
+    var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;
+    var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;
+
+    // The following calculations are based on this document:
+    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/
+    // AdobeBPC.pdf.
+    var XYZ = tempConvertMatrix1;
+    XYZ[0] = X;
+    XYZ[1] = Y;
+    XYZ[2] = Z;
+    var XYZ_Flat = tempConvertMatrix2;
+
+    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);
+
+    var XYZ_Black = tempConvertMatrix1;
+    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);
+
+    var XYZ_D65 = tempConvertMatrix2;
+    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);
+
+    var SRGB = tempConvertMatrix1;
+    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);
+
+    var sR = sRGBTransferFunction(SRGB[0]);
+    var sG = sRGBTransferFunction(SRGB[1]);
+    var sB = sRGBTransferFunction(SRGB[2]);
+
+    // Convert the values to rgb range [0, 255].
+    dest[destOffset] = Math.round(sR * 255);
+    dest[destOffset + 1] = Math.round(sG * 255);
+    dest[destOffset + 2] = Math.round(sB * 255);
+  }
+
+  CalRGBCS.prototype = {
+    getRgb: function CalRGBCS_getRgb(src, srcOffset) {
+      var rgb = new Uint8Array(3);
+      this.getRgbItem(src, srcOffset, rgb, 0);
+      return rgb;
+    },
+    getRgbItem: function CalRGBCS_getRgbItem(src, srcOffset,
+                                             dest, destOffset) {
+      convertToRgb(this, src, srcOffset, dest, destOffset, 1);
+    },
+    getRgbBuffer: function CalRGBCS_getRgbBuffer(src, srcOffset, count,
+                                                 dest, destOffset, bits,
+                                                 alpha01) {
+      var scale = 1 / ((1 << bits) - 1);
+
+      for (var i = 0; i < count; ++i) {
+        convertToRgb(this, src, srcOffset, dest, destOffset, scale);
+        srcOffset += 3;
+        destOffset += 3 + alpha01;
+      }
+    },
+    getOutputLength: function CalRGBCS_getOutputLength(inputLength, alpha01) {
+      return (inputLength * (3 + alpha01) / 3) | 0;
+    },
+    isPassthrough: ColorSpace.prototype.isPassthrough,
+    fillRgb: ColorSpace.prototype.fillRgb,
+    isDefaultDecode: function CalRGBCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    },
+    usesZeroToOneRange: true
+  };
+  return CalRGBCS;
+})();
+
+//
+// LabCS: Based on "PDF Reference, Sixth Ed", p.250
+//
+var LabCS = (function LabCSClosure() {
+  function LabCS(whitePoint, blackPoint, range) {
+    this.name = 'Lab';
+    this.numComps = 3;
+    this.defaultColor = new Float32Array([0, 0, 0]);
+
+    if (!whitePoint) {
+      error('WhitePoint missing - required for color space Lab');
+    }
+    blackPoint = blackPoint || [0, 0, 0];
+    range = range || [-100, 100, -100, 100];
+
+    // Translate args to spec variables
+    this.XW = whitePoint[0];
+    this.YW = whitePoint[1];
+    this.ZW = whitePoint[2];
+    this.amin = range[0];
+    this.amax = range[1];
+    this.bmin = range[2];
+    this.bmax = range[3];
+
+    // These are here just for completeness - the spec doesn't offer any
+    // formulas that use BlackPoint in Lab
+    this.XB = blackPoint[0];
+    this.YB = blackPoint[1];
+    this.ZB = blackPoint[2];
+
+    // Validate vars as per spec
+    if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {
+      error('Invalid WhitePoint components, no fallback available');
+    }
+
+    if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
+      info('Invalid BlackPoint, falling back to default');
+      this.XB = this.YB = this.ZB = 0;
+    }
+
+    if (this.amin > this.amax || this.bmin > this.bmax) {
+      info('Invalid Range, falling back to defaults');
+      this.amin = -100;
+      this.amax = 100;
+      this.bmin = -100;
+      this.bmax = 100;
+    }
+  }
+
+  // Function g(x) from spec
+  function fn_g(x) {
+    if (x >= 6 / 29) {
+      return x * x * x;
+    } else {
+      return (108 / 841) * (x - 4 / 29);
+    }
+  }
+
+  function decode(value, high1, low2, high2) {
+    return low2 + (value) * (high2 - low2) / (high1);
+  }
+
+  // If decoding is needed maxVal should be 2^bits per component - 1.
+  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {
+    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]
+    // not the usual [0, 1]. If a command like setFillColor is used the src
+    // values will already be within the correct range. However, if we are
+    // converting an image we have to map the values to the correct range given
+    // above.
+    // Ls,as,bs <---> L*,a*,b* in the spec
+    var Ls = src[srcOffset];
+    var as = src[srcOffset + 1];
+    var bs = src[srcOffset + 2];
+    if (maxVal !== false) {
+      Ls = decode(Ls, maxVal, 0, 100);
+      as = decode(as, maxVal, cs.amin, cs.amax);
+      bs = decode(bs, maxVal, cs.bmin, cs.bmax);
+    }
+
+    // Adjust limits of 'as' and 'bs'
+    as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as;
+    bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs;
+
+    // Computes intermediate variables X,Y,Z as per spec
+    var M = (Ls + 16) / 116;
+    var L = M + (as / 500);
+    var N = M - (bs / 200);
+
+    var X = cs.XW * fn_g(L);
+    var Y = cs.YW * fn_g(M);
+    var Z = cs.ZW * fn_g(N);
+
+    var r, g, b;
+    // Using different conversions for D50 and D65 white points,
+    // per http://www.color.org/srgb.pdf
+    if (cs.ZW < 1) {
+      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)
+      r = X * 3.1339 + Y * -1.6170 + Z * -0.4906;
+      g = X * -0.9785 + Y * 1.9160 + Z * 0.0333;
+      b = X * 0.0720 + Y * -0.2290 + Z * 1.4057;
+    } else {
+      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)
+      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;
+      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;
+      b = X * 0.0557 + Y * -0.2040 + Z * 1.0570;
+    }
+    // clamp color values to [0,1] range then convert to [0,255] range.
+    dest[destOffset] = r <= 0 ? 0 : r >= 1 ? 255 : Math.sqrt(r) * 255 | 0;
+    dest[destOffset + 1] = g <= 0 ? 0 : g >= 1 ? 255 : Math.sqrt(g) * 255 | 0;
+    dest[destOffset + 2] = b <= 0 ? 0 : b >= 1 ? 255 : Math.sqrt(b) * 255 | 0;
+  }
+
+  LabCS.prototype = {
+    getRgb: ColorSpace.prototype.getRgb,
+    getRgbItem: function LabCS_getRgbItem(src, srcOffset, dest, destOffset) {
+      convertToRgb(this, src, srcOffset, false, dest, destOffset);
+    },
+    getRgbBuffer: function LabCS_getRgbBuffer(src, srcOffset, count,
+                                              dest, destOffset, bits,
+                                              alpha01) {
+      var maxVal = (1 << bits) - 1;
+      for (var i = 0; i < count; i++) {
+        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);
+        srcOffset += 3;
+        destOffset += 3 + alpha01;
+      }
+    },
+    getOutputLength: function LabCS_getOutputLength(inputLength, alpha01) {
+      return (inputLength * (3 + alpha01) / 3) | 0;
+    },
+    isPassthrough: ColorSpace.prototype.isPassthrough,
+    fillRgb: ColorSpace.prototype.fillRgb,
+    isDefaultDecode: function LabCS_isDefaultDecode(decodeMap) {
+      // XXX: Decoding is handled with the lab conversion because of the strange
+      // ranges that are used.
+      return true;
+    },
+    usesZeroToOneRange: false
+  };
+  return LabCS;
+})();
+
+
+var ARCFourCipher = (function ARCFourCipherClosure() {
+  function ARCFourCipher(key) {
+    this.a = 0;
+    this.b = 0;
+    var s = new Uint8Array(256);
+    var i, j = 0, tmp, keyLength = key.length;
+    for (i = 0; i < 256; ++i) {
+      s[i] = i;
+    }
+    for (i = 0; i < 256; ++i) {
+      tmp = s[i];
+      j = (j + tmp + key[i % keyLength]) & 0xFF;
+      s[i] = s[j];
+      s[j] = tmp;
+    }
+    this.s = s;
+  }
+
+  ARCFourCipher.prototype = {
+    encryptBlock: function ARCFourCipher_encryptBlock(data) {
+      var i, n = data.length, tmp, tmp2;
+      var a = this.a, b = this.b, s = this.s;
+      var output = new Uint8Array(n);
+      for (i = 0; i < n; ++i) {
+        a = (a + 1) & 0xFF;
+        tmp = s[a];
+        b = (b + tmp) & 0xFF;
+        tmp2 = s[b];
+        s[a] = tmp2;
+        s[b] = tmp;
+        output[i] = data[i] ^ s[(tmp + tmp2) & 0xFF];
+      }
+      this.a = a;
+      this.b = b;
+      return output;
+    }
+  };
+  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;
+
+  return ARCFourCipher;
+})();
+
+var calculateMD5 = (function calculateMD5Closure() {
+  var r = new Uint8Array([
+    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
+    5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,
+    4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
+    6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);
+
+  var k = new Int32Array([
+    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,
+    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,
+    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,
+    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,
+    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,
+    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,
+    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,
+    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,
+    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,
+    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,
+    -145523070, -1120210379, 718787259, -343485551]);
+
+  function hash(data, offset, length) {
+    var h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878;
+    // pre-processing
+    var paddedLength = (length + 72) & ~63; // data + 9 extra bytes
+    var padded = new Uint8Array(paddedLength);
+    var i, j, n;
+    for (i = 0; i < length; ++i) {
+      padded[i] = data[offset++];
+    }
+    padded[i++] = 0x80;
+    n = paddedLength - 8;
+    while (i < n) {
+      padded[i++] = 0;
+    }
+    padded[i++] = (length << 3) & 0xFF;
+    padded[i++] = (length >> 5) & 0xFF;
+    padded[i++] = (length >> 13) & 0xFF;
+    padded[i++] = (length >> 21) & 0xFF;
+    padded[i++] = (length >>> 29) & 0xFF;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    var w = new Int32Array(16);
+    for (i = 0; i < paddedLength;) {
+      for (j = 0; j < 16; ++j, i += 4) {
+        w[j] = (padded[i] | (padded[i + 1] << 8) |
+               (padded[i + 2] << 16) | (padded[i + 3] << 24));
+      }
+      var a = h0, b = h1, c = h2, d = h3, f, g;
+      for (j = 0; j < 64; ++j) {
+        if (j < 16) {
+          f = (b & c) | ((~b) & d);
+          g = j;
+        } else if (j < 32) {
+          f = (d & b) | ((~d) & c);
+          g = (5 * j + 1) & 15;
+        } else if (j < 48) {
+          f = b ^ c ^ d;
+          g = (3 * j + 5) & 15;
+        } else {
+          f = c ^ (b | (~d));
+          g = (7 * j) & 15;
+        }
+        var tmp = d, rotateArg = (a + f + k[j] + w[g]) | 0, rotate = r[j];
+        d = c;
+        c = b;
+        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;
+        a = tmp;
+      }
+      h0 = (h0 + a) | 0;
+      h1 = (h1 + b) | 0;
+      h2 = (h2 + c) | 0;
+      h3 = (h3 + d) | 0;
+    }
+    return new Uint8Array([
+      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,
+      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,
+      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,
+      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF
+    ]);
+  }
+
+  return hash;
+})();
+var Word64 = (function Word64Closure() {
+  function Word64(highInteger, lowInteger) {
+    this.high = highInteger | 0;
+    this.low = lowInteger | 0;
+  }
+  Word64.prototype = {
+    and: function Word64_and(word) {
+      this.high &= word.high;
+      this.low &= word.low;
+    },
+    xor: function Word64_xor(word) {
+     this.high ^= word.high;
+     this.low ^= word.low;
+    },
+
+    or: function Word64_or(word) {
+      this.high |= word.high;
+      this.low |= word.low;
+    },
+
+    shiftRight: function Word64_shiftRight(places) {
+      if (places >= 32) {
+        this.low = (this.high >>> (places - 32)) | 0;
+        this.high = 0;
+      } else {
+        this.low = (this.low >>> places) | (this.high << (32 - places));
+        this.high = (this.high >>> places) | 0;
+      }
+    },
+
+    shiftLeft: function Word64_shiftLeft(places) {
+      if (places >= 32) {
+        this.high = this.low << (places - 32);
+        this.low = 0;
+      } else {
+        this.high = (this.high << places) | (this.low >>> (32 - places));
+        this.low = this.low << places;
+      }
+    },
+
+    rotateRight: function Word64_rotateRight(places) {
+      var low, high;
+      if (places & 32) {
+        high = this.low;
+        low = this.high;
+      } else {
+        low = this.low;
+        high = this.high;
+      }
+      places &= 31;
+      this.low = (low >>> places) | (high << (32 - places));
+      this.high = (high >>> places) | (low << (32 - places));
+    },
+
+    not: function Word64_not() {
+      this.high = ~this.high;
+      this.low = ~this.low;
+    },
+
+    add: function Word64_add(word) {
+      var lowAdd = (this.low >>> 0) + (word.low >>> 0);
+      var highAdd = (this.high >>> 0) + (word.high >>> 0);
+      if (lowAdd > 0xFFFFFFFF) {
+        highAdd += 1;
+      }
+      this.low = lowAdd | 0;
+      this.high = highAdd | 0;
+    },
+
+    copyTo: function Word64_copyTo(bytes, offset) {
+      bytes[offset] = (this.high >>> 24) & 0xFF;
+      bytes[offset + 1] = (this.high >> 16) & 0xFF;
+      bytes[offset + 2] = (this.high >> 8) & 0xFF;
+      bytes[offset + 3] = this.high & 0xFF;
+      bytes[offset + 4] = (this.low >>> 24) & 0xFF;
+      bytes[offset + 5] = (this.low >> 16) & 0xFF;
+      bytes[offset + 6] = (this.low >> 8) & 0xFF;
+      bytes[offset + 7] = this.low & 0xFF;
+    },
+
+    assign: function Word64_assign(word) {
+      this.high = word.high;
+      this.low = word.low;
+    }
+  };
+  return Word64;
+})();
+
+var calculateSHA256 = (function calculateSHA256Closure() {
+  function rotr(x, n) {
+    return (x >>> n) | (x << 32 - n);
+  }
+
+  function ch(x, y, z) {
+    return (x & y) ^ (~x & z);
+  }
+
+  function maj(x, y, z) {
+    return (x & y) ^ (x & z) ^ (y & z);
+  }
+
+  function sigma(x) {
+    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);
+  }
+
+  function sigmaPrime(x) {
+    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);
+  }
+
+  function littleSigma(x) {
+    return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;
+  }
+
+  function littleSigmaPrime(x) {
+    return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;
+  }
+
+  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
+           0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
+           0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
+           0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
+           0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
+           0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+           0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
+           0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
+           0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
+           0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+           0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
+           0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+           0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
+           0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
+           0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
+           0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
+
+  function hash(data, offset, length) {
+    // initial hash values
+    var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372,
+        h3 = 0xa54ff53a, h4 = 0x510e527f, h5 = 0x9b05688c,
+        h6 = 0x1f83d9ab, h7 = 0x5be0cd19;
+    // pre-processing
+    var paddedLength = Math.ceil((length + 9) / 64) * 64;
+    var padded = new Uint8Array(paddedLength);
+    var i, j, n;
+    for (i = 0; i < length; ++i) {
+      padded[i] = data[offset++];
+    }
+    padded[i++] = 0x80;
+    n = paddedLength - 8;
+    while (i < n) {
+      padded[i++] = 0;
+    }
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = (length >>> 29) & 0xFF;
+    padded[i++] = (length >> 21) & 0xFF;
+    padded[i++] = (length >> 13) & 0xFF;
+    padded[i++] = (length >> 5) & 0xFF;
+    padded[i++] = (length << 3) & 0xFF;
+    var w = new Uint32Array(64);
+    // for each 512 bit block
+    for (i = 0; i < paddedLength;) {
+      for (j = 0; j < 16; ++j) {
+        w[j] = (padded[i] << 24 | (padded[i + 1] << 16) |
+               (padded[i + 2] << 8) | (padded[i + 3]));
+        i += 4;
+      }
+
+      for (j = 16; j < 64; ++j) {
+        w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] +
+               littleSigma(w[j - 15]) + w[j - 16] | 0;
+      }
+      var a = h0, b = h1, c = h2, d = h3, e = h4,
+          f = h5, g = h6, h = h7, t1, t2;
+      for (j = 0; j < 64; ++j) {
+        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];
+        t2 = sigma(a) + maj(a, b, c);
+        h = g;
+        g = f;
+        f = e;
+        e = (d + t1) | 0;
+        d = c;
+        c = b;
+        b = a;
+        a = (t1 + t2) | 0;
+      }
+      h0 = (h0 + a) | 0;
+      h1 = (h1 + b) | 0;
+      h2 = (h2 + c) | 0;
+      h3 = (h3 + d) | 0;
+      h4 = (h4 + e) | 0;
+      h5 = (h5 + f) | 0;
+      h6 = (h6 + g) | 0;
+      h7 = (h7 + h) | 0;
+    }
+    return new Uint8Array([
+      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,
+      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,
+      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,
+      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,
+      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,
+      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,
+      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,
+      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF
+    ]);
+  }
+
+  return hash;
+})();
+
+var calculateSHA512 = (function calculateSHA512Closure() {
+  function ch(result, x, y, z, tmp) {
+    result.assign(x);
+    result.and(y);
+    tmp.assign(x);
+    tmp.not();
+    tmp.and(z);
+    result.xor(tmp);
+  }
+
+  function maj(result, x, y, z, tmp) {
+    result.assign(x);
+    result.and(y);
+    tmp.assign(x);
+    tmp.and(z);
+    result.xor(tmp);
+    tmp.assign(y);
+    tmp.and(z);
+    result.xor(tmp);
+  }
+
+  function sigma(result, x, tmp) {
+    result.assign(x);
+    result.rotateRight(28);
+    tmp.assign(x);
+    tmp.rotateRight(34);
+    result.xor(tmp);
+    tmp.assign(x);
+    tmp.rotateRight(39);
+    result.xor(tmp);
+  }
+
+  function sigmaPrime(result, x, tmp) {
+    result.assign(x);
+    result.rotateRight(14);
+    tmp.assign(x);
+    tmp.rotateRight(18);
+    result.xor(tmp);
+    tmp.assign(x);
+    tmp.rotateRight(41);
+    result.xor(tmp);
+  }
+
+  function littleSigma(result, x, tmp) {
+    result.assign(x);
+    result.rotateRight(1);
+    tmp.assign(x);
+    tmp.rotateRight(8);
+    result.xor(tmp);
+    tmp.assign(x);
+    tmp.shiftRight(7);
+    result.xor(tmp);
+  }
+
+  function littleSigmaPrime(result, x, tmp) {
+    result.assign(x);
+    result.rotateRight(19);
+    tmp.assign(x);
+    tmp.rotateRight(61);
+    result.xor(tmp);
+    tmp.assign(x);
+    tmp.shiftRight(6);
+    result.xor(tmp);
+  }
+
+  var k = [
+    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),
+    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),
+    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),
+    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),
+    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),
+    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),
+    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),
+    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),
+    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),
+    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),
+    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),
+    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),
+    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),
+    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),
+    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),
+    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),
+    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),
+    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),
+    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),
+    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),
+    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),
+    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),
+    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),
+    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),
+    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),
+    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),
+    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),
+    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),
+    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),
+    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),
+    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),
+    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),
+    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),
+    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),
+    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),
+    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),
+    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),
+    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),
+    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),
+    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];
+
+  function hash(data, offset, length, mode384) {
+    mode384 = !!mode384;
+    // initial hash values
+    var h0, h1, h2, h3, h4, h5, h6, h7;
+    if (!mode384) {
+      h0 = new Word64(0x6a09e667, 0xf3bcc908);
+      h1 = new Word64(0xbb67ae85, 0x84caa73b);
+      h2 = new Word64(0x3c6ef372, 0xfe94f82b);
+      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);
+      h4 = new Word64(0x510e527f, 0xade682d1);
+      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);
+      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);
+      h7 = new Word64(0x5be0cd19, 0x137e2179);
+    }
+    else {
+      // SHA384 is exactly the same
+      // except with different starting values and a trimmed result
+      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);
+      h1 = new Word64(0x629a292a, 0x367cd507);
+      h2 = new Word64(0x9159015a, 0x3070dd17);
+      h3 = new Word64(0x152fecd8, 0xf70e5939);
+      h4 = new Word64(0x67332667, 0xffc00b31);
+      h5 = new Word64(0x8eb44a87, 0x68581511);
+      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);
+      h7 = new Word64(0x47b5481d, 0xbefa4fa4);
+    }
+
+    // pre-processing
+    var paddedLength = Math.ceil((length + 17) / 128) * 128;
+    var padded = new Uint8Array(paddedLength);
+    var i, j, n;
+    for (i = 0; i < length; ++i) {
+      padded[i] = data[offset++];
+    }
+    padded[i++] = 0x80;
+    n = paddedLength - 16;
+    while (i < n) {
+      padded[i++] = 0;
+    }
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = (length >>> 29) & 0xFF;
+    padded[i++] = (length >> 21) & 0xFF;
+    padded[i++] = (length >> 13) & 0xFF;
+    padded[i++] = (length >> 5) & 0xFF;
+    padded[i++] = (length << 3) & 0xFF;
+
+    var w = new Array(80);
+    for (i = 0; i < 80; i++) {
+      w[i] = new Word64(0, 0);
+    }
+    var a = new Word64(0, 0), b = new Word64(0, 0), c = new Word64(0, 0);
+    var d = new Word64(0, 0), e = new Word64(0, 0), f = new Word64(0, 0);
+    var g = new Word64(0, 0), h = new Word64(0, 0);
+    var t1 = new Word64(0, 0), t2 = new Word64(0, 0);
+    var tmp1 = new Word64(0, 0), tmp2 = new Word64(0, 0), tmp3;
+
+    // for each 1024 bit block
+    for (i = 0; i < paddedLength;) {
+      for (j = 0; j < 16; ++j) {
+        w[j].high = (padded[i] << 24) | (padded[i + 1] << 16) |
+                    (padded[i + 2] << 8) | (padded[i + 3]);
+        w[j].low = (padded[i + 4]) << 24 | (padded[i + 5]) << 16 |
+                   (padded[i + 6]) << 8 | (padded[i + 7]);
+        i += 8;
+      }
+      for (j = 16; j < 80; ++j) {
+        tmp3 = w[j];
+        littleSigmaPrime(tmp3, w[j - 2], tmp2);
+        tmp3.add(w[j - 7]);
+        littleSigma(tmp1, w[j - 15], tmp2);
+        tmp3.add(tmp1);
+        tmp3.add(w[j - 16]);
+      }
+
+      a.assign(h0); b.assign(h1); c.assign(h2); d.assign(h3);
+      e.assign(h4); f.assign(h5); g.assign(h6); h.assign(h7);
+      for (j = 0; j < 80; ++j) {
+        t1.assign(h);
+        sigmaPrime(tmp1, e, tmp2);
+        t1.add(tmp1);
+        ch(tmp1, e, f, g, tmp2);
+        t1.add(tmp1);
+        t1.add(k[j]);
+        t1.add(w[j]);
+
+        sigma(t2, a, tmp2);
+        maj(tmp1, a, b, c, tmp2);
+        t2.add(tmp1);
+
+        tmp3 = h;
+        h = g;
+        g = f;
+        f = e;
+        d.add(t1);
+        e = d;
+        d = c;
+        c = b;
+        b = a;
+        tmp3.assign(t1);
+        tmp3.add(t2);
+        a = tmp3;
+      }
+      h0.add(a);
+      h1.add(b);
+      h2.add(c);
+      h3.add(d);
+      h4.add(e);
+      h5.add(f);
+      h6.add(g);
+      h7.add(h);
+    }
+
+    var result;
+    if (!mode384) {
+      result = new Uint8Array(64);
+      h0.copyTo(result,0);
+      h1.copyTo(result,8);
+      h2.copyTo(result,16);
+      h3.copyTo(result,24);
+      h4.copyTo(result,32);
+      h5.copyTo(result,40);
+      h6.copyTo(result,48);
+      h7.copyTo(result,56);
+    }
+    else {
+      result = new Uint8Array(48);
+      h0.copyTo(result,0);
+      h1.copyTo(result,8);
+      h2.copyTo(result,16);
+      h3.copyTo(result,24);
+      h4.copyTo(result,32);
+      h5.copyTo(result,40);
+    }
+    return result;
+  }
+
+  return hash;
+})();
+var calculateSHA384 = (function calculateSHA384Closure() {
+  function hash(data, offset, length) {
+    return calculateSHA512(data, offset, length, true);
+  }
+
+  return hash;
+})();
+var NullCipher = (function NullCipherClosure() {
+  function NullCipher() {
+  }
+
+  NullCipher.prototype = {
+    decryptBlock: function NullCipher_decryptBlock(data) {
+      return data;
+    }
+  };
+
+  return NullCipher;
+})();
+
+var AES128Cipher = (function AES128CipherClosure() {
+  var rcon = new Uint8Array([
+    0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,
+    0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,
+    0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,
+    0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,
+    0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
+    0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,
+    0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,
+    0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,
+    0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,
+    0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,
+    0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,
+    0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,
+    0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,
+    0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,
+    0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,
+    0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,
+    0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,
+    0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,
+    0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,
+    0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,
+    0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,
+    0x74, 0xe8, 0xcb, 0x8d]);
+
+  var s = new Uint8Array([
+    0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,
+    0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
+    0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,
+    0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
+    0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,
+    0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
+    0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,
+    0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
+    0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,
+    0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
+    0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,
+    0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
+    0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,
+    0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
+    0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,
+    0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
+    0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,
+    0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
+    0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,
+    0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
+    0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,
+    0xb0, 0x54, 0xbb, 0x16]);
+
+  var inv_s = new Uint8Array([
+    0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,
+    0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
+    0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
+    0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
+    0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,
+    0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
+    0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
+    0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
+    0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,
+    0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
+    0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
+    0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
+    0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,
+    0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
+    0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
+    0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
+    0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,
+    0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
+    0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
+    0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
+    0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,
+    0x55, 0x21, 0x0c, 0x7d]);
+  var mixCol = new Uint8Array(256);
+  for (var i = 0; i < 256; i++) {
+    if (i < 128) {
+      mixCol[i] = i << 1;
+    } else {
+      mixCol[i] = (i << 1) ^ 0x1b;
+    }
+  }
+  var mix = new Uint32Array([
+    0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,
+    0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,
+    0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,
+    0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,
+    0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,
+    0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,
+    0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,
+    0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,
+    0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,
+    0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,
+    0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,
+    0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,
+    0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,
+    0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,
+    0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,
+    0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,
+    0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,
+    0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,
+    0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,
+    0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,
+    0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,
+    0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,
+    0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,
+    0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,
+    0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,
+    0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,
+    0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,
+    0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,
+    0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,
+    0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,
+    0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,
+    0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,
+    0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,
+    0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,
+    0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,
+    0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,
+    0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,
+    0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,
+    0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,
+    0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,
+    0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,
+    0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,
+    0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);
+
+  function expandKey128(cipherKey) {
+    var b = 176, result = new Uint8Array(b);
+    result.set(cipherKey);
+    for (var j = 16, i = 1; j < b; ++i) {
+      // RotWord
+      var t1 = result[j - 3], t2 = result[j - 2],
+          t3 = result[j - 1], t4 = result[j - 4];
+      // SubWord
+      t1 = s[t1];
+      t2 = s[t2];
+      t3 = s[t3];
+      t4 = s[t4];
+      // Rcon
+      t1 = t1 ^ rcon[i];
+      for (var n = 0; n < 4; ++n) {
+        result[j] = (t1 ^= result[j - 16]);
+        j++;
+        result[j] = (t2 ^= result[j - 16]);
+        j++;
+        result[j] = (t3 ^= result[j - 16]);
+        j++;
+        result[j] = (t4 ^= result[j - 16]);
+        j++;
+      }
+    }
+    return result;
+  }
+
+  function decrypt128(input, key) {
+    var state = new Uint8Array(16);
+    state.set(input);
+    var i, j, k;
+    var t, u, v;
+    // AddRoundKey
+    for (j = 0, k = 160; j < 16; ++j, ++k) {
+      state[j] ^= key[k];
+    }
+    for (i = 9; i >= 1; --i) {
+      // InvShiftRows
+      t = state[13];
+      state[13] = state[9];
+      state[9] = state[5];
+      state[5] = state[1];
+      state[1] = t;
+      t = state[14];
+      u = state[10];
+      state[14] = state[6];
+      state[10] = state[2];
+      state[6] = t;
+      state[2] = u;
+      t = state[15];
+      u = state[11];
+      v = state[7];
+      state[15] = state[3];
+      state[11] = t;
+      state[7] = u;
+      state[3] = v;
+      // InvSubBytes
+      for (j = 0; j < 16; ++j) {
+        state[j] = inv_s[state[j]];
+      }
+      // AddRoundKey
+      for (j = 0, k = i * 16; j < 16; ++j, ++k) {
+        state[j] ^= key[k];
+      }
+      // InvMixColumns
+      for (j = 0; j < 16; j += 4) {
+        var s0 = mix[state[j]], s1 = mix[state[j + 1]],
+          s2 = mix[state[j + 2]], s3 = mix[state[j + 3]];
+        t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^
+          (s3 >>> 24) ^ (s3 << 8));
+        state[j] = (t >>> 24) & 0xFF;
+        state[j + 1] = (t >> 16) & 0xFF;
+        state[j + 2] = (t >> 8) & 0xFF;
+        state[j + 3] = t & 0xFF;
+      }
+    }
+    // InvShiftRows
+    t = state[13];
+    state[13] = state[9];
+    state[9] = state[5];
+    state[5] = state[1];
+    state[1] = t;
+    t = state[14];
+    u = state[10];
+    state[14] = state[6];
+    state[10] = state[2];
+    state[6] = t;
+    state[2] = u;
+    t = state[15];
+    u = state[11];
+    v = state[7];
+    state[15] = state[3];
+    state[11] = t;
+    state[7] = u;
+    state[3] = v;
+    for (j = 0; j < 16; ++j) {
+      // InvSubBytes
+      state[j] = inv_s[state[j]];
+      // AddRoundKey
+      state[j] ^= key[j];
+    }
+    return state;
+  }
+
+  function encrypt128(input, key) {
+    var t, u, v, k;
+    var state = new Uint8Array(16);
+    state.set(input);
+    for (j = 0; j < 16; ++j) {
+      // AddRoundKey
+      state[j] ^= key[j];
+    }
+
+    for (i = 1; i < 10; i++) {
+      //SubBytes
+      for (j = 0; j < 16; ++j) {
+        state[j] = s[state[j]];
+      }
+      //ShiftRows
+      v = state[1];
+      state[1] = state[5];
+      state[5] = state[9];
+      state[9] = state[13];
+      state[13] = v;
+      v = state[2];
+      u = state[6];
+      state[2] = state[10];
+      state[6] = state[14];
+      state[10] = v;
+      state[14] = u;
+      v = state[3];
+      u = state[7];
+      t = state[11];
+      state[3] = state[15];
+      state[7] = v;
+      state[11] = u;
+      state[15] = t;
+      //MixColumns
+      for (var j = 0; j < 16; j += 4) {
+        var s0 = state[j + 0], s1 = state[j + 1];
+        var s2 = state[j + 2], s3 = state[j + 3];
+        t = s0 ^ s1 ^ s2 ^ s3;
+        state[j + 0] ^= t ^ mixCol[s0 ^ s1];
+        state[j + 1] ^= t ^ mixCol[s1 ^ s2];
+        state[j + 2] ^= t ^ mixCol[s2 ^ s3];
+        state[j + 3] ^= t ^ mixCol[s3 ^ s0];
+      }
+      //AddRoundKey
+      for (j = 0, k = i * 16; j < 16; ++j, ++k) {
+        state[j] ^= key[k];
+      }
+    }
+
+    //SubBytes
+    for (j = 0; j < 16; ++j) {
+      state[j] = s[state[j]];
+    }
+    //ShiftRows
+    v = state[1];
+    state[1] = state[5];
+    state[5] = state[9];
+    state[9] = state[13];
+    state[13] = v;
+    v = state[2];
+    u = state[6];
+    state[2] = state[10];
+    state[6] = state[14];
+    state[10] = v;
+    state[14] = u;
+    v = state[3];
+    u = state[7];
+    t = state[11];
+    state[3] = state[15];
+    state[7] = v;
+    state[11] = u;
+    state[15] = t;
+    //AddRoundKey
+    for (j = 0, k = 160; j < 16; ++j, ++k) {
+      state[j] ^= key[k];
+    }
+    return state;
+  }
+
+  function AES128Cipher(key) {
+    this.key = expandKey128(key);
+    this.buffer = new Uint8Array(16);
+    this.bufferPosition = 0;
+  }
+
+  function decryptBlock2(data, finalize) {
+    var i, j, ii, sourceLength = data.length,
+        buffer = this.buffer, bufferLength = this.bufferPosition,
+        result = [], iv = this.iv;
+    for (i = 0; i < sourceLength; ++i) {
+      buffer[bufferLength] = data[i];
+      ++bufferLength;
+      if (bufferLength < 16) {
+        continue;
+      }
+      // buffer is full, decrypting
+      var plain = decrypt128(buffer, this.key);
+      // xor-ing the IV vector to get plain text
+      for (j = 0; j < 16; ++j) {
+        plain[j] ^= iv[j];
+      }
+      iv = buffer;
+      result.push(plain);
+      buffer = new Uint8Array(16);
+      bufferLength = 0;
+    }
+    // saving incomplete buffer
+    this.buffer = buffer;
+    this.bufferLength = bufferLength;
+    this.iv = iv;
+    if (result.length === 0) {
+      return new Uint8Array([]);
+    }
+    // combining plain text blocks into one
+    var outputLength = 16 * result.length;
+    if (finalize) {
+      // undo a padding that is described in RFC 2898
+      var lastBlock = result[result.length - 1];
+      var psLen = lastBlock[15];
+      if (psLen <= 16) {
+        for (i = 15, ii = 16 - psLen; i >= ii; --i) {
+          if (lastBlock[i] !== psLen) {
+            // Invalid padding, assume that the block has no padding.
+            psLen = 0;
+            break;
+          }
+        }
+        outputLength -= psLen;
+        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);
+      }
+    }
+    var output = new Uint8Array(outputLength);
+    for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {
+      output.set(result[i], j);
+    }
+    return output;
+  }
+
+  AES128Cipher.prototype = {
+    decryptBlock: function AES128Cipher_decryptBlock(data, finalize) {
+      var i, sourceLength = data.length;
+      var buffer = this.buffer, bufferLength = this.bufferPosition;
+      // waiting for IV values -- they are at the start of the stream
+      for (i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {
+        buffer[bufferLength] = data[i];
+      }
+      if (bufferLength < 16) {
+        // need more data
+        this.bufferLength = bufferLength;
+        return new Uint8Array([]);
+      }
+      this.iv = buffer;
+      this.buffer = new Uint8Array(16);
+      this.bufferLength = 0;
+      // starting decryption
+      this.decryptBlock = decryptBlock2;
+      return this.decryptBlock(data.subarray(16), finalize);
+    },
+    encrypt: function AES128Cipher_encrypt(data, iv) {
+      var i, j, ii, sourceLength = data.length,
+          buffer = this.buffer, bufferLength = this.bufferPosition,
+          result = [];
+      if (!iv) {
+        iv = new Uint8Array(16);
+      }
+      for (i = 0; i < sourceLength; ++i) {
+        buffer[bufferLength] = data[i];
+        ++bufferLength;
+        if (bufferLength < 16) {
+          continue;
+        }
+        for (j = 0; j < 16; ++j) {
+          buffer[j] ^= iv[j];
+        }
+
+        // buffer is full, encrypting
+        var cipher = encrypt128(buffer, this.key);
+        iv = cipher;
+        result.push(cipher);
+        buffer = new Uint8Array(16);
+        bufferLength = 0;
+      }
+      // saving incomplete buffer
+      this.buffer = buffer;
+      this.bufferLength = bufferLength;
+      this.iv = iv;
+      if (result.length === 0) {
+        return new Uint8Array([]);
+      }
+      // combining plain text blocks into one
+      var outputLength = 16 * result.length;
+      var output = new Uint8Array(outputLength);
+      for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {
+        output.set(result[i], j);
+      }
+      return output;
+    }
+  };
+
+  return AES128Cipher;
+})();
+
+var AES256Cipher = (function AES256CipherClosure() {
+  var rcon = new Uint8Array([
+    0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,
+    0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,
+    0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,
+    0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,
+    0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
+    0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,
+    0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,
+    0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,
+    0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,
+    0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,
+    0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,
+    0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,
+    0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,
+    0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,
+    0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,
+    0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,
+    0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,
+    0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,
+    0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,
+    0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,
+    0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,
+    0x74, 0xe8, 0xcb, 0x8d]);
+
+  var s = new Uint8Array([
+    0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,
+    0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
+    0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,
+    0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
+    0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,
+    0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
+    0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,
+    0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
+    0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,
+    0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
+    0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,
+    0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
+    0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,
+    0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
+    0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,
+    0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
+    0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,
+    0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
+    0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,
+    0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
+    0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,
+    0xb0, 0x54, 0xbb, 0x16]);
+
+  var inv_s = new Uint8Array([
+    0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,
+    0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
+    0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
+    0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
+    0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,
+    0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
+    0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
+    0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
+    0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,
+    0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
+    0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
+    0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
+    0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,
+    0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
+    0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
+    0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
+    0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,
+    0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
+    0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
+    0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
+    0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,
+    0x55, 0x21, 0x0c, 0x7d]);
+
+  var mixCol = new Uint8Array(256);
+  for (var i = 0; i < 256; i++) {
+    if (i < 128) {
+      mixCol[i] = i << 1;
+    } else {
+      mixCol[i] = (i << 1) ^ 0x1b;
+    }
+  }
+  var mix = new Uint32Array([
+    0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,
+    0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,
+    0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,
+    0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,
+    0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,
+    0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,
+    0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,
+    0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,
+    0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,
+    0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,
+    0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,
+    0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,
+    0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,
+    0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,
+    0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,
+    0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,
+    0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,
+    0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,
+    0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,
+    0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,
+    0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,
+    0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,
+    0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,
+    0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,
+    0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,
+    0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,
+    0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,
+    0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,
+    0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,
+    0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,
+    0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,
+    0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,
+    0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,
+    0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,
+    0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,
+    0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,
+    0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,
+    0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,
+    0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,
+    0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,
+    0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,
+    0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,
+    0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);
+
+  function expandKey256(cipherKey) {
+    var b = 240, result = new Uint8Array(b);
+    var r = 1;
+
+    result.set(cipherKey);
+    for (var j = 32, i = 1; j < b; ++i) {
+      if (j % 32 === 16) {
+        t1 = s[t1];
+        t2 = s[t2];
+        t3 = s[t3];
+        t4 = s[t4];
+      } else if (j % 32 === 0) {
+        // RotWord
+        var t1 = result[j - 3], t2 = result[j - 2],
+          t3 = result[j - 1], t4 = result[j - 4];
+        // SubWord
+        t1 = s[t1];
+        t2 = s[t2];
+        t3 = s[t3];
+        t4 = s[t4];
+        // Rcon
+        t1 = t1 ^ r;
+        if ((r <<= 1) >= 256) {
+          r = (r ^ 0x1b) & 0xFF;
+        }
+      }
+
+      for (var n = 0; n < 4; ++n) {
+        result[j] = (t1 ^= result[j - 32]);
+        j++;
+        result[j] = (t2 ^= result[j - 32]);
+        j++;
+        result[j] = (t3 ^= result[j - 32]);
+        j++;
+        result[j] = (t4 ^= result[j - 32]);
+        j++;
+      }
+    }
+    return result;
+  }
+
+  function decrypt256(input, key) {
+    var state = new Uint8Array(16);
+    state.set(input);
+    var i, j, k;
+    var t, u, v;
+    // AddRoundKey
+    for (j = 0, k = 224; j < 16; ++j, ++k) {
+      state[j] ^= key[k];
+    }
+    for (i = 13; i >= 1; --i) {
+      // InvShiftRows
+      t = state[13];
+      state[13] = state[9];
+      state[9] = state[5];
+      state[5] = state[1];
+      state[1] = t;
+      t = state[14];
+      u = state[10];
+      state[14] = state[6];
+      state[10] = state[2];
+      state[6] = t;
+      state[2] = u;
+      t = state[15];
+      u = state[11];
+      v = state[7];
+      state[15] = state[3];
+      state[11] = t;
+      state[7] = u;
+      state[3] = v;
+      // InvSubBytes
+      for (j = 0; j < 16; ++j) {
+        state[j] = inv_s[state[j]];
+      }
+      // AddRoundKey
+      for (j = 0, k = i * 16; j < 16; ++j, ++k) {
+        state[j] ^= key[k];
+      }
+      // InvMixColumns
+      for (j = 0; j < 16; j += 4) {
+        var s0 = mix[state[j]], s1 = mix[state[j + 1]],
+            s2 = mix[state[j + 2]], s3 = mix[state[j + 3]];
+        t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^
+            (s3 >>> 24) ^ (s3 << 8));
+        state[j] = (t >>> 24) & 0xFF;
+        state[j + 1] = (t >> 16) & 0xFF;
+        state[j + 2] = (t >> 8) & 0xFF;
+        state[j + 3] = t & 0xFF;
+      }
+    }
+    // InvShiftRows
+    t = state[13];
+    state[13] = state[9];
+    state[9] = state[5];
+    state[5] = state[1];
+    state[1] = t;
+    t = state[14];
+    u = state[10];
+    state[14] = state[6];
+    state[10] = state[2];
+    state[6] = t;
+    state[2] = u;
+    t = state[15];
+    u = state[11];
+    v = state[7];
+    state[15] = state[3];
+    state[11] = t;
+    state[7] = u;
+    state[3] = v;
+    for (j = 0; j < 16; ++j) {
+      // InvSubBytes
+      state[j] = inv_s[state[j]];
+      // AddRoundKey
+      state[j] ^= key[j];
+    }
+    return state;
+  }
+
+  function encrypt256(input, key) {
+    var t, u, v, k;
+    var state = new Uint8Array(16);
+    state.set(input);
+    for (j = 0; j < 16; ++j) {
+      // AddRoundKey
+      state[j] ^= key[j];
+    }
+
+    for (i = 1; i < 14; i++) {
+      //SubBytes
+      for (j = 0; j < 16; ++j) {
+        state[j] = s[state[j]];
+      }
+      //ShiftRows
+      v = state[1];
+      state[1] = state[5];
+      state[5] = state[9];
+      state[9] = state[13];
+      state[13] = v;
+      v = state[2];
+      u = state[6];
+      state[2] = state[10];
+      state[6] = state[14];
+      state[10] = v;
+      state[14] = u;
+      v = state[3];
+      u = state[7];
+      t = state[11];
+      state[3] = state[15];
+      state[7] = v;
+      state[11] = u;
+      state[15] = t;
+      //MixColumns
+      for (var j = 0; j < 16; j += 4) {
+        var s0 = state[j + 0], s1 = state[j + 1];
+        var s2 = state[j + 2], s3 = state[j + 3];
+        t = s0 ^ s1 ^ s2 ^ s3;
+        state[j + 0] ^= t ^ mixCol[s0 ^ s1];
+        state[j + 1] ^= t ^ mixCol[s1 ^ s2];
+        state[j + 2] ^= t ^ mixCol[s2 ^ s3];
+        state[j + 3] ^= t ^ mixCol[s3 ^ s0];
+      }
+      //AddRoundKey
+      for (j = 0, k = i * 16; j < 16; ++j, ++k) {
+        state[j] ^= key[k];
+      }
+    }
+
+    //SubBytes
+    for (j = 0; j < 16; ++j) {
+      state[j] = s[state[j]];
+    }
+    //ShiftRows
+    v = state[1];
+    state[1] = state[5];
+    state[5] = state[9];
+    state[9] = state[13];
+    state[13] = v;
+    v = state[2];
+    u = state[6];
+    state[2] = state[10];
+    state[6] = state[14];
+    state[10] = v;
+    state[14] = u;
+    v = state[3];
+    u = state[7];
+    t = state[11];
+    state[3] = state[15];
+    state[7] = v;
+    state[11] = u;
+    state[15] = t;
+    //AddRoundKey
+    for (j = 0, k = 224; j < 16; ++j, ++k) {
+      state[j] ^= key[k];
+    }
+
+    return state;
+
+  }
+
+  function AES256Cipher(key) {
+    this.key = expandKey256(key);
+    this.buffer = new Uint8Array(16);
+    this.bufferPosition = 0;
+  }
+
+  function decryptBlock2(data, finalize) {
+    var i, j, ii, sourceLength = data.length,
+        buffer = this.buffer, bufferLength = this.bufferPosition,
+        result = [], iv = this.iv;
+
+    for (i = 0; i < sourceLength; ++i) {
+      buffer[bufferLength] = data[i];
+      ++bufferLength;
+      if (bufferLength < 16) {
+        continue;
+      }
+      // buffer is full, decrypting
+      var plain = decrypt256(buffer, this.key);
+      // xor-ing the IV vector to get plain text
+      for (j = 0; j < 16; ++j) {
+        plain[j] ^= iv[j];
+      }
+      iv = buffer;
+      result.push(plain);
+      buffer = new Uint8Array(16);
+      bufferLength = 0;
+    }
+    // saving incomplete buffer
+    this.buffer = buffer;
+    this.bufferLength = bufferLength;
+    this.iv = iv;
+    if (result.length === 0) {
+      return new Uint8Array([]);
+    }
+    // combining plain text blocks into one
+    var outputLength = 16 * result.length;
+    if (finalize) {
+      // undo a padding that is described in RFC 2898
+      var lastBlock = result[result.length - 1];
+      var psLen = lastBlock[15];
+      if (psLen <= 16) {
+        for (i = 15, ii = 16 - psLen; i >= ii; --i) {
+          if (lastBlock[i] !== psLen) {
+            // Invalid padding, assume that the block has no padding.
+            psLen = 0;
+            break;
+          }
+        }
+        outputLength -= psLen;
+        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);
+      }
+    }
+    var output = new Uint8Array(outputLength);
+    for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {
+      output.set(result[i], j);
+    }
+    return output;
+
+  }
+
+  AES256Cipher.prototype = {
+    decryptBlock: function AES256Cipher_decryptBlock(data, finalize, iv) {
+      var i, sourceLength = data.length;
+      var buffer = this.buffer, bufferLength = this.bufferPosition;
+      // if not supplied an IV wait for IV values
+      // they are at the start of the stream
+      if (iv) {
+        this.iv = iv;
+      } else {
+        for (i = 0; bufferLength < 16 &&
+             i < sourceLength; ++i, ++bufferLength) {
+          buffer[bufferLength] = data[i];
+        }
+        if (bufferLength < 16) {
+          //need more data
+          this.bufferLength = bufferLength;
+          return new Uint8Array([]);
+        }
+        this.iv = buffer;
+        data = data.subarray(16);
+      }
+      this.buffer = new Uint8Array(16);
+      this.bufferLength = 0;
+      // starting decryption
+      this.decryptBlock = decryptBlock2;
+      return this.decryptBlock(data, finalize);
+    },
+    encrypt: function AES256Cipher_encrypt(data, iv) {
+      var i, j, ii, sourceLength = data.length,
+          buffer = this.buffer, bufferLength = this.bufferPosition,
+          result = [];
+      if (!iv) {
+        iv = new Uint8Array(16);
+      }
+      for (i = 0; i < sourceLength; ++i) {
+        buffer[bufferLength] = data[i];
+        ++bufferLength;
+        if (bufferLength < 16) {
+          continue;
+        }
+        for (j = 0; j < 16; ++j) {
+          buffer[j] ^= iv[j];
+        }
+
+        // buffer is full, encrypting
+        var cipher = encrypt256(buffer, this.key);
+        this.iv = cipher;
+        result.push(cipher);
+        buffer = new Uint8Array(16);
+        bufferLength = 0;
+      }
+      // saving incomplete buffer
+      this.buffer = buffer;
+      this.bufferLength = bufferLength;
+      this.iv = iv;
+      if (result.length === 0) {
+        return new Uint8Array([]);
+      }
+      // combining plain text blocks into one
+      var outputLength = 16 * result.length;
+      var output = new Uint8Array(outputLength);
+      for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {
+        output.set(result[i], j);
+      }
+      return output;
+    }
+  };
+
+  return AES256Cipher;
+})();
+
+var PDF17 = (function PDF17Closure() {
+
+  function compareByteArrays(array1, array2) {
+    if (array1.length !== array2.length) {
+      return false;
+    }
+    for (var i = 0; i < array1.length; i++) {
+      if (array1[i] !== array2[i]) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  function PDF17() {
+  }
+
+  PDF17.prototype = {
+    checkOwnerPassword: function PDF17_checkOwnerPassword(password,
+                                                          ownerValidationSalt,
+                                                          userBytes,
+                                                          ownerPassword) {
+      var hashData = new Uint8Array(password.length + 56);
+      hashData.set(password, 0);
+      hashData.set(ownerValidationSalt, password.length);
+      hashData.set(userBytes, password.length + ownerValidationSalt.length);
+      var result = calculateSHA256(hashData, 0, hashData.length);
+      return compareByteArrays(result, ownerPassword);
+    },
+    checkUserPassword: function PDF17_checkUserPassword(password,
+                                                        userValidationSalt,
+                                                        userPassword) {
+      var hashData = new Uint8Array(password.length + 8);
+      hashData.set(password, 0);
+      hashData.set(userValidationSalt, password.length);
+      var result = calculateSHA256(hashData, 0, hashData.length);
+      return compareByteArrays(result, userPassword);
+    },
+    getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes,
+                                            ownerEncryption) {
+      var hashData = new Uint8Array(password.length + 56);
+      hashData.set(password, 0);
+      hashData.set(ownerKeySalt, password.length);
+      hashData.set(userBytes, password.length + ownerKeySalt.length);
+      var key = calculateSHA256(hashData, 0, hashData.length);
+      var cipher = new AES256Cipher(key);
+      return cipher.decryptBlock(ownerEncryption,
+                                 false,
+                                 new Uint8Array(16));
+
+    },
+    getUserKey: function PDF17_getUserKey(password, userKeySalt,
+                                          userEncryption) {
+      var hashData = new Uint8Array(password.length + 8);
+      hashData.set(password, 0);
+      hashData.set(userKeySalt, password.length);
+      //key is the decryption key for the UE string
+      var key = calculateSHA256(hashData, 0, hashData.length);
+      var cipher = new AES256Cipher(key);
+      return cipher.decryptBlock(userEncryption,
+                                 false,
+                                 new Uint8Array(16));
+    }
+  };
+  return PDF17;
+})();
+
+var PDF20 = (function PDF20Closure() {
+
+  function concatArrays(array1, array2) {
+    var t = new Uint8Array(array1.length + array2.length);
+    t.set(array1, 0);
+    t.set(array2, array1.length);
+    return t;
+  }
+
+  function calculatePDF20Hash(password, input, userBytes) {
+    //This refers to Algorithm 2.B as defined in ISO 32000-2
+    var k = calculateSHA256(input, 0, input.length).subarray(0, 32);
+    var e = [0];
+    var i = 0;
+    while (i < 64 || e[e.length - 1] > i - 32) {
+      var arrayLength = password.length + k.length + userBytes.length;
+
+      var k1 = new Uint8Array(arrayLength * 64);
+      var array = concatArrays(password, k);
+      array = concatArrays(array, userBytes);
+      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {
+        k1.set(array, pos);
+      }
+      //AES128 CBC NO PADDING with
+      //first 16 bytes of k as the key and the second 16 as the iv.
+      var cipher = new AES128Cipher(k.subarray(0, 16));
+      e = cipher.encrypt(k1, k.subarray(16, 32));
+      //Now we have to take the first 16 bytes of an unsigned
+      //big endian integer... and compute the remainder
+      //modulo 3.... That is a fairly large number and
+      //JavaScript isn't going to handle that well...
+      //So we're using a trick that allows us to perform
+      //modulo math byte by byte
+      var remainder = 0;
+      for (var z = 0; z < 16; z++) {
+        remainder *= (256 % 3);
+        remainder %= 3;
+        remainder += ((e[z] >>> 0) % 3);
+        remainder %= 3;
+      }
+      if (remainder === 0) {
+        k = calculateSHA256(e, 0, e.length);
+      }
+      else if (remainder === 1) {
+        k = calculateSHA384(e, 0, e.length);
+      }
+      else if (remainder === 2) {
+        k = calculateSHA512(e, 0, e.length);
+      }
+      i++;
+    }
+    return k.subarray(0, 32);
+  }
+
+  function PDF20() {
+  }
+
+  function compareByteArrays(array1, array2) {
+    if (array1.length !== array2.length) {
+      return false;
+    }
+    for (var i = 0; i < array1.length; i++) {
+      if (array1[i] !== array2[i]) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  PDF20.prototype = {
+    hash: function PDF20_hash(password, concatBytes, userBytes) {
+      return calculatePDF20Hash(password, concatBytes, userBytes);
+    },
+    checkOwnerPassword: function PDF20_checkOwnerPassword(password,
+                                                          ownerValidationSalt,
+                                                          userBytes,
+                                                          ownerPassword) {
+      var hashData = new Uint8Array(password.length + 56);
+      hashData.set(password, 0);
+      hashData.set(ownerValidationSalt, password.length);
+      hashData.set(userBytes, password.length + ownerValidationSalt.length);
+      var result = calculatePDF20Hash(password, hashData, userBytes);
+      return compareByteArrays(result, ownerPassword);
+    },
+    checkUserPassword: function PDF20_checkUserPassword(password,
+                                                        userValidationSalt,
+                                                        userPassword) {
+      var hashData = new Uint8Array(password.length + 8);
+      hashData.set(password, 0);
+      hashData.set(userValidationSalt, password.length);
+      var result = calculatePDF20Hash(password, hashData, []);
+      return compareByteArrays(result, userPassword);
+    },
+    getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes,
+                                            ownerEncryption) {
+      var hashData = new Uint8Array(password.length + 56);
+      hashData.set(password, 0);
+      hashData.set(ownerKeySalt, password.length);
+      hashData.set(userBytes, password.length + ownerKeySalt.length);
+      var key = calculatePDF20Hash(password, hashData, userBytes);
+      var cipher = new AES256Cipher(key);
+      return cipher.decryptBlock(ownerEncryption,
+                                 false,
+                                 new Uint8Array(16));
+
+    },
+    getUserKey: function PDF20_getUserKey(password, userKeySalt,
+                                          userEncryption) {
+      var hashData = new Uint8Array(password.length + 8);
+      hashData.set(password, 0);
+      hashData.set(userKeySalt, password.length);
+      //key is the decryption key for the UE string
+      var key = calculatePDF20Hash(password, hashData, []);
+      var cipher = new AES256Cipher(key);
+      return cipher.decryptBlock(userEncryption,
+                                 false,
+                                 new Uint8Array(16));
+    }
+  };
+  return PDF20;
+})();
+
+var CipherTransform = (function CipherTransformClosure() {
+  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {
+    this.stringCipherConstructor = stringCipherConstructor;
+    this.streamCipherConstructor = streamCipherConstructor;
+  }
+
+  CipherTransform.prototype = {
+    createStream: function CipherTransform_createStream(stream, length) {
+      var cipher = new this.streamCipherConstructor();
+      return new DecryptStream(stream, length,
+        function cipherTransformDecryptStream(data, finalize) {
+          return cipher.decryptBlock(data, finalize);
+        }
+      );
+    },
+    decryptString: function CipherTransform_decryptString(s) {
+      var cipher = new this.stringCipherConstructor();
+      var data = stringToBytes(s);
+      data = cipher.decryptBlock(data, true);
+      return bytesToString(data);
+    }
+  };
+  return CipherTransform;
+})();
+
+var CipherTransformFactory = (function CipherTransformFactoryClosure() {
+  var defaultPasswordBytes = new Uint8Array([
+    0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,
+    0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,
+    0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,
+    0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);
+
+  function createEncryptionKey20(revision, password, ownerPassword,
+                                 ownerValidationSalt, ownerKeySalt, uBytes,
+                                 userPassword, userValidationSalt, userKeySalt,
+                                 ownerEncryption, userEncryption, perms) {
+    if (password) {
+      var passwordLength = Math.min(127, password.length);
+      password = password.subarray(0, passwordLength);
+    } else {
+      password = [];
+    }
+    var pdfAlgorithm;
+    if (revision === 6) {
+      pdfAlgorithm = new PDF20();
+    } else {
+      pdfAlgorithm = new PDF17();
+    }
+
+    if (pdfAlgorithm) {
+      if (pdfAlgorithm.checkUserPassword(password, userValidationSalt,
+                                         userPassword)) {
+        return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);
+      } else if (pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt,
+                                                 uBytes,
+                                                 ownerPassword)) {
+        return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes,
+                                        ownerEncryption);
+      }
+    }
+
+    return null;
+  }
+
+  function prepareKeyData(fileId, password, ownerPassword, userPassword,
+                          flags, revision, keyLength, encryptMetadata) {
+    var hashDataSize = 40 + ownerPassword.length + fileId.length;
+    var hashData = new Uint8Array(hashDataSize), i = 0, j, n;
+    if (password) {
+      n = Math.min(32, password.length);
+      for (; i < n; ++i) {
+        hashData[i] = password[i];
+      }
+    }
+    j = 0;
+    while (i < 32) {
+      hashData[i++] = defaultPasswordBytes[j++];
+    }
+    // as now the padded password in the hashData[0..i]
+    for (j = 0, n = ownerPassword.length; j < n; ++j) {
+      hashData[i++] = ownerPassword[j];
+    }
+    hashData[i++] = flags & 0xFF;
+    hashData[i++] = (flags >> 8) & 0xFF;
+    hashData[i++] = (flags >> 16) & 0xFF;
+    hashData[i++] = (flags >>> 24) & 0xFF;
+    for (j = 0, n = fileId.length; j < n; ++j) {
+      hashData[i++] = fileId[j];
+    }
+    if (revision >= 4 && !encryptMetadata) {
+      hashData[i++] = 0xFF;
+      hashData[i++] = 0xFF;
+      hashData[i++] = 0xFF;
+      hashData[i++] = 0xFF;
+    }
+    var hash = calculateMD5(hashData, 0, i);
+    var keyLengthInBytes = keyLength >> 3;
+    if (revision >= 3) {
+      for (j = 0; j < 50; ++j) {
+        hash = calculateMD5(hash, 0, keyLengthInBytes);
+      }
+    }
+    var encryptionKey = hash.subarray(0, keyLengthInBytes);
+    var cipher, checkData;
+
+    if (revision >= 3) {
+      for (i = 0; i < 32; ++i) {
+        hashData[i] = defaultPasswordBytes[i];
+      }
+      for (j = 0, n = fileId.length; j < n; ++j) {
+        hashData[i++] = fileId[j];
+      }
+      cipher = new ARCFourCipher(encryptionKey);
+      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));
+      n = encryptionKey.length;
+      var derivedKey = new Uint8Array(n), k;
+      for (j = 1; j <= 19; ++j) {
+        for (k = 0; k < n; ++k) {
+          derivedKey[k] = encryptionKey[k] ^ j;
+        }
+        cipher = new ARCFourCipher(derivedKey);
+        checkData = cipher.encryptBlock(checkData);
+      }
+      for (j = 0, n = checkData.length; j < n; ++j) {
+        if (userPassword[j] !== checkData[j]) {
+          return null;
+        }
+      }
+    } else {
+      cipher = new ARCFourCipher(encryptionKey);
+      checkData = cipher.encryptBlock(defaultPasswordBytes);
+      for (j = 0, n = checkData.length; j < n; ++j) {
+        if (userPassword[j] !== checkData[j]) {
+          return null;
+        }
+      }
+    }
+    return encryptionKey;
+  }
+
+  function decodeUserPassword(password, ownerPassword, revision, keyLength) {
+    var hashData = new Uint8Array(32), i = 0, j, n;
+    n = Math.min(32, password.length);
+    for (; i < n; ++i) {
+      hashData[i] = password[i];
+    }
+    j = 0;
+    while (i < 32) {
+      hashData[i++] = defaultPasswordBytes[j++];
+    }
+    var hash = calculateMD5(hashData, 0, i);
+    var keyLengthInBytes = keyLength >> 3;
+    if (revision >= 3) {
+      for (j = 0; j < 50; ++j) {
+        hash = calculateMD5(hash, 0, hash.length);
+      }
+    }
+
+    var cipher, userPassword;
+    if (revision >= 3) {
+      userPassword = ownerPassword;
+      var derivedKey = new Uint8Array(keyLengthInBytes), k;
+      for (j = 19; j >= 0; j--) {
+        for (k = 0; k < keyLengthInBytes; ++k) {
+          derivedKey[k] = hash[k] ^ j;
+        }
+        cipher = new ARCFourCipher(derivedKey);
+        userPassword = cipher.encryptBlock(userPassword);
+      }
+    } else {
+      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));
+      userPassword = cipher.encryptBlock(ownerPassword);
+    }
+    return userPassword;
+  }
+
+  var identityName = Name.get('Identity');
+
+  function CipherTransformFactory(dict, fileId, password) {
+    var filter = dict.get('Filter');
+    if (!isName(filter) || filter.name !== 'Standard') {
+      error('unknown encryption method');
+    }
+    this.dict = dict;
+    var algorithm = dict.get('V');
+    if (!isInt(algorithm) ||
+        (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 &&
+        algorithm !== 5)) {
+      error('unsupported encryption algorithm');
+    }
+    this.algorithm = algorithm;
+    var keyLength = dict.get('Length') || 40;
+    if (!isInt(keyLength) ||
+        keyLength < 40 || (keyLength % 8) !== 0) {
+      error('invalid key length');
+    }
+
+    // prepare keys
+    var ownerPassword = stringToBytes(dict.get('O')).subarray(0, 32);
+    var userPassword = stringToBytes(dict.get('U')).subarray(0, 32);
+    var flags = dict.get('P');
+    var revision = dict.get('R');
+    // meaningful when V is 4 or 5
+    var encryptMetadata = ((algorithm === 4 || algorithm === 5) &&
+                           dict.get('EncryptMetadata') !== false);
+    this.encryptMetadata = encryptMetadata;
+
+    var fileIdBytes = stringToBytes(fileId);
+    var passwordBytes;
+    if (password) {
+      passwordBytes = stringToBytes(password);
+    }
+
+    var encryptionKey;
+    if (algorithm !== 5) {
+      encryptionKey = prepareKeyData(fileIdBytes, passwordBytes,
+                                     ownerPassword, userPassword, flags,
+                                     revision, keyLength, encryptMetadata);
+    }
+    else {
+      var ownerValidationSalt = stringToBytes(dict.get('O')).subarray(32, 40);
+      var ownerKeySalt = stringToBytes(dict.get('O')).subarray(40, 48);
+      var uBytes = stringToBytes(dict.get('U')).subarray(0, 48);
+      var userValidationSalt = stringToBytes(dict.get('U')).subarray(32, 40);
+      var userKeySalt = stringToBytes(dict.get('U')).subarray(40, 48);
+      var ownerEncryption = stringToBytes(dict.get('OE'));
+      var userEncryption = stringToBytes(dict.get('UE'));
+      var perms = stringToBytes(dict.get('Perms'));
+      encryptionKey =
+        createEncryptionKey20(revision, passwordBytes,
+          ownerPassword, ownerValidationSalt,
+          ownerKeySalt, uBytes,
+          userPassword, userValidationSalt,
+          userKeySalt, ownerEncryption,
+          userEncryption, perms);
+    }
+    if (!encryptionKey && !password) {
+      throw new PasswordException('No password given',
+                                  PasswordResponses.NEED_PASSWORD);
+    } else if (!encryptionKey && password) {
+      // Attempting use the password as an owner password
+      var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword,
+                                               revision, keyLength);
+      encryptionKey = prepareKeyData(fileIdBytes, decodedPassword,
+                                     ownerPassword, userPassword, flags,
+                                     revision, keyLength, encryptMetadata);
+    }
+
+    if (!encryptionKey) {
+      throw new PasswordException('Incorrect Password',
+                                  PasswordResponses.INCORRECT_PASSWORD);
+    }
+
+    this.encryptionKey = encryptionKey;
+
+    if (algorithm >= 4) {
+      this.cf = dict.get('CF');
+      this.stmf = dict.get('StmF') || identityName;
+      this.strf = dict.get('StrF') || identityName;
+      this.eff = dict.get('EFF') || this.stmf;
+    }
+  }
+
+  function buildObjectKey(num, gen, encryptionKey, isAes) {
+    var key = new Uint8Array(encryptionKey.length + 9), i, n;
+    for (i = 0, n = encryptionKey.length; i < n; ++i) {
+      key[i] = encryptionKey[i];
+    }
+    key[i++] = num & 0xFF;
+    key[i++] = (num >> 8) & 0xFF;
+    key[i++] = (num >> 16) & 0xFF;
+    key[i++] = gen & 0xFF;
+    key[i++] = (gen >> 8) & 0xFF;
+    if (isAes) {
+      key[i++] = 0x73;
+      key[i++] = 0x41;
+      key[i++] = 0x6C;
+      key[i++] = 0x54;
+    }
+    var hash = calculateMD5(key, 0, i);
+    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));
+  }
+
+  function buildCipherConstructor(cf, name, num, gen, key) {
+    var cryptFilter = cf.get(name.name);
+    var cfm;
+    if (cryptFilter !== null && cryptFilter !== undefined) {
+      cfm = cryptFilter.get('CFM');
+    }
+    if (!cfm || cfm.name === 'None') {
+      return function cipherTransformFactoryBuildCipherConstructorNone() {
+        return new NullCipher();
+      };
+    }
+    if ('V2' === cfm.name) {
+      return function cipherTransformFactoryBuildCipherConstructorV2() {
+        return new ARCFourCipher(buildObjectKey(num, gen, key, false));
+      };
+    }
+    if ('AESV2' === cfm.name) {
+      return function cipherTransformFactoryBuildCipherConstructorAESV2() {
+        return new AES128Cipher(buildObjectKey(num, gen, key, true));
+      };
+    }
+    if ('AESV3' === cfm.name) {
+      return function cipherTransformFactoryBuildCipherConstructorAESV3() {
+        return new AES256Cipher(key);
+      };
+    }
+    error('Unknown crypto method');
+  }
+
+  CipherTransformFactory.prototype = {
+    createCipherTransform:
+      function CipherTransformFactory_createCipherTransform(num, gen) {
+      if (this.algorithm === 4 || this.algorithm === 5) {
+        return new CipherTransform(
+          buildCipherConstructor(this.cf, this.stmf,
+                                 num, gen, this.encryptionKey),
+          buildCipherConstructor(this.cf, this.strf,
+                                 num, gen, this.encryptionKey));
+      }
+      // algorithms 1 and 2
+      var key = buildObjectKey(num, gen, this.encryptionKey, false);
+      var cipherConstructor = function buildCipherCipherConstructor() {
+        return new ARCFourCipher(key);
+      };
+      return new CipherTransform(cipherConstructor, cipherConstructor);
+    }
+  };
+
+  return CipherTransformFactory;
+})();
+
+
+var PatternType = {
+  FUNCTION_BASED: 1,
+  AXIAL: 2,
+  RADIAL: 3,
+  FREE_FORM_MESH: 4,
+  LATTICE_FORM_MESH: 5,
+  COONS_PATCH_MESH: 6,
+  TENSOR_PATCH_MESH: 7
+};
+
+var Pattern = (function PatternClosure() {
+  // Constructor should define this.getPattern
+  function Pattern() {
+    error('should not call Pattern constructor');
+  }
+
+  Pattern.prototype = {
+    // Input: current Canvas context
+    // Output: the appropriate fillStyle or strokeStyle
+    getPattern: function Pattern_getPattern(ctx) {
+      error('Should not call Pattern.getStyle: ' + ctx);
+    }
+  };
+
+  Pattern.parseShading = function Pattern_parseShading(shading, matrix, xref,
+                                                       res) {
+
+    var dict = isStream(shading) ? shading.dict : shading;
+    var type = dict.get('ShadingType');
+
+    try {
+      switch (type) {
+        case PatternType.AXIAL:
+        case PatternType.RADIAL:
+          // Both radial and axial shadings are handled by RadialAxial shading.
+          return new Shadings.RadialAxial(dict, matrix, xref, res);
+        case PatternType.FREE_FORM_MESH:
+        case PatternType.LATTICE_FORM_MESH:
+        case PatternType.COONS_PATCH_MESH:
+        case PatternType.TENSOR_PATCH_MESH:
+          return new Shadings.Mesh(shading, matrix, xref, res);
+        default:
+          throw new Error('Unknown PatternType: ' + type);
+      }
+    } catch (ex) {
+      if (ex instanceof MissingDataException) {
+        throw ex;
+      }
+      UnsupportedManager.notify(UNSUPPORTED_FEATURES.shadingPattern);
+      warn(ex);
+      return new Shadings.Dummy();
+    }
+  };
+  return Pattern;
+})();
+
+var Shadings = {};
+
+// A small number to offset the first/last color stops so we can insert ones to
+// support extend.  Number.MIN_VALUE appears to be too small and breaks the
+// extend. 1e-7 works in FF but chrome seems to use an even smaller sized number
+// internally so we have to go bigger.
+Shadings.SMALL_NUMBER = 1e-2;
+
+// Radial and axial shading have very similar implementations
+// If needed, the implementations can be broken into two classes
+Shadings.RadialAxial = (function RadialAxialClosure() {
+  function RadialAxial(dict, matrix, xref, res) {
+    this.matrix = matrix;
+    this.coordsArr = dict.get('Coords');
+    this.shadingType = dict.get('ShadingType');
+    this.type = 'Pattern';
+    var cs = dict.get('ColorSpace', 'CS');
+    cs = ColorSpace.parse(cs, xref, res);
+    this.cs = cs;
+
+    var t0 = 0.0, t1 = 1.0;
+    if (dict.has('Domain')) {
+      var domainArr = dict.get('Domain');
+      t0 = domainArr[0];
+      t1 = domainArr[1];
+    }
+
+    var extendStart = false, extendEnd = false;
+    if (dict.has('Extend')) {
+      var extendArr = dict.get('Extend');
+      extendStart = extendArr[0];
+      extendEnd = extendArr[1];
+    }
+
+    if (this.shadingType === PatternType.RADIAL &&
+       (!extendStart || !extendEnd)) {
+      // Radial gradient only currently works if either circle is fully within
+      // the other circle.
+      var x1 = this.coordsArr[0];
+      var y1 = this.coordsArr[1];
+      var r1 = this.coordsArr[2];
+      var x2 = this.coordsArr[3];
+      var y2 = this.coordsArr[4];
+      var r2 = this.coordsArr[5];
+      var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
+      if (r1 <= r2 + distance &&
+          r2 <= r1 + distance) {
+        warn('Unsupported radial gradient.');
+      }
+    }
+
+    this.extendStart = extendStart;
+    this.extendEnd = extendEnd;
+
+    var fnObj = dict.get('Function');
+    var fn = PDFFunction.parseArray(xref, fnObj);
+
+    // 10 samples seems good enough for now, but probably won't work
+    // if there are sharp color changes. Ideally, we would implement
+    // the spec faithfully and add lossless optimizations.
+    var diff = t1 - t0;
+    var step = diff / 10;
+
+    var colorStops = this.colorStops = [];
+
+    // Protect against bad domains so we don't end up in an infinte loop below.
+    if (t0 >= t1 || step <= 0) {
+      // Acrobat doesn't seem to handle these cases so we'll ignore for
+      // now.
+      info('Bad shading domain.');
+      return;
+    }
+
+    var color = new Float32Array(cs.numComps), ratio = new Float32Array(1);
+    var rgbColor;
+    for (var i = t0; i <= t1; i += step) {
+      ratio[0] = i;
+      fn(ratio, 0, color, 0);
+      rgbColor = cs.getRgb(color, 0);
+      var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
+      colorStops.push([(i - t0) / diff, cssColor]);
+    }
+
+    var background = 'transparent';
+    if (dict.has('Background')) {
+      rgbColor = cs.getRgb(dict.get('Background'), 0);
+      background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
+    }
+
+    if (!extendStart) {
+      // Insert a color stop at the front and offset the first real color stop
+      // so it doesn't conflict with the one we insert.
+      colorStops.unshift([0, background]);
+      colorStops[1][0] += Shadings.SMALL_NUMBER;
+    }
+    if (!extendEnd) {
+      // Same idea as above in extendStart but for the end.
+      colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;
+      colorStops.push([1, background]);
+    }
+
+    this.colorStops = colorStops;
+  }
+
+  RadialAxial.prototype = {
+    getIR: function RadialAxial_getIR() {
+      var coordsArr = this.coordsArr;
+      var shadingType = this.shadingType;
+      var type, p0, p1, r0, r1;
+      if (shadingType === PatternType.AXIAL) {
+        p0 = [coordsArr[0], coordsArr[1]];
+        p1 = [coordsArr[2], coordsArr[3]];
+        r0 = null;
+        r1 = null;
+        type = 'axial';
+      } else if (shadingType === PatternType.RADIAL) {
+        p0 = [coordsArr[0], coordsArr[1]];
+        p1 = [coordsArr[3], coordsArr[4]];
+        r0 = coordsArr[2];
+        r1 = coordsArr[5];
+        type = 'radial';
+      } else {
+        error('getPattern type unknown: ' + shadingType);
+      }
+
+      var matrix = this.matrix;
+      if (matrix) {
+        p0 = Util.applyTransform(p0, matrix);
+        p1 = Util.applyTransform(p1, matrix);
+      }
+
+      return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];
+    }
+  };
+
+  return RadialAxial;
+})();
+
+// All mesh shading. For now, they will be presented as set of the triangles
+// to be drawn on the canvas and rgb color for each vertex.
+Shadings.Mesh = (function MeshClosure() {
+  function MeshStreamReader(stream, context) {
+    this.stream = stream;
+    this.context = context;
+    this.buffer = 0;
+    this.bufferLength = 0;
+
+    var numComps = context.numComps;
+    this.tmpCompsBuf = new Float32Array(numComps);
+    var csNumComps = context.colorSpace;
+    this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) :
+                                           this.tmpCompsBuf;
+  }
+  MeshStreamReader.prototype = {
+    get hasData() {
+      if (this.stream.end) {
+        return this.stream.pos < this.stream.end;
+      }
+      if (this.bufferLength > 0) {
+        return true;
+      }
+      var nextByte = this.stream.getByte();
+      if (nextByte < 0) {
+        return false;
+      }
+      this.buffer = nextByte;
+      this.bufferLength = 8;
+      return true;
+    },
+    readBits: function MeshStreamReader_readBits(n) {
+      var buffer = this.buffer;
+      var bufferLength = this.bufferLength;
+      if (n === 32) {
+        if (bufferLength === 0) {
+          return ((this.stream.getByte() << 24) |
+            (this.stream.getByte() << 16) | (this.stream.getByte() << 8) |
+            this.stream.getByte()) >>> 0;
+        }
+        buffer = (buffer << 24) | (this.stream.getByte() << 16) |
+          (this.stream.getByte() << 8) | this.stream.getByte();
+        var nextByte = this.stream.getByte();
+        this.buffer = nextByte & ((1 << bufferLength) - 1);
+        return ((buffer << (8 - bufferLength)) |
+          ((nextByte & 0xFF) >> bufferLength)) >>> 0;
+      }
+      if (n === 8 && bufferLength === 0) {
+        return this.stream.getByte();
+      }
+      while (bufferLength < n) {
+        buffer = (buffer << 8) | this.stream.getByte();
+        bufferLength += 8;
+      }
+      bufferLength -= n;
+      this.bufferLength = bufferLength;
+      this.buffer = buffer & ((1 << bufferLength) - 1);
+      return buffer >> bufferLength;
+    },
+    align: function MeshStreamReader_align() {
+      this.buffer = 0;
+      this.bufferLength = 0;
+    },
+    readFlag: function MeshStreamReader_readFlag() {
+      return this.readBits(this.context.bitsPerFlag);
+    },
+    readCoordinate: function MeshStreamReader_readCoordinate() {
+      var bitsPerCoordinate = this.context.bitsPerCoordinate;
+      var xi = this.readBits(bitsPerCoordinate);
+      var yi = this.readBits(bitsPerCoordinate);
+      var decode = this.context.decode;
+      var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) :
+        2.3283064365386963e-10; // 2 ^ -32
+      return [
+        xi * scale * (decode[1] - decode[0]) + decode[0],
+        yi * scale * (decode[3] - decode[2]) + decode[2]
+      ];
+    },
+    readComponents: function MeshStreamReader_readComponents() {
+      var numComps = this.context.numComps;
+      var bitsPerComponent = this.context.bitsPerComponent;
+      var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) :
+        2.3283064365386963e-10; // 2 ^ -32
+      var decode = this.context.decode;
+      var components = this.tmpCompsBuf;
+      for (var i = 0, j = 4; i < numComps; i++, j += 2) {
+        var ci = this.readBits(bitsPerComponent);
+        components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];
+      }
+      var color = this.tmpCsCompsBuf;
+      if (this.context.colorFn) {
+        this.context.colorFn(components, 0, color, 0);
+      }
+      return this.context.colorSpace.getRgb(color, 0);
+    }
+  };
+
+  function decodeType4Shading(mesh, reader) {
+    var coords = mesh.coords;
+    var colors = mesh.colors;
+    var operators = [];
+    var ps = []; // not maintaining cs since that will match ps
+    var verticesLeft = 0; // assuming we have all data to start a new triangle
+    while (reader.hasData) {
+      var f = reader.readFlag();
+      var coord = reader.readCoordinate();
+      var color = reader.readComponents();
+      if (verticesLeft === 0) { // ignoring flags if we started a triangle
+        assert(0 <= f && f <= 2, 'Unknown type4 flag');
+        switch (f) {
+          case 0:
+            verticesLeft = 3;
+            break;
+          case 1:
+            ps.push(ps[ps.length - 2], ps[ps.length - 1]);
+            verticesLeft = 1;
+            break;
+          case 2:
+            ps.push(ps[ps.length - 3], ps[ps.length - 1]);
+            verticesLeft = 1;
+            break;
+        }
+        operators.push(f);
+      }
+      ps.push(coords.length);
+      coords.push(coord);
+      colors.push(color);
+      verticesLeft--;
+
+      reader.align();
+    }
+
+    var psPacked = new Int32Array(ps);
+
+    mesh.figures.push({
+      type: 'triangles',
+      coords: psPacked,
+      colors: psPacked
+    });
+  }
+
+  function decodeType5Shading(mesh, reader, verticesPerRow) {
+    var coords = mesh.coords;
+    var colors = mesh.colors;
+    var ps = []; // not maintaining cs since that will match ps
+    while (reader.hasData) {
+      var coord = reader.readCoordinate();
+      var color = reader.readComponents();
+      ps.push(coords.length);
+      coords.push(coord);
+      colors.push(color);
+    }
+
+    var psPacked = new Int32Array(ps);
+
+    mesh.figures.push({
+      type: 'lattice',
+      coords: psPacked,
+      colors: psPacked,
+      verticesPerRow: verticesPerRow
+    });
+  }
+
+  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;
+  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;
+
+  var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds
+
+  var getB = (function getBClosure() {
+    function buildB(count) {
+      var lut = [];
+      for (var i = 0; i <= count; i++) {
+        var t = i / count, t_ = 1 - t;
+        lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_,
+          3 * t * t * t_, t * t * t]));
+      }
+      return lut;
+    }
+    var cache = [];
+    return function getB(count) {
+      if (!cache[count]) {
+        cache[count] = buildB(count);
+      }
+      return cache[count];
+    };
+  })();
+
+  function buildFigureFromPatch(mesh, index) {
+    var figure = mesh.figures[index];
+    assert(figure.type === 'patch', 'Unexpected patch mesh figure');
+
+    var coords = mesh.coords, colors = mesh.colors;
+    var pi = figure.coords;
+    var ci = figure.colors;
+
+    var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0],
+                              coords[pi[12]][0], coords[pi[15]][0]);
+    var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1],
+                              coords[pi[12]][1], coords[pi[15]][1]);
+    var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0],
+                              coords[pi[12]][0], coords[pi[15]][0]);
+    var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1],
+                              coords[pi[12]][1], coords[pi[15]][1]);
+    var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY /
+                             (mesh.bounds[2] - mesh.bounds[0]));
+    splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT,
+               Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));
+    var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY /
+                             (mesh.bounds[3] - mesh.bounds[1]));
+    splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT,
+               Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));
+
+    var verticesPerRow = splitXBy + 1;
+    var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);
+    var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);
+    var k = 0;
+    var cl = new Uint8Array(3), cr = new Uint8Array(3);
+    var c0 = colors[ci[0]], c1 = colors[ci[1]],
+      c2 = colors[ci[2]], c3 = colors[ci[3]];
+    var bRow = getB(splitYBy), bCol = getB(splitXBy);
+    for (var row = 0; row <= splitYBy; row++) {
+      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;
+      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;
+      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;
+
+      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;
+      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;
+      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;
+
+      for (var col = 0; col <= splitXBy; col++, k++) {
+        if ((row === 0 || row === splitYBy) &&
+            (col === 0 || col === splitXBy)) {
+          continue;
+        }
+        var x = 0, y = 0;
+        var q = 0;
+        for (var i = 0; i <= 3; i++) {
+          for (var j = 0; j <= 3; j++, q++) {
+            var m = bRow[row][i] * bCol[col][j];
+            x += coords[pi[q]][0] * m;
+            y += coords[pi[q]][1] * m;
+          }
+        }
+        figureCoords[k] = coords.length;
+        coords.push([x, y]);
+        figureColors[k] = colors.length;
+        var newColor = new Uint8Array(3);
+        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;
+        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;
+        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;
+        colors.push(newColor);
+      }
+    }
+    figureCoords[0] = pi[0];
+    figureColors[0] = ci[0];
+    figureCoords[splitXBy] = pi[3];
+    figureColors[splitXBy] = ci[1];
+    figureCoords[verticesPerRow * splitYBy] = pi[12];
+    figureColors[verticesPerRow * splitYBy] = ci[2];
+    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];
+    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];
+
+    mesh.figures[index] = {
+      type: 'lattice',
+      coords: figureCoords,
+      colors: figureColors,
+      verticesPerRow: verticesPerRow
+    };
+  }
+
+  function decodeType6Shading(mesh, reader) {
+    // A special case of Type 7. The p11, p12, p21, p22 automatically filled
+    var coords = mesh.coords;
+    var colors = mesh.colors;
+    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33
+    var cs = new Int32Array(4); // c00, c30, c03, c33
+    while (reader.hasData) {
+      var f = reader.readFlag();
+      assert(0 <= f && f <= 3, 'Unknown type6 flag');
+      var i, ii;
+      var pi = coords.length;
+      for (i = 0, ii = (f !== 0 ? 8 : 12); i < ii; i++) {
+        coords.push(reader.readCoordinate());
+      }
+      var ci = colors.length;
+      for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) {
+        colors.push(reader.readComponents());
+      }
+      var tmp1, tmp2, tmp3, tmp4;
+      switch (f) {
+        case 0:
+          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;
+          ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;
+          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 8;
+          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;
+          cs[2] = ci + 1; cs[3] = ci + 2;
+          cs[0] = ci;     cs[1] = ci + 3;
+          break;
+        case 1:
+          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];
+          ps[12] = pi + 5; ps[13] = pi + 4;  ps[14] = pi + 3;  ps[15] = pi + 2;
+          ps[ 8] = pi + 6; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 1;
+          ps[ 4] = pi + 7; /* calculated below              */ ps[ 7] = pi;
+          ps[ 0] = tmp1;   ps[ 1] = tmp2;    ps[ 2] = tmp3;    ps[ 3] = tmp4;
+          tmp1 = cs[2]; tmp2 = cs[3];
+          cs[2] = ci + 1; cs[3] = ci;
+          cs[0] = tmp1;   cs[1] = tmp2;
+          break;
+        case 2:
+          ps[12] = ps[15]; ps[13] = pi + 7; ps[14] = pi + 6;   ps[15] = pi + 5;
+          ps[ 8] = ps[11]; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 4;
+          ps[ 4] = ps[7];  /* calculated below              */ ps[ 7] = pi + 3;
+          ps[ 0] = ps[3];  ps[ 1] = pi;     ps[ 2] = pi + 1;   ps[ 3] = pi + 2;
+          cs[2] = cs[3]; cs[3] = ci + 1;
+          cs[0] = cs[1]; cs[1] = ci;
+          break;
+        case 3:
+          ps[12] = ps[0];  ps[13] = ps[1];   ps[14] = ps[2];   ps[15] = ps[3];
+          ps[ 8] = pi;     /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;
+          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 6;
+          ps[ 0] = pi + 2; ps[ 1] = pi + 3;  ps[ 2] = pi + 4;  ps[ 3] = pi + 5;
+          cs[2] = cs[0]; cs[3] = cs[1];
+          cs[0] = ci;    cs[1] = ci + 1;
+          break;
+      }
+      // set p11, p12, p21, p22
+      ps[5] = coords.length;
+      coords.push([
+        (-4 * coords[ps[0]][0] - coords[ps[15]][0] +
+          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -
+          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +
+          3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9,
+        (-4 * coords[ps[0]][1] - coords[ps[15]][1] +
+          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -
+          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +
+          3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9
+      ]);
+      ps[6] = coords.length;
+      coords.push([
+        (-4 * coords[ps[3]][0] - coords[ps[12]][0] +
+          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -
+          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +
+          3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9,
+        (-4 * coords[ps[3]][1] - coords[ps[12]][1] +
+          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -
+          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +
+          3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9
+      ]);
+      ps[9] = coords.length;
+      coords.push([
+        (-4 * coords[ps[12]][0] - coords[ps[3]][0] +
+          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -
+          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +
+          3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9,
+        (-4 * coords[ps[12]][1] - coords[ps[3]][1] +
+          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -
+          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +
+          3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9
+      ]);
+      ps[10] = coords.length;
+      coords.push([
+        (-4 * coords[ps[15]][0] - coords[ps[0]][0] +
+          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -
+          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +
+          3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9,
+        (-4 * coords[ps[15]][1] - coords[ps[0]][1] +
+          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -
+          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +
+          3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9
+      ]);
+      mesh.figures.push({
+        type: 'patch',
+        coords: new Int32Array(ps), // making copies of ps and cs
+        colors: new Int32Array(cs)
+      });
+    }
+  }
+
+  function decodeType7Shading(mesh, reader) {
+    var coords = mesh.coords;
+    var colors = mesh.colors;
+    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33
+    var cs = new Int32Array(4); // c00, c30, c03, c33
+    while (reader.hasData) {
+      var f = reader.readFlag();
+      assert(0 <= f && f <= 3, 'Unknown type7 flag');
+      var i, ii;
+      var pi = coords.length;
+      for (i = 0, ii = (f !== 0 ? 12 : 16); i < ii; i++) {
+        coords.push(reader.readCoordinate());
+      }
+      var ci = colors.length;
+      for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) {
+        colors.push(reader.readComponents());
+      }
+      var tmp1, tmp2, tmp3, tmp4;
+      switch (f) {
+        case 0:
+          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;
+          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;
+          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;
+          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;
+          cs[2] = ci + 1; cs[3] = ci + 2;
+          cs[0] = ci;     cs[1] = ci + 3;
+          break;
+        case 1:
+          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];
+          ps[12] = pi + 5; ps[13] = pi + 4;  ps[14] = pi + 3;  ps[15] = pi + 2;
+          ps[ 8] = pi + 6; ps[ 9] = pi + 11; ps[10] = pi + 10; ps[11] = pi + 1;
+          ps[ 4] = pi + 7; ps[ 5] = pi + 8;  ps[ 6] = pi + 9;  ps[ 7] = pi;
+          ps[ 0] = tmp1;   ps[ 1] = tmp2;    ps[ 2] = tmp3;    ps[ 3] = tmp4;
+          tmp1 = cs[2]; tmp2 = cs[3];
+          cs[2] = ci + 1; cs[3] = ci;
+          cs[0] = tmp1;   cs[1] = tmp2;
+          break;
+        case 2:
+          ps[12] = ps[15]; ps[13] = pi + 7; ps[14] = pi + 6;  ps[15] = pi + 5;
+          ps[ 8] = ps[11]; ps[ 9] = pi + 8; ps[10] = pi + 11; ps[11] = pi + 4;
+          ps[ 4] = ps[7];  ps[ 5] = pi + 9; ps[ 6] = pi + 10; ps[ 7] = pi + 3;
+          ps[ 0] = ps[3];  ps[ 1] = pi;     ps[ 2] = pi + 1;  ps[ 3] = pi + 2;
+          cs[2] = cs[3]; cs[3] = ci + 1;
+          cs[0] = cs[1]; cs[1] = ci;
+          break;
+        case 3:
+          ps[12] = ps[0];  ps[13] = ps[1];   ps[14] = ps[2];   ps[15] = ps[3];
+          ps[ 8] = pi;     ps[ 9] = pi + 9;  ps[10] = pi + 8;  ps[11] = pi + 7;
+          ps[ 4] = pi + 1; ps[ 5] = pi + 10; ps[ 6] = pi + 11; ps[ 7] = pi + 6;
+          ps[ 0] = pi + 2; ps[ 1] = pi + 3;  ps[ 2] = pi + 4;  ps[ 3] = pi + 5;
+          cs[2] = cs[0]; cs[3] = cs[1];
+          cs[0] = ci;    cs[1] = ci + 1;
+          break;
+      }
+      mesh.figures.push({
+        type: 'patch',
+        coords: new Int32Array(ps), // making copies of ps and cs
+        colors: new Int32Array(cs)
+      });
+    }
+  }
+
+  function updateBounds(mesh) {
+    var minX = mesh.coords[0][0], minY = mesh.coords[0][1],
+      maxX = minX, maxY = minY;
+    for (var i = 1, ii = mesh.coords.length; i < ii; i++) {
+      var x = mesh.coords[i][0], y = mesh.coords[i][1];
+      minX = minX > x ? x : minX;
+      minY = minY > y ? y : minY;
+      maxX = maxX < x ? x : maxX;
+      maxY = maxY < y ? y : maxY;
+    }
+    mesh.bounds = [minX, minY, maxX, maxY];
+  }
+
+  function packData(mesh) {
+    var i, ii, j, jj;
+
+    var coords = mesh.coords;
+    var coordsPacked = new Float32Array(coords.length * 2);
+    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {
+      var xy = coords[i];
+      coordsPacked[j++] = xy[0];
+      coordsPacked[j++] = xy[1];
+    }
+    mesh.coords = coordsPacked;
+
+    var colors = mesh.colors;
+    var colorsPacked = new Uint8Array(colors.length * 3);
+    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {
+      var c = colors[i];
+      colorsPacked[j++] = c[0];
+      colorsPacked[j++] = c[1];
+      colorsPacked[j++] = c[2];
+    }
+    mesh.colors = colorsPacked;
+
+    var figures = mesh.figures;
+    for (i = 0, ii = figures.length; i < ii; i++) {
+      var figure = figures[i], ps = figure.coords, cs = figure.colors;
+      for (j = 0, jj = ps.length; j < jj; j++) {
+        ps[j] *= 2;
+        cs[j] *= 3;
+      }
+    }
+  }
+
+  function Mesh(stream, matrix, xref, res) {
+    assert(isStream(stream), 'Mesh data is not a stream');
+    var dict = stream.dict;
+    this.matrix = matrix;
+    this.shadingType = dict.get('ShadingType');
+    this.type = 'Pattern';
+    this.bbox = dict.get('BBox');
+    var cs = dict.get('ColorSpace', 'CS');
+    cs = ColorSpace.parse(cs, xref, res);
+    this.cs = cs;
+    this.background = dict.has('Background') ?
+      cs.getRgb(dict.get('Background'), 0) : null;
+
+    var fnObj = dict.get('Function');
+    var fn = fnObj ? PDFFunction.parseArray(xref, fnObj) : null;
+
+    this.coords = [];
+    this.colors = [];
+    this.figures = [];
+
+    var decodeContext = {
+      bitsPerCoordinate: dict.get('BitsPerCoordinate'),
+      bitsPerComponent: dict.get('BitsPerComponent'),
+      bitsPerFlag: dict.get('BitsPerFlag'),
+      decode: dict.get('Decode'),
+      colorFn: fn,
+      colorSpace: cs,
+      numComps: fn ? 1 : cs.numComps
+    };
+    var reader = new MeshStreamReader(stream, decodeContext);
+
+    var patchMesh = false;
+    switch (this.shadingType) {
+      case PatternType.FREE_FORM_MESH:
+        decodeType4Shading(this, reader);
+        break;
+      case PatternType.LATTICE_FORM_MESH:
+        var verticesPerRow = dict.get('VerticesPerRow') | 0;
+        assert(verticesPerRow >= 2, 'Invalid VerticesPerRow');
+        decodeType5Shading(this, reader, verticesPerRow);
+        break;
+      case PatternType.COONS_PATCH_MESH:
+        decodeType6Shading(this, reader);
+        patchMesh = true;
+        break;
+      case PatternType.TENSOR_PATCH_MESH:
+        decodeType7Shading(this, reader);
+        patchMesh = true;
+        break;
+      default:
+        error('Unsupported mesh type.');
+        break;
+    }
+
+    if (patchMesh) {
+      // dirty bounds calculation for determining, how dense shall be triangles
+      updateBounds(this);
+      for (var i = 0, ii = this.figures.length; i < ii; i++) {
+        buildFigureFromPatch(this, i);
+      }
+    }
+    // calculate bounds
+    updateBounds(this);
+
+    packData(this);
+  }
+
+  Mesh.prototype = {
+    getIR: function Mesh_getIR() {
+      return ['Mesh', this.shadingType, this.coords, this.colors, this.figures,
+        this.bounds, this.matrix, this.bbox, this.background];
+    }
+  };
+
+  return Mesh;
+})();
+
+Shadings.Dummy = (function DummyClosure() {
+  function Dummy() {
+    this.type = 'Pattern';
+  }
+
+  Dummy.prototype = {
+    getIR: function Dummy_getIR() {
+      return ['Dummy'];
+    }
+  };
+  return Dummy;
+})();
+
+function getTilingPatternIR(operatorList, dict, args) {
+  var matrix = dict.get('Matrix');
+  var bbox = dict.get('BBox');
+  var xstep = dict.get('XStep');
+  var ystep = dict.get('YStep');
+  var paintType = dict.get('PaintType');
+  var tilingType = dict.get('TilingType');
+
+  return [
+    'TilingPattern', args, operatorList, matrix, bbox, xstep, ystep,
+    paintType, tilingType
+  ];
+}
+
+
+var PartialEvaluator = (function PartialEvaluatorClosure() {
+  function PartialEvaluator(pdfManager, xref, handler, pageIndex,
+                            uniquePrefix, idCounters, fontCache) {
+    this.pdfManager = pdfManager;
+    this.xref = xref;
+    this.handler = handler;
+    this.pageIndex = pageIndex;
+    this.uniquePrefix = uniquePrefix;
+    this.idCounters = idCounters;
+    this.fontCache = fontCache;
+  }
+
+  // Trying to minimize Date.now() usage and check every 100 time
+  var TIME_SLOT_DURATION_MS = 20;
+  var CHECK_TIME_EVERY = 100;
+  function TimeSlotManager() {
+    this.reset();
+  }
+  TimeSlotManager.prototype = {
+    check: function TimeSlotManager_check() {
+      if (++this.checked < CHECK_TIME_EVERY) {
+        return false;
+      }
+      this.checked = 0;
+      return this.endTime <= Date.now();
+    },
+    reset: function TimeSlotManager_reset() {
+      this.endTime = Date.now() + TIME_SLOT_DURATION_MS;
+      this.checked = 0;
+    }
+  };
+
+  var deferred = Promise.resolve();
+
+  var TILING_PATTERN = 1, SHADING_PATTERN = 2;
+
+  PartialEvaluator.prototype = {
+    hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {
+      if (!isDict(resources)) {
+        return false;
+      }
+
+      var processed = Object.create(null);
+      if (resources.objId) {
+        processed[resources.objId] = true;
+      }
+
+      var nodes = [resources];
+      while (nodes.length) {
+        var key;
+        var node = nodes.shift();
+        // First check the current resources for blend modes.
+        var graphicStates = node.get('ExtGState');
+        if (isDict(graphicStates)) {
+          graphicStates = graphicStates.getAll();
+          for (key in graphicStates) {
+            var graphicState = graphicStates[key];
+            var bm = graphicState['BM'];
+            if (isName(bm) && bm.name !== 'Normal') {
+              return true;
+            }
+          }
+        }
+        // Descend into the XObjects to look for more resources and blend modes.
+        var xObjects = node.get('XObject');
+        if (!isDict(xObjects)) {
+          continue;
+        }
+        xObjects = xObjects.getAll();
+        for (key in xObjects) {
+          var xObject = xObjects[key];
+          if (!isStream(xObject)) {
+            continue;
+          }
+          if (xObject.dict.objId) {
+            if (processed[xObject.dict.objId]) {
+              // stream has objId and is processed already
+              continue;
+            }
+            processed[xObject.dict.objId] = true;
+          }
+          var xResources = xObject.dict.get('Resources');
+          // Checking objId to detect an infinite loop.
+          if (isDict(xResources) &&
+              (!xResources.objId || !processed[xResources.objId])) {
+            nodes.push(xResources);
+            if (xResources.objId) {
+              processed[xResources.objId] = true;
+            }
+          }
+        }
+      }
+      return false;
+    },
+
+    buildFormXObject: function PartialEvaluator_buildFormXObject(resources,
+                                                                 xobj, smask,
+                                                                 operatorList,
+                                                                 initialState) {
+      var matrix = xobj.dict.get('Matrix');
+      var bbox = xobj.dict.get('BBox');
+      var group = xobj.dict.get('Group');
+      if (group) {
+        var groupOptions = {
+          matrix: matrix,
+          bbox: bbox,
+          smask: smask,
+          isolated: false,
+          knockout: false
+        };
+
+        var groupSubtype = group.get('S');
+        var colorSpace;
+        if (isName(groupSubtype) && groupSubtype.name === 'Transparency') {
+          groupOptions.isolated = (group.get('I') || false);
+          groupOptions.knockout = (group.get('K') || false);
+          colorSpace = (group.has('CS') ?
+            ColorSpace.parse(group.get('CS'), this.xref, resources) : null);
+        }
+
+        if (smask && smask.backdrop) {
+          colorSpace = colorSpace || ColorSpace.singletons.rgb;
+          smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
+        }
+
+        operatorList.addOp(OPS.beginGroup, [groupOptions]);
+      }
+
+      operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]);
+
+      return this.getOperatorList(xobj,
+        (xobj.dict.get('Resources') || resources), operatorList, initialState).
+        then(function () {
+          operatorList.addOp(OPS.paintFormXObjectEnd, []);
+
+          if (group) {
+            operatorList.addOp(OPS.endGroup, [groupOptions]);
+          }
+        });
+    },
+
+    buildPaintImageXObject:
+        function PartialEvaluator_buildPaintImageXObject(resources, image,
+                                                         inline, operatorList,
+                                                         cacheKey, imageCache) {
+      var self = this;
+      var dict = image.dict;
+      var w = dict.get('Width', 'W');
+      var h = dict.get('Height', 'H');
+
+      if (!(w && isNum(w)) || !(h && isNum(h))) {
+        warn('Image dimensions are missing, or not numbers.');
+        return;
+      }
+      if (PDFJS.maxImageSize !== -1 && w * h > PDFJS.maxImageSize) {
+        warn('Image exceeded maximum allowed size and was removed.');
+        return;
+      }
+
+      var imageMask = (dict.get('ImageMask', 'IM') || false);
+      var imgData, args;
+      if (imageMask) {
+        // This depends on a tmpCanvas being filled with the
+        // current fillStyle, such that processing the pixel
+        // data can't be done here. Instead of creating a
+        // complete PDFImage, only read the information needed
+        // for later.
+
+        var width = dict.get('Width', 'W');
+        var height = dict.get('Height', 'H');
+        var bitStrideLength = (width + 7) >> 3;
+        var imgArray = image.getBytes(bitStrideLength * height);
+        var decode = dict.get('Decode', 'D');
+        var inverseDecode = (!!decode && decode[0] > 0);
+
+        imgData = PDFImage.createMask(imgArray, width, height,
+                                      image instanceof DecodeStream,
+                                      inverseDecode);
+        imgData.cached = true;
+        args = [imgData];
+        operatorList.addOp(OPS.paintImageMaskXObject, args);
+        if (cacheKey) {
+          imageCache[cacheKey] = {
+            fn: OPS.paintImageMaskXObject,
+            args: args
+          };
+        }
+        return;
+      }
+
+      var softMask = (dict.get('SMask', 'SM') || false);
+      var mask = (dict.get('Mask') || false);
+
+      var SMALL_IMAGE_DIMENSIONS = 200;
+      // Inlining small images into the queue as RGB data
+      if (inline && !softMask && !mask && !(image instanceof JpegStream) &&
+          (w + h) < SMALL_IMAGE_DIMENSIONS) {
+        var imageObj = new PDFImage(this.xref, resources, image,
+                                    inline, null, null);
+        // We force the use of RGBA_32BPP images here, because we can't handle
+        // any other kind.
+        imgData = imageObj.createImageData(/* forceRGBA = */ true);
+        operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);
+        return;
+      }
+
+      // If there is no imageMask, create the PDFImage and a lot
+      // of image processing can be done here.
+      var uniquePrefix = (this.uniquePrefix || '');
+      var objId = 'img_' + uniquePrefix + (++this.idCounters.obj);
+      operatorList.addDependency(objId);
+      args = [objId, w, h];
+
+      if (!softMask && !mask && image instanceof JpegStream &&
+          image.isNativelySupported(this.xref, resources)) {
+        // These JPEGs don't need any more processing so we can just send it.
+        operatorList.addOp(OPS.paintJpegXObject, args);
+        this.handler.send('obj',
+          [objId, this.pageIndex, 'JpegStream', image.getIR()]);
+        return;
+      }
+
+      PDFImage.buildImage(self.handler, self.xref, resources, image, inline).
+        then(function(imageObj) {
+          var imgData = imageObj.createImageData(/* forceRGBA = */ false);
+          self.handler.send('obj', [objId, self.pageIndex, 'Image', imgData],
+            [imgData.data.buffer]);
+        }).then(undefined, function (reason) {
+          warn('Unable to decode image: ' + reason);
+          self.handler.send('obj', [objId, self.pageIndex, 'Image', null]);
+        });
+
+      operatorList.addOp(OPS.paintImageXObject, args);
+      if (cacheKey) {
+        imageCache[cacheKey] = {
+          fn: OPS.paintImageXObject,
+          args: args
+        };
+      }
+    },
+
+    handleSMask: function PartialEvaluator_handleSmask(smask, resources,
+                                                       operatorList,
+                                                       stateManager) {
+      var smaskContent = smask.get('G');
+      var smaskOptions = {
+        subtype: smask.get('S').name,
+        backdrop: smask.get('BC')
+      };
+      return this.buildFormXObject(resources, smaskContent, smaskOptions,
+                            operatorList, stateManager.state.clone());
+    },
+
+    handleTilingType:
+        function PartialEvaluator_handleTilingType(fn, args, resources,
+                                                   pattern, patternDict,
+                                                   operatorList) {
+      // Create an IR of the pattern code.
+      var tilingOpList = new OperatorList();
+      return this.getOperatorList(pattern,
+        (patternDict.get('Resources') || resources), tilingOpList).
+        then(function () {
+          // Add the dependencies to the parent operator list so they are
+          // resolved before sub operator list is executed synchronously.
+          operatorList.addDependencies(tilingOpList.dependencies);
+          operatorList.addOp(fn, getTilingPatternIR({
+            fnArray: tilingOpList.fnArray,
+            argsArray: tilingOpList.argsArray
+          }, patternDict, args));
+        });
+    },
+
+    handleSetFont:
+        function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef,
+                                                operatorList, state) {
+      // TODO(mack): Not needed?
+      var fontName;
+      if (fontArgs) {
+        fontArgs = fontArgs.slice();
+        fontName = fontArgs[0].name;
+      }
+
+      var self = this;
+      return this.loadFont(fontName, fontRef, this.xref, resources).then(
+          function (translated) {
+        if (!translated.font.isType3Font) {
+          return translated;
+        }
+        return translated.loadType3Data(self, resources, operatorList).then(
+            function () {
+          return translated;
+        });
+      }).then(function (translated) {
+        state.font = translated.font;
+        translated.send(self.handler);
+        return translated.loadedName;
+      });
+    },
+
+    handleText: function PartialEvaluator_handleText(chars, state) {
+      var font = state.font;
+      var glyphs = font.charsToGlyphs(chars);
+      var isAddToPathSet = !!(state.textRenderingMode &
+                              TextRenderingMode.ADD_TO_PATH_FLAG);
+      if (font.data && (isAddToPathSet || PDFJS.disableFontFace)) {
+        var buildPath = function (fontChar) {
+          if (!font.renderer.hasBuiltPath(fontChar)) {
+            var path = font.renderer.getPathJs(fontChar);
+            this.handler.send('commonobj', [
+              font.loadedName + '_path_' + fontChar,
+              'FontPath',
+              path
+            ]);
+          }
+        }.bind(this);
+
+        for (var i = 0, ii = glyphs.length; i < ii; i++) {
+          var glyph = glyphs[i];
+          if (glyph === null) {
+            continue;
+          }
+          buildPath(glyph.fontChar);
+
+          // If the glyph has an accent we need to build a path for its
+          // fontChar too, otherwise CanvasGraphics_paintChar will fail.
+          var accent = glyph.accent;
+          if (accent && accent.fontChar) {
+            buildPath(accent.fontChar);
+          }
+        }
+      }
+
+      return glyphs;
+    },
+
+    setGState: function PartialEvaluator_setGState(resources, gState,
+                                                   operatorList, xref,
+                                                   stateManager) {
+      // This array holds the converted/processed state data.
+      var gStateObj = [];
+      var gStateMap = gState.map;
+      var self = this;
+      var promise = Promise.resolve();
+      for (var key in gStateMap) {
+        var value = gStateMap[key];
+        switch (key) {
+          case 'Type':
+            break;
+          case 'LW':
+          case 'LC':
+          case 'LJ':
+          case 'ML':
+          case 'D':
+          case 'RI':
+          case 'FL':
+          case 'CA':
+          case 'ca':
+            gStateObj.push([key, value]);
+            break;
+          case 'Font':
+            promise = promise.then(function () {
+              return self.handleSetFont(resources, null, value[0],
+                                        operatorList, stateManager.state).
+                then(function (loadedName) {
+                  operatorList.addDependency(loadedName);
+                  gStateObj.push([key, [loadedName, value[1]]]);
+                });
+            });
+            break;
+          case 'BM':
+            gStateObj.push([key, value]);
+            break;
+          case 'SMask':
+            if (isName(value) && value.name === 'None') {
+              gStateObj.push([key, false]);
+              break;
+            }
+            var dict = xref.fetchIfRef(value);
+            if (isDict(dict)) {
+              promise = promise.then(function () {
+                return self.handleSMask(dict, resources, operatorList,
+                                        stateManager);
+              });
+              gStateObj.push([key, true]);
+            } else {
+              warn('Unsupported SMask type');
+            }
+
+            break;
+          // Only generate info log messages for the following since
+          // they are unlikely to have a big impact on the rendering.
+          case 'OP':
+          case 'op':
+          case 'OPM':
+          case 'BG':
+          case 'BG2':
+          case 'UCR':
+          case 'UCR2':
+          case 'TR':
+          case 'TR2':
+          case 'HT':
+          case 'SM':
+          case 'SA':
+          case 'AIS':
+          case 'TK':
+            // TODO implement these operators.
+            info('graphic state operator ' + key);
+            break;
+          default:
+            info('Unknown graphic state operator ' + key);
+            break;
+        }
+      }
+      return promise.then(function () {
+        if (gStateObj.length >= 0) {
+          operatorList.addOp(OPS.setGState, [gStateObj]);
+        }
+      });
+    },
+
+    loadFont: function PartialEvaluator_loadFont(fontName, font, xref,
+                                                 resources) {
+
+      function errorFont() {
+        return Promise.resolve(new TranslatedFont('g_font_error',
+          new ErrorFont('Font ' + fontName + ' is not available'), font));
+      }
+      var fontRef;
+      if (font) { // Loading by ref.
+        assert(isRef(font));
+        fontRef = font;
+      } else { // Loading by name.
+        var fontRes = resources.get('Font');
+        if (fontRes) {
+          fontRef = fontRes.getRaw(fontName);
+        } else {
+          warn('fontRes not available');
+          return errorFont();
+        }
+      }
+      if (!fontRef) {
+        warn('fontRef not available');
+        return errorFont();
+      }
+
+      if (this.fontCache.has(fontRef)) {
+        return this.fontCache.get(fontRef);
+      }
+
+      font = xref.fetchIfRef(fontRef);
+      if (!isDict(font)) {
+        return errorFont();
+      }
+
+      // We are holding font.translated references just for fontRef that are not
+      // dictionaries (Dict). See explanation below.
+      if (font.translated) {
+        return font.translated;
+      }
+
+      var fontCapability = createPromiseCapability();
+
+      var preEvaluatedFont = this.preEvaluateFont(font, xref);
+      var descriptor = preEvaluatedFont.descriptor;
+      var fontID = fontRef.num + '_' + fontRef.gen;
+      if (isDict(descriptor)) {
+        if (!descriptor.fontAliases) {
+          descriptor.fontAliases = Object.create(null);
+        }
+
+        var fontAliases = descriptor.fontAliases;
+        var hash = preEvaluatedFont.hash;
+        if (fontAliases[hash]) {
+          var aliasFontRef = fontAliases[hash].aliasRef;
+          if (aliasFontRef && this.fontCache.has(aliasFontRef)) {
+            this.fontCache.putAlias(fontRef, aliasFontRef);
+            return this.fontCache.get(fontRef);
+          }
+        }
+
+        if (!fontAliases[hash]) {
+          fontAliases[hash] = {
+            fontID: Font.getFontID()
+          };
+        }
+
+        fontAliases[hash].aliasRef = fontRef;
+        fontID = fontAliases[hash].fontID;
+      }
+
+      // Workaround for bad PDF generators that don't reference fonts
+      // properly, i.e. by not using an object identifier.
+      // Check if the fontRef is a Dict (as opposed to a standard object),
+      // in which case we don't cache the font and instead reference it by
+      // fontName in font.loadedName below.
+      var fontRefIsDict = isDict(fontRef);
+      if (!fontRefIsDict) {
+        this.fontCache.put(fontRef, fontCapability.promise);
+      }
+
+      // Keep track of each font we translated so the caller can
+      // load them asynchronously before calling display on a page.
+      font.loadedName = 'g_font_' + (fontRefIsDict ?
+        fontName.replace(/\W/g, '') : fontID);
+
+      font.translated = fontCapability.promise;
+
+      // TODO move promises into translate font
+      var translatedPromise;
+      try {
+        translatedPromise = Promise.resolve(
+          this.translateFont(preEvaluatedFont, xref));
+      } catch (e) {
+        translatedPromise = Promise.reject(e);
+      }
+
+      translatedPromise.then(function (translatedFont) {
+        if (translatedFont.fontType !== undefined) {
+          var xrefFontStats = xref.stats.fontTypes;
+          xrefFontStats[translatedFont.fontType] = true;
+        }
+
+        fontCapability.resolve(new TranslatedFont(font.loadedName,
+          translatedFont, font));
+      }, function (reason) {
+        // TODO fontCapability.reject?
+        UnsupportedManager.notify(UNSUPPORTED_FEATURES.font);
+
+        try {
+          // error, but it's still nice to have font type reported
+          var descriptor = preEvaluatedFont.descriptor;
+          var fontFile3 = descriptor && descriptor.get('FontFile3');
+          var subtype = fontFile3 && fontFile3.get('Subtype');
+          var fontType = getFontType(preEvaluatedFont.type,
+                                     subtype && subtype.name);
+          var xrefFontStats = xref.stats.fontTypes;
+          xrefFontStats[fontType] = true;
+        } catch (ex) { }
+
+        fontCapability.resolve(new TranslatedFont(font.loadedName,
+          new ErrorFont(reason instanceof Error ? reason.message : reason),
+          font));
+      });
+      return fontCapability.promise;
+    },
+
+    buildPath: function PartialEvaluator_buildPath(operatorList, fn, args) {
+      var lastIndex = operatorList.length - 1;
+      if (!args) {
+        args = [];
+      }
+      if (lastIndex < 0 ||
+          operatorList.fnArray[lastIndex] !== OPS.constructPath) {
+        operatorList.addOp(OPS.constructPath, [[fn], args]);
+      } else {
+        var opArgs = operatorList.argsArray[lastIndex];
+        opArgs[0].push(fn);
+        Array.prototype.push.apply(opArgs[1], args);
+      }
+    },
+
+    handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args,
+          cs, patterns, resources, xref) {
+      // compile tiling patterns
+      var patternName = args[args.length - 1];
+      // SCN/scn applies patterns along with normal colors
+      var pattern;
+      if (isName(patternName) &&
+          (pattern = patterns.get(patternName.name))) {
+        var dict = (isStream(pattern) ? pattern.dict : pattern);
+        var typeNum = dict.get('PatternType');
+
+        if (typeNum === TILING_PATTERN) {
+          var color = cs.base ? cs.base.getRgb(args, 0) : null;
+          return this.handleTilingType(fn, color, resources, pattern,
+                                       dict, operatorList);
+        } else if (typeNum === SHADING_PATTERN) {
+          var shading = dict.get('Shading');
+          var matrix = dict.get('Matrix');
+          pattern = Pattern.parseShading(shading, matrix, xref, resources);
+          operatorList.addOp(fn, pattern.getIR());
+          return Promise.resolve();
+        } else {
+          return Promise.reject('Unknown PatternType: ' + typeNum);
+        }
+      }
+      // TODO shall we fail here?
+      operatorList.addOp(fn, args);
+      return Promise.resolve();
+    },
+
+    getOperatorList: function PartialEvaluator_getOperatorList(stream,
+                                                               resources,
+                                                               operatorList,
+                                                               initialState) {
+
+      var self = this;
+      var xref = this.xref;
+      var imageCache = {};
+
+      assert(operatorList);
+
+      resources = (resources || Dict.empty);
+      var xobjs = (resources.get('XObject') || Dict.empty);
+      var patterns = (resources.get('Pattern') || Dict.empty);
+      var stateManager = new StateManager(initialState || new EvalState());
+      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
+      var timeSlotManager = new TimeSlotManager();
+
+      return new Promise(function next(resolve, reject) {
+        timeSlotManager.reset();
+        var stop, operation = {}, i, ii, cs;
+        while (!(stop = timeSlotManager.check())) {
+          // The arguments parsed by read() are used beyond this loop, so we
+          // cannot reuse the same array on each iteration. Therefore we pass
+          // in |null| as the initial value (see the comment on
+          // EvaluatorPreprocessor_read() for why).
+          operation.args = null;
+          if (!(preprocessor.read(operation))) {
+            break;
+          }
+          var args = operation.args;
+          var fn = operation.fn;
+
+          switch (fn | 0) {
+            case OPS.paintXObject:
+              if (args[0].code) {
+                break;
+              }
+              // eagerly compile XForm objects
+              var name = args[0].name;
+              if (imageCache[name] !== undefined) {
+                operatorList.addOp(imageCache[name].fn, imageCache[name].args);
+                args = null;
+                continue;
+              }
+
+              var xobj = xobjs.get(name);
+              if (xobj) {
+                assert(isStream(xobj), 'XObject should be a stream');
+
+                var type = xobj.dict.get('Subtype');
+                assert(isName(type),
+                  'XObject should have a Name subtype');
+
+                if (type.name === 'Form') {
+                  stateManager.save();
+                  return self.buildFormXObject(resources, xobj, null,
+                                               operatorList,
+                                               stateManager.state.clone()).
+                    then(function () {
+                      stateManager.restore();
+                      next(resolve, reject);
+                    }, reject);
+                } else if (type.name === 'Image') {
+                  self.buildPaintImageXObject(resources, xobj, false,
+                    operatorList, name, imageCache);
+                  args = null;
+                  continue;
+                } else if (type.name === 'PS') {
+                  // PostScript XObjects are unused when viewing documents.
+                  // See section 4.7.1 of Adobe's PDF reference.
+                  info('Ignored XObject subtype PS');
+                  continue;
+                } else {
+                  error('Unhandled XObject subtype ' + type.name);
+                }
+              }
+              break;
+            case OPS.setFont:
+              var fontSize = args[1];
+              // eagerly collect all fonts
+              return self.handleSetFont(resources, args, null,
+                                        operatorList, stateManager.state).
+                then(function (loadedName) {
+                  operatorList.addDependency(loadedName);
+                  operatorList.addOp(OPS.setFont, [loadedName, fontSize]);
+                  next(resolve, reject);
+                }, reject);
+            case OPS.endInlineImage:
+              var cacheKey = args[0].cacheKey;
+              if (cacheKey) {
+                var cacheEntry = imageCache[cacheKey];
+                if (cacheEntry !== undefined) {
+                  operatorList.addOp(cacheEntry.fn, cacheEntry.args);
+                  args = null;
+                  continue;
+                }
+              }
+              self.buildPaintImageXObject(resources, args[0], true,
+                operatorList, cacheKey, imageCache);
+              args = null;
+              continue;
+            case OPS.showText:
+              args[0] = self.handleText(args[0], stateManager.state);
+              break;
+            case OPS.showSpacedText:
+              var arr = args[0];
+              var combinedGlyphs = [];
+              var arrLength = arr.length;
+              for (i = 0; i < arrLength; ++i) {
+                var arrItem = arr[i];
+                if (isString(arrItem)) {
+                  Array.prototype.push.apply(combinedGlyphs,
+                    self.handleText(arrItem, stateManager.state));
+                } else if (isNum(arrItem)) {
+                  combinedGlyphs.push(arrItem);
+                }
+              }
+              args[0] = combinedGlyphs;
+              fn = OPS.showText;
+              break;
+            case OPS.nextLineShowText:
+              operatorList.addOp(OPS.nextLine);
+              args[0] = self.handleText(args[0], stateManager.state);
+              fn = OPS.showText;
+              break;
+            case OPS.nextLineSetSpacingShowText:
+              operatorList.addOp(OPS.nextLine);
+              operatorList.addOp(OPS.setWordSpacing, [args.shift()]);
+              operatorList.addOp(OPS.setCharSpacing, [args.shift()]);
+              args[0] = self.handleText(args[0], stateManager.state);
+              fn = OPS.showText;
+              break;
+            case OPS.setTextRenderingMode:
+              stateManager.state.textRenderingMode = args[0];
+              break;
+
+            case OPS.setFillColorSpace:
+              stateManager.state.fillColorSpace =
+                ColorSpace.parse(args[0], xref, resources);
+              continue;
+            case OPS.setStrokeColorSpace:
+              stateManager.state.strokeColorSpace =
+                ColorSpace.parse(args[0], xref, resources);
+              continue;
+            case OPS.setFillColor:
+              cs = stateManager.state.fillColorSpace;
+              args = cs.getRgb(args, 0);
+              fn = OPS.setFillRGBColor;
+              break;
+            case OPS.setStrokeColor:
+              cs = stateManager.state.strokeColorSpace;
+              args = cs.getRgb(args, 0);
+              fn = OPS.setStrokeRGBColor;
+              break;
+            case OPS.setFillGray:
+              stateManager.state.fillColorSpace = ColorSpace.singletons.gray;
+              args = ColorSpace.singletons.gray.getRgb(args, 0);
+              fn = OPS.setFillRGBColor;
+              break;
+            case OPS.setStrokeGray:
+              stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;
+              args = ColorSpace.singletons.gray.getRgb(args, 0);
+              fn = OPS.setStrokeRGBColor;
+              break;
+            case OPS.setFillCMYKColor:
+              stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;
+              args = ColorSpace.singletons.cmyk.getRgb(args, 0);
+              fn = OPS.setFillRGBColor;
+              break;
+            case OPS.setStrokeCMYKColor:
+              stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;
+              args = ColorSpace.singletons.cmyk.getRgb(args, 0);
+              fn = OPS.setStrokeRGBColor;
+              break;
+            case OPS.setFillRGBColor:
+              stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;
+              args = ColorSpace.singletons.rgb.getRgb(args, 0);
+              break;
+            case OPS.setStrokeRGBColor:
+              stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;
+              args = ColorSpace.singletons.rgb.getRgb(args, 0);
+              break;
+            case OPS.setFillColorN:
+              cs = stateManager.state.fillColorSpace;
+              if (cs.name === 'Pattern') {
+                return self.handleColorN(operatorList, OPS.setFillColorN,
+                  args, cs, patterns, resources, xref).then(function() {
+                    next(resolve, reject);
+                  }, reject);
+              }
+              args = cs.getRgb(args, 0);
+              fn = OPS.setFillRGBColor;
+              break;
+            case OPS.setStrokeColorN:
+              cs = stateManager.state.strokeColorSpace;
+              if (cs.name === 'Pattern') {
+                return self.handleColorN(operatorList, OPS.setStrokeColorN,
+                  args, cs, patterns, resources, xref).then(function() {
+                    next(resolve, reject);
+                  }, reject);
+              }
+              args = cs.getRgb(args, 0);
+              fn = OPS.setStrokeRGBColor;
+              break;
+
+            case OPS.shadingFill:
+              var shadingRes = resources.get('Shading');
+              if (!shadingRes) {
+                error('No shading resource found');
+              }
+
+              var shading = shadingRes.get(args[0].name);
+              if (!shading) {
+                error('No shading object found');
+              }
+
+              var shadingFill = Pattern.parseShading(shading, null, xref,
+                resources);
+              var patternIR = shadingFill.getIR();
+              args = [patternIR];
+              fn = OPS.shadingFill;
+              break;
+            case OPS.setGState:
+              var dictName = args[0];
+              var extGState = resources.get('ExtGState');
+
+              if (!isDict(extGState) || !extGState.has(dictName.name)) {
+                break;
+              }
+
+              var gState = extGState.get(dictName.name);
+              return self.setGState(resources, gState, operatorList, xref,
+                stateManager).then(function() {
+                  next(resolve, reject);
+                }, reject);
+            case OPS.moveTo:
+            case OPS.lineTo:
+            case OPS.curveTo:
+            case OPS.curveTo2:
+            case OPS.curveTo3:
+            case OPS.closePath:
+              self.buildPath(operatorList, fn, args);
+              continue;
+            case OPS.rectangle:
+              self.buildPath(operatorList, fn, args);
+              continue;
+          }
+          operatorList.addOp(fn, args);
+        }
+        if (stop) {
+          deferred.then(function () {
+            next(resolve, reject);
+          });
+          return;
+        }
+        // Some PDFs don't close all restores inside object/form.
+        // Closing those for them.
+        for (i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
+          operatorList.addOp(OPS.restore, []);
+        }
+        resolve();
+      });
+    },
+
+    getTextContent: function PartialEvaluator_getTextContent(stream, resources,
+                                                             stateManager) {
+
+      stateManager = (stateManager || new StateManager(new TextState()));
+
+      var textContent = {
+        items: [],
+        styles: Object.create(null)
+      };
+      var bidiTexts = textContent.items;
+      var SPACE_FACTOR = 0.3;
+      var MULTI_SPACE_FACTOR = 1.5;
+
+      var self = this;
+      var xref = this.xref;
+
+      resources = (xref.fetchIfRef(resources) || Dict.empty);
+
+      // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.
+      var xobjs = null;
+      var xobjsCache = {};
+
+      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
+
+      var textState;
+
+      function newTextChunk() {
+        var font = textState.font;
+        if (!(font.loadedName in textContent.styles)) {
+          textContent.styles[font.loadedName] = {
+            fontFamily: font.fallbackName,
+            ascent: font.ascent,
+            descent: font.descent,
+            vertical: font.vertical
+          };
+        }
+        return {
+          // |str| is initially an array which we push individual chars to, and
+          // then runBidi() overwrites it with the final string.
+          str: [],
+          dir: null,
+          width: 0,
+          height: 0,
+          transform: null,
+          fontName: font.loadedName
+        };
+      }
+
+      function runBidi(textChunk) {
+        var str = textChunk.str.join('');
+        var bidiResult = PDFJS.bidi(str, -1, textState.font.vertical);
+        textChunk.str = bidiResult.str;
+        textChunk.dir = bidiResult.dir;
+        return textChunk;
+      }
+
+      function handleSetFont(fontName, fontRef) {
+        return self.loadFont(fontName, fontRef, xref, resources).
+          then(function (translated) {
+            textState.font = translated.font;
+            textState.fontMatrix = translated.font.fontMatrix ||
+              FONT_IDENTITY_MATRIX;
+          });
+      }
+
+      function buildTextGeometry(chars, textChunk) {
+        var font = textState.font;
+        textChunk = textChunk || newTextChunk();
+        if (!textChunk.transform) {
+          // 9.4.4 Text Space Details
+          var tsm = [textState.fontSize * textState.textHScale, 0,
+                     0, textState.fontSize,
+                     0, textState.textRise];
+          var trm = textChunk.transform = Util.transform(textState.ctm,
+                                    Util.transform(textState.textMatrix, tsm));
+          if (!font.vertical) {
+            textChunk.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);
+          } else {
+            textChunk.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);
+          }
+        }
+        var width = 0;
+        var height = 0;
+        var glyphs = font.charsToGlyphs(chars);
+        var defaultVMetrics = font.defaultVMetrics;
+        for (var i = 0; i < glyphs.length; i++) {
+          var glyph = glyphs[i];
+          if (!glyph) { // Previous glyph was a space.
+            width += textState.wordSpacing * textState.textHScale;
+            continue;
+          }
+          var vMetricX = null;
+          var vMetricY = null;
+          var glyphWidth = null;
+          if (font.vertical) {
+            if (glyph.vmetric) {
+              glyphWidth = glyph.vmetric[0];
+              vMetricX = glyph.vmetric[1];
+              vMetricY = glyph.vmetric[2];
+            } else {
+              glyphWidth = glyph.width;
+              vMetricX = glyph.width * 0.5;
+              vMetricY = defaultVMetrics[2];
+            }
+          } else {
+            glyphWidth = glyph.width;
+          }
+
+          var glyphUnicode = glyph.unicode;
+          if (NormalizedUnicodes[glyphUnicode] !== undefined) {
+            glyphUnicode = NormalizedUnicodes[glyphUnicode];
+          }
+          glyphUnicode = reverseIfRtl(glyphUnicode);
+
+          // The following will calculate the x and y of the individual glyphs.
+          // if (font.vertical) {
+          //   tsm[4] -= vMetricX * Math.abs(textState.fontSize) *
+          //             textState.fontMatrix[0];
+          //   tsm[5] -= vMetricY * textState.fontSize *
+          //             textState.fontMatrix[0];
+          // }
+          // var trm = Util.transform(textState.textMatrix, tsm);
+          // var pt = Util.applyTransform([trm[4], trm[5]], textState.ctm);
+          // var x = pt[0];
+          // var y = pt[1];
+
+          var tx = 0;
+          var ty = 0;
+          if (!font.vertical) {
+            var w0 = glyphWidth * textState.fontMatrix[0];
+            tx = (w0 * textState.fontSize + textState.charSpacing) *
+                 textState.textHScale;
+            width += tx;
+          } else {
+            var w1 = glyphWidth * textState.fontMatrix[0];
+            ty = w1 * textState.fontSize + textState.charSpacing;
+            height += ty;
+          }
+          textState.translateTextMatrix(tx, ty);
+
+          textChunk.str.push(glyphUnicode);
+        }
+
+        var a = textState.textLineMatrix[0];
+        var b = textState.textLineMatrix[1];
+        var scaleLineX = Math.sqrt(a * a + b * b);
+        a = textState.ctm[0];
+        b = textState.ctm[1];
+        var scaleCtmX = Math.sqrt(a * a + b * b);
+        if (!font.vertical) {
+          textChunk.width += width * scaleCtmX * scaleLineX;
+        } else {
+          textChunk.height += Math.abs(height * scaleCtmX * scaleLineX);
+        }
+        return textChunk;
+      }
+
+      var timeSlotManager = new TimeSlotManager();
+
+      return new Promise(function next(resolve, reject) {
+        timeSlotManager.reset();
+        var stop, operation = {}, args = [];
+        while (!(stop = timeSlotManager.check())) {
+          // The arguments parsed by read() are not used beyond this loop, so
+          // we can reuse the same array on every iteration, thus avoiding
+          // unnecessary allocations.
+          args.length = 0;
+          operation.args = args;
+          if (!(preprocessor.read(operation))) {
+            break;
+          }
+          textState = stateManager.state;
+          var fn = operation.fn;
+          args = operation.args;
+
+          switch (fn | 0) {
+            case OPS.setFont:
+              textState.fontSize = args[1];
+              return handleSetFont(args[0].name).then(function() {
+                next(resolve, reject);
+              }, reject);
+            case OPS.setTextRise:
+              textState.textRise = args[0];
+              break;
+            case OPS.setHScale:
+              textState.textHScale = args[0] / 100;
+              break;
+            case OPS.setLeading:
+              textState.leading = args[0];
+              break;
+            case OPS.moveText:
+              textState.translateTextLineMatrix(args[0], args[1]);
+              textState.textMatrix = textState.textLineMatrix.slice();
+              break;
+            case OPS.setLeadingMoveText:
+              textState.leading = -args[1];
+              textState.translateTextLineMatrix(args[0], args[1]);
+              textState.textMatrix = textState.textLineMatrix.slice();
+              break;
+            case OPS.nextLine:
+              textState.carriageReturn();
+              break;
+            case OPS.setTextMatrix:
+              textState.setTextMatrix(args[0], args[1], args[2], args[3],
+                args[4], args[5]);
+              textState.setTextLineMatrix(args[0], args[1], args[2], args[3],
+                args[4], args[5]);
+              break;
+            case OPS.setCharSpacing:
+              textState.charSpacing = args[0];
+              break;
+            case OPS.setWordSpacing:
+              textState.wordSpacing = args[0];
+              break;
+            case OPS.beginText:
+              textState.textMatrix = IDENTITY_MATRIX.slice();
+              textState.textLineMatrix = IDENTITY_MATRIX.slice();
+              break;
+            case OPS.showSpacedText:
+              var items = args[0];
+              var textChunk = newTextChunk();
+              var offset;
+              for (var j = 0, jj = items.length; j < jj; j++) {
+                if (typeof items[j] === 'string') {
+                  buildTextGeometry(items[j], textChunk);
+                } else {
+                  var val = items[j] / 1000;
+                  if (!textState.font.vertical) {
+                    offset = -val * textState.fontSize * textState.textHScale *
+                      textState.textMatrix[0];
+                    textState.translateTextMatrix(offset, 0);
+                    textChunk.width += offset;
+                  } else {
+                    offset = -val * textState.fontSize *
+                      textState.textMatrix[3];
+                    textState.translateTextMatrix(0, offset);
+                    textChunk.height += offset;
+                  }
+                  if (items[j] < 0 && textState.font.spaceWidth > 0) {
+                    var fakeSpaces = -items[j] / textState.font.spaceWidth;
+                    if (fakeSpaces > MULTI_SPACE_FACTOR) {
+                      fakeSpaces = Math.round(fakeSpaces);
+                      while (fakeSpaces--) {
+                        textChunk.str.push(' ');
+                      }
+                    } else if (fakeSpaces > SPACE_FACTOR) {
+                      textChunk.str.push(' ');
+                    }
+                  }
+                }
+              }
+              bidiTexts.push(runBidi(textChunk));
+              break;
+            case OPS.showText:
+              bidiTexts.push(runBidi(buildTextGeometry(args[0])));
+              break;
+            case OPS.nextLineShowText:
+              textState.carriageReturn();
+              bidiTexts.push(runBidi(buildTextGeometry(args[0])));
+              break;
+            case OPS.nextLineSetSpacingShowText:
+              textState.wordSpacing = args[0];
+              textState.charSpacing = args[1];
+              textState.carriageReturn();
+              bidiTexts.push(runBidi(buildTextGeometry(args[2])));
+              break;
+            case OPS.paintXObject:
+              if (args[0].code) {
+                break;
+              }
+
+              if (!xobjs) {
+                xobjs = (resources.get('XObject') || Dict.empty);
+              }
+
+              var name = args[0].name;
+              if (xobjsCache.key === name) {
+                if (xobjsCache.texts) {
+                  Util.appendToArray(bidiTexts, xobjsCache.texts.items);
+                  Util.extendObj(textContent.styles, xobjsCache.texts.styles);
+                }
+                break;
+              }
+
+              var xobj = xobjs.get(name);
+              if (!xobj) {
+                break;
+              }
+              assert(isStream(xobj), 'XObject should be a stream');
+
+              var type = xobj.dict.get('Subtype');
+              assert(isName(type),
+                'XObject should have a Name subtype');
+
+              if ('Form' !== type.name) {
+                xobjsCache.key = name;
+                xobjsCache.texts = null;
+                break;
+              }
+
+              stateManager.save();
+              var matrix = xobj.dict.get('Matrix');
+              if (isArray(matrix) && matrix.length === 6) {
+                stateManager.transform(matrix);
+              }
+
+              return self.getTextContent(xobj,
+                xobj.dict.get('Resources') || resources, stateManager).
+                then(function (formTextContent) {
+                  Util.appendToArray(bidiTexts, formTextContent.items);
+                  Util.extendObj(textContent.styles, formTextContent.styles);
+                  stateManager.restore();
+
+                  xobjsCache.key = name;
+                  xobjsCache.texts = formTextContent;
+
+                  next(resolve, reject);
+                }, reject);
+            case OPS.setGState:
+              var dictName = args[0];
+              var extGState = resources.get('ExtGState');
+
+              if (!isDict(extGState) || !extGState.has(dictName.name)) {
+                break;
+              }
+
+              var gsStateMap = extGState.get(dictName.name);
+              var gsStateFont = null;
+              for (var key in gsStateMap) {
+                if (key === 'Font') {
+                  assert(!gsStateFont);
+                  gsStateFont = gsStateMap[key];
+                }
+              }
+              if (gsStateFont) {
+                textState.fontSize = gsStateFont[1];
+                return handleSetFont(gsStateFont[0]).then(function() {
+                  next(resolve, reject);
+                }, reject);
+              }
+              break;
+          } // switch
+        } // while
+        if (stop) {
+          deferred.then(function () {
+            next(resolve, reject);
+          });
+          return;
+        }
+        resolve(textContent);
+      });
+    },
+
+    extractDataStructures: function
+      partialEvaluatorExtractDataStructures(dict, baseDict,
+                                            xref, properties) {
+      // 9.10.2
+      var toUnicode = (dict.get('ToUnicode') || baseDict.get('ToUnicode'));
+      if (toUnicode) {
+        properties.toUnicode = this.readToUnicode(toUnicode);
+      }
+      if (properties.composite) {
+        // CIDSystemInfo helps to match CID to glyphs
+        var cidSystemInfo = dict.get('CIDSystemInfo');
+        if (isDict(cidSystemInfo)) {
+          properties.cidSystemInfo = {
+            registry: cidSystemInfo.get('Registry'),
+            ordering: cidSystemInfo.get('Ordering'),
+            supplement: cidSystemInfo.get('Supplement')
+          };
+        }
+
+        var cidToGidMap = dict.get('CIDToGIDMap');
+        if (isStream(cidToGidMap)) {
+          properties.cidToGidMap = this.readCidToGidMap(cidToGidMap);
+        }
+      }
+
+      // Based on 9.6.6 of the spec the encoding can come from multiple places
+      // and depends on the font type. The base encoding and differences are
+      // read here, but the encoding that is actually used is chosen during
+      // glyph mapping in the font.
+      // TODO: Loading the built in encoding in the font would allow the
+      // differences to be merged in here not require us to hold on to it.
+      var differences = [];
+      var baseEncodingName = null;
+      var encoding;
+      if (dict.has('Encoding')) {
+        encoding = dict.get('Encoding');
+        if (isDict(encoding)) {
+          baseEncodingName = encoding.get('BaseEncoding');
+          baseEncodingName = (isName(baseEncodingName) ?
+                              baseEncodingName.name : null);
+          // Load the differences between the base and original
+          if (encoding.has('Differences')) {
+            var diffEncoding = encoding.get('Differences');
+            var index = 0;
+            for (var j = 0, jj = diffEncoding.length; j < jj; j++) {
+              var data = diffEncoding[j];
+              if (isNum(data)) {
+                index = data;
+              } else {
+                differences[index++] = data.name;
+              }
+            }
+          }
+        } else if (isName(encoding)) {
+          baseEncodingName = encoding.name;
+        } else {
+          error('Encoding is not a Name nor a Dict');
+        }
+        // According to table 114 if the encoding is a named encoding it must be
+        // one of these predefined encodings.
+        if ((baseEncodingName !== 'MacRomanEncoding' &&
+             baseEncodingName !== 'MacExpertEncoding' &&
+             baseEncodingName !== 'WinAnsiEncoding')) {
+          baseEncodingName = null;
+        }
+      }
+
+      if (baseEncodingName) {
+        properties.defaultEncoding = Encodings[baseEncodingName].slice();
+      } else {
+        encoding = (properties.type === 'TrueType' ?
+                    Encodings.WinAnsiEncoding : Encodings.StandardEncoding);
+        // The Symbolic attribute can be misused for regular fonts
+        // Heuristic: we have to check if the font is a standard one also
+        if (!!(properties.flags & FontFlags.Symbolic)) {
+          encoding = Encodings.MacRomanEncoding;
+          if (!properties.file) {
+            if (/Symbol/i.test(properties.name)) {
+              encoding = Encodings.SymbolSetEncoding;
+            } else if (/Dingbats/i.test(properties.name)) {
+              encoding = Encodings.ZapfDingbatsEncoding;
+            }
+          }
+        }
+        properties.defaultEncoding = encoding;
+      }
+
+      properties.differences = differences;
+      properties.baseEncodingName = baseEncodingName;
+      properties.dict = dict;
+    },
+
+    readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {
+      var cmap, cmapObj = toUnicode;
+      if (isName(cmapObj)) {
+        cmap = CMapFactory.create(cmapObj,
+          { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null);
+        if (cmap instanceof IdentityCMap) {
+          return new IdentityToUnicodeMap(0, 0xFFFF);
+        }
+        return new ToUnicodeMap(cmap.getMap());
+      } else if (isStream(cmapObj)) {
+        cmap = CMapFactory.create(cmapObj,
+          { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null);
+        if (cmap instanceof IdentityCMap) {
+          return new IdentityToUnicodeMap(0, 0xFFFF);
+        }
+        cmap = cmap.getMap();
+        // Convert UTF-16BE
+        // NOTE: cmap can be a sparse array, so use forEach instead of for(;;)
+        // to iterate over all keys.
+        cmap.forEach(function(token, i) {
+          var str = [];
+          for (var k = 0; k < token.length; k += 2) {
+            var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);
+            if ((w1 & 0xF800) !== 0xD800) { // w1 < 0xD800 || w1 > 0xDFFF
+              str.push(w1);
+              continue;
+            }
+            k += 2;
+            var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);
+            str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);
+          }
+          cmap[i] = String.fromCharCode.apply(String, str);
+        });
+        return new ToUnicodeMap(cmap);
+      }
+      return null;
+    },
+
+    readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) {
+      // Extract the encoding from the CIDToGIDMap
+      var glyphsData = cidToGidStream.getBytes();
+
+      // Set encoding 0 to later verify the font has an encoding
+      var result = [];
+      for (var j = 0, jj = glyphsData.length; j < jj; j++) {
+        var glyphID = (glyphsData[j++] << 8) | glyphsData[j];
+        if (glyphID === 0) {
+          continue;
+        }
+        var code = j >> 1;
+        result[code] = glyphID;
+      }
+      return result;
+    },
+
+    extractWidths: function PartialEvaluator_extractWidths(dict, xref,
+                                                           descriptor,
+                                                           properties) {
+      var glyphsWidths = [];
+      var defaultWidth = 0;
+      var glyphsVMetrics = [];
+      var defaultVMetrics;
+      var i, ii, j, jj, start, code, widths;
+      if (properties.composite) {
+        defaultWidth = dict.get('DW') || 1000;
+
+        widths = dict.get('W');
+        if (widths) {
+          for (i = 0, ii = widths.length; i < ii; i++) {
+            start = widths[i++];
+            code = xref.fetchIfRef(widths[i]);
+            if (isArray(code)) {
+              for (j = 0, jj = code.length; j < jj; j++) {
+                glyphsWidths[start++] = code[j];
+              }
+            } else {
+              var width = widths[++i];
+              for (j = start; j <= code; j++) {
+                glyphsWidths[j] = width;
+              }
+            }
+          }
+        }
+
+        if (properties.vertical) {
+          var vmetrics = (dict.get('DW2') || [880, -1000]);
+          defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];
+          vmetrics = dict.get('W2');
+          if (vmetrics) {
+            for (i = 0, ii = vmetrics.length; i < ii; i++) {
+              start = vmetrics[i++];
+              code = xref.fetchIfRef(vmetrics[i]);
+              if (isArray(code)) {
+                for (j = 0, jj = code.length; j < jj; j++) {
+                  glyphsVMetrics[start++] = [code[j++], code[j++], code[j]];
+                }
+              } else {
+                var vmetric = [vmetrics[++i], vmetrics[++i], vmetrics[++i]];
+                for (j = start; j <= code; j++) {
+                  glyphsVMetrics[j] = vmetric;
+                }
+              }
+            }
+          }
+        }
+      } else {
+        var firstChar = properties.firstChar;
+        widths = dict.get('Widths');
+        if (widths) {
+          j = firstChar;
+          for (i = 0, ii = widths.length; i < ii; i++) {
+            glyphsWidths[j++] = widths[i];
+          }
+          defaultWidth = (parseFloat(descriptor.get('MissingWidth')) || 0);
+        } else {
+          // Trying get the BaseFont metrics (see comment above).
+          var baseFontName = dict.get('BaseFont');
+          if (isName(baseFontName)) {
+            var metrics = this.getBaseFontMetrics(baseFontName.name);
+
+            glyphsWidths = this.buildCharCodeToWidth(metrics.widths,
+                                                     properties);
+            defaultWidth = metrics.defaultWidth;
+          }
+        }
+      }
+
+      // Heuristic: detection of monospace font by checking all non-zero widths
+      var isMonospace = true;
+      var firstWidth = defaultWidth;
+      for (var glyph in glyphsWidths) {
+        var glyphWidth = glyphsWidths[glyph];
+        if (!glyphWidth) {
+          continue;
+        }
+        if (!firstWidth) {
+          firstWidth = glyphWidth;
+          continue;
+        }
+        if (firstWidth !== glyphWidth) {
+          isMonospace = false;
+          break;
+        }
+      }
+      if (isMonospace) {
+        properties.flags |= FontFlags.FixedPitch;
+      }
+
+      properties.defaultWidth = defaultWidth;
+      properties.widths = glyphsWidths;
+      properties.defaultVMetrics = defaultVMetrics;
+      properties.vmetrics = glyphsVMetrics;
+    },
+
+    isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {
+      // Simulating descriptor flags attribute
+      var fontNameWoStyle = baseFontName.split('-')[0];
+      return (fontNameWoStyle in serifFonts) ||
+              (fontNameWoStyle.search(/serif/gi) !== -1);
+    },
+
+    getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {
+      var defaultWidth = 0;
+      var widths = [];
+      var monospace = false;
+      var lookupName = (stdFontMap[name] || name);
+
+      if (!(lookupName in Metrics)) {
+        // Use default fonts for looking up font metrics if the passed
+        // font is not a base font
+        if (this.isSerifFont(name)) {
+          lookupName = 'Times-Roman';
+        } else {
+          lookupName = 'Helvetica';
+        }
+      }
+      var glyphWidths = Metrics[lookupName];
+
+      if (isNum(glyphWidths)) {
+        defaultWidth = glyphWidths;
+        monospace = true;
+      } else {
+        widths = glyphWidths;
+      }
+
+      return {
+        defaultWidth: defaultWidth,
+        monospace: monospace,
+        widths: widths
+      };
+    },
+
+    buildCharCodeToWidth:
+        function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName,
+                                                        properties) {
+      var widths = Object.create(null);
+      var differences = properties.differences;
+      var encoding = properties.defaultEncoding;
+      for (var charCode = 0; charCode < 256; charCode++) {
+        if (charCode in differences &&
+            widthsByGlyphName[differences[charCode]]) {
+          widths[charCode] = widthsByGlyphName[differences[charCode]];
+          continue;
+        }
+        if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {
+          widths[charCode] = widthsByGlyphName[encoding[charCode]];
+          continue;
+        }
+      }
+      return widths;
+    },
+
+    preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict, xref) {
+      var baseDict = dict;
+      var type = dict.get('Subtype');
+      assert(isName(type), 'invalid font Subtype');
+
+      var composite = false;
+      var uint8array;
+      if (type.name === 'Type0') {
+        // If font is a composite
+        //  - get the descendant font
+        //  - set the type according to the descendant font
+        //  - get the FontDescriptor from the descendant font
+        var df = dict.get('DescendantFonts');
+        if (!df) {
+          error('Descendant fonts are not specified');
+        }
+        dict = (isArray(df) ? xref.fetchIfRef(df[0]) : df);
+
+        type = dict.get('Subtype');
+        assert(isName(type), 'invalid font Subtype');
+        composite = true;
+      }
+
+      var descriptor = dict.get('FontDescriptor');
+      if (descriptor) {
+        var hash = new MurmurHash3_64();
+        var encoding = baseDict.getRaw('Encoding');
+        if (isName(encoding)) {
+          hash.update(encoding.name);
+        } else if (isRef(encoding)) {
+          hash.update(encoding.num + '_' + encoding.gen);
+        } else if (isDict(encoding)) {
+          var keys = encoding.getKeys();
+          for (var i = 0, ii = keys.length; i < ii; i++) {
+            var entry = encoding.getRaw(keys[i]);
+            if (isName(entry)) {
+              hash.update(entry.name);
+            } else if (isRef(entry)) {
+              hash.update(entry.num + '_' + entry.gen);
+            } else if (isArray(entry)) { // 'Differences' entry.
+              // Ideally we should check the contents of the array, but to avoid
+              // parsing it here and then again in |extractDataStructures|,
+              // we only use the array length for now (fixes bug1157493.pdf).
+              hash.update(entry.length.toString());
+            }
+          }
+        }
+
+        var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');
+        if (isStream(toUnicode)) {
+          var stream = toUnicode.str || toUnicode;
+          uint8array = stream.buffer ?
+            new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) :
+            new Uint8Array(stream.bytes.buffer,
+                           stream.start, stream.end - stream.start);
+          hash.update(uint8array);
+
+        } else if (isName(toUnicode)) {
+          hash.update(toUnicode.name);
+        }
+
+        var widths = dict.get('Widths') || baseDict.get('Widths');
+        if (widths) {
+          uint8array = new Uint8Array(new Uint32Array(widths).buffer);
+          hash.update(uint8array);
+        }
+      }
+
+      return {
+        descriptor: descriptor,
+        dict: dict,
+        baseDict: baseDict,
+        composite: composite,
+        type: type.name,
+        hash: hash ? hash.hexdigest() : ''
+      };
+    },
+
+    translateFont: function PartialEvaluator_translateFont(preEvaluatedFont,
+                                                           xref) {
+      var baseDict = preEvaluatedFont.baseDict;
+      var dict = preEvaluatedFont.dict;
+      var composite = preEvaluatedFont.composite;
+      var descriptor = preEvaluatedFont.descriptor;
+      var type = preEvaluatedFont.type;
+      var maxCharIndex = (composite ? 0xFFFF : 0xFF);
+      var properties;
+
+      if (!descriptor) {
+        if (type === 'Type3') {
+          // FontDescriptor is only required for Type3 fonts when the document
+          // is a tagged pdf. Create a barbebones one to get by.
+          descriptor = new Dict(null);
+          descriptor.set('FontName', Name.get(type));
+        } else {
+          // Before PDF 1.5 if the font was one of the base 14 fonts, having a
+          // FontDescriptor was not required.
+          // This case is here for compatibility.
+          var baseFontName = dict.get('BaseFont');
+          if (!isName(baseFontName)) {
+            error('Base font is not specified');
+          }
+
+          // Using base font name as a font name.
+          baseFontName = baseFontName.name.replace(/[,_]/g, '-');
+          var metrics = this.getBaseFontMetrics(baseFontName);
+
+          // Simulating descriptor flags attribute
+          var fontNameWoStyle = baseFontName.split('-')[0];
+          var flags =
+            (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |
+            (metrics.monospace ? FontFlags.FixedPitch : 0) |
+            (symbolsFonts[fontNameWoStyle] ? FontFlags.Symbolic :
+                                             FontFlags.Nonsymbolic);
+
+          properties = {
+            type: type,
+            name: baseFontName,
+            widths: metrics.widths,
+            defaultWidth: metrics.defaultWidth,
+            flags: flags,
+            firstChar: 0,
+            lastChar: maxCharIndex
+          };
+          this.extractDataStructures(dict, dict, xref, properties);
+          properties.widths = this.buildCharCodeToWidth(metrics.widths,
+                                                        properties);
+          return new Font(baseFontName, null, properties);
+        }
+      }
+
+      // According to the spec if 'FontDescriptor' is declared, 'FirstChar',
+      // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem
+      // to ignore this rule when a variant of a standart font is used.
+      // TODO Fill the width array depending on which of the base font this is
+      // a variant.
+      var firstChar = (dict.get('FirstChar') || 0);
+      var lastChar = (dict.get('LastChar') || maxCharIndex);
+
+      var fontName = descriptor.get('FontName');
+      var baseFont = dict.get('BaseFont');
+      // Some bad PDFs have a string as the font name.
+      if (isString(fontName)) {
+        fontName = Name.get(fontName);
+      }
+      if (isString(baseFont)) {
+        baseFont = Name.get(baseFont);
+      }
+
+      if (type !== 'Type3') {
+        var fontNameStr = fontName && fontName.name;
+        var baseFontStr = baseFont && baseFont.name;
+        if (fontNameStr !== baseFontStr) {
+          info('The FontDescriptor\'s FontName is "' + fontNameStr +
+               '" but should be the same as the Font\'s BaseFont "' +
+               baseFontStr + '"');
+          // Workaround for cases where e.g. fontNameStr = 'Arial' and
+          // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).
+          if (fontNameStr && baseFontStr &&
+              baseFontStr.indexOf(fontNameStr) === 0) {
+            fontName = baseFont;
+          }
+        }
+      }
+      fontName = (fontName || baseFont);
+
+      assert(isName(fontName), 'invalid font name');
+
+      var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3');
+      if (fontFile) {
+        if (fontFile.dict) {
+          var subtype = fontFile.dict.get('Subtype');
+          if (subtype) {
+            subtype = subtype.name;
+          }
+          var length1 = fontFile.dict.get('Length1');
+          var length2 = fontFile.dict.get('Length2');
+        }
+      }
+
+      properties = {
+        type: type,
+        name: fontName.name,
+        subtype: subtype,
+        file: fontFile,
+        length1: length1,
+        length2: length2,
+        loadedName: baseDict.loadedName,
+        composite: composite,
+        wideChars: composite,
+        fixedPitch: false,
+        fontMatrix: (dict.get('FontMatrix') || FONT_IDENTITY_MATRIX),
+        firstChar: firstChar || 0,
+        lastChar: (lastChar || maxCharIndex),
+        bbox: descriptor.get('FontBBox'),
+        ascent: descriptor.get('Ascent'),
+        descent: descriptor.get('Descent'),
+        xHeight: descriptor.get('XHeight'),
+        capHeight: descriptor.get('CapHeight'),
+        flags: descriptor.get('Flags'),
+        italicAngle: descriptor.get('ItalicAngle'),
+        coded: false
+      };
+
+      if (composite) {
+        var cidEncoding = baseDict.get('Encoding');
+        if (isName(cidEncoding)) {
+          properties.cidEncoding = cidEncoding.name;
+        }
+        properties.cMap = CMapFactory.create(cidEncoding,
+          { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null);
+        properties.vertical = properties.cMap.vertical;
+      }
+      this.extractDataStructures(dict, baseDict, xref, properties);
+      this.extractWidths(dict, xref, descriptor, properties);
+
+      if (type === 'Type3') {
+        properties.isType3Font = true;
+      }
+
+      return new Font(fontName.name, fontFile, properties);
+    }
+  };
+
+  return PartialEvaluator;
+})();
+
+var TranslatedFont = (function TranslatedFontClosure() {
+  function TranslatedFont(loadedName, font, dict) {
+    this.loadedName = loadedName;
+    this.font = font;
+    this.dict = dict;
+    this.type3Loaded = null;
+    this.sent = false;
+  }
+  TranslatedFont.prototype = {
+    send: function (handler) {
+      if (this.sent) {
+        return;
+      }
+      var fontData = this.font.exportData();
+      handler.send('commonobj', [
+        this.loadedName,
+        'Font',
+        fontData
+      ]);
+      this.sent = true;
+    },
+    loadType3Data: function (evaluator, resources, parentOperatorList) {
+      assert(this.font.isType3Font);
+
+      if (this.type3Loaded) {
+        return this.type3Loaded;
+      }
+
+      var translatedFont = this.font;
+      var loadCharProcsPromise = Promise.resolve();
+      var charProcs = this.dict.get('CharProcs').getAll();
+      var fontResources = this.dict.get('Resources') || resources;
+      var charProcKeys = Object.keys(charProcs);
+      var charProcOperatorList = {};
+      for (var i = 0, n = charProcKeys.length; i < n; ++i) {
+        loadCharProcsPromise = loadCharProcsPromise.then(function (key) {
+          var glyphStream = charProcs[key];
+          var operatorList = new OperatorList();
+          return evaluator.getOperatorList(glyphStream, fontResources,
+                                           operatorList).then(function () {
+            charProcOperatorList[key] = operatorList.getIR();
+
+            // Add the dependencies to the parent operator list so they are
+            // resolved before sub operator list is executed synchronously.
+            parentOperatorList.addDependencies(operatorList.dependencies);
+          }, function (reason) {
+            warn('Type3 font resource \"' + key + '\" is not available');
+            var operatorList = new OperatorList();
+            charProcOperatorList[key] = operatorList.getIR();
+          });
+        }.bind(this, charProcKeys[i]));
+      }
+      this.type3Loaded = loadCharProcsPromise.then(function () {
+        translatedFont.charProcOperatorList = charProcOperatorList;
+      });
+      return this.type3Loaded;
+    }
+  };
+  return TranslatedFont;
+})();
+
+var OperatorList = (function OperatorListClosure() {
+  var CHUNK_SIZE = 1000;
+  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size
+
+  function getTransfers(queue) {
+    var transfers = [];
+    var fnArray = queue.fnArray, argsArray = queue.argsArray;
+    for (var i = 0, ii = queue.length; i < ii; i++) {
+      switch (fnArray[i]) {
+        case OPS.paintInlineImageXObject:
+        case OPS.paintInlineImageXObjectGroup:
+        case OPS.paintImageMaskXObject:
+          var arg = argsArray[i][0]; // first param in imgData
+          if (!arg.cached) {
+            transfers.push(arg.data.buffer);
+          }
+          break;
+      }
+    }
+    return transfers;
+  }
+
+  function OperatorList(intent, messageHandler, pageIndex) {
+    this.messageHandler = messageHandler;
+    this.fnArray = [];
+    this.argsArray = [];
+    this.dependencies = {};
+    this.pageIndex = pageIndex;
+    this.intent = intent;
+  }
+
+  OperatorList.prototype = {
+    get length() {
+      return this.argsArray.length;
+    },
+
+    addOp: function(fn, args) {
+      this.fnArray.push(fn);
+      this.argsArray.push(args);
+      if (this.messageHandler) {
+        if (this.fnArray.length >= CHUNK_SIZE) {
+          this.flush();
+        } else if (this.fnArray.length >= CHUNK_SIZE_ABOUT &&
+                   (fn === OPS.restore || fn === OPS.endText)) {
+          // heuristic to flush on boundary of restore or endText
+          this.flush();
+        }
+      }
+    },
+
+    addDependency: function(dependency) {
+      if (dependency in this.dependencies) {
+        return;
+      }
+      this.dependencies[dependency] = true;
+      this.addOp(OPS.dependency, [dependency]);
+    },
+
+    addDependencies: function(dependencies) {
+      for (var key in dependencies) {
+        this.addDependency(key);
+      }
+    },
+
+    addOpList: function(opList) {
+      Util.extendObj(this.dependencies, opList.dependencies);
+      for (var i = 0, ii = opList.length; i < ii; i++) {
+        this.addOp(opList.fnArray[i], opList.argsArray[i]);
+      }
+    },
+
+    getIR: function() {
+      return {
+        fnArray: this.fnArray,
+        argsArray: this.argsArray,
+        length: this.length
+      };
+    },
+
+    flush: function(lastChunk) {
+      if (this.intent !== 'oplist') {
+        new QueueOptimizer().optimize(this);
+      }
+      var transfers = getTransfers(this);
+      this.messageHandler.send('RenderPageChunk', {
+        operatorList: {
+          fnArray: this.fnArray,
+          argsArray: this.argsArray,
+          lastChunk: lastChunk,
+          length: this.length
+        },
+        pageIndex: this.pageIndex,
+        intent: this.intent
+      }, transfers);
+      this.dependencies = {};
+      this.fnArray.length = 0;
+      this.argsArray.length = 0;
+    }
+  };
+
+  return OperatorList;
+})();
+
+var StateManager = (function StateManagerClosure() {
+  function StateManager(initialState) {
+    this.state = initialState;
+    this.stateStack = [];
+  }
+  StateManager.prototype = {
+    save: function () {
+      var old = this.state;
+      this.stateStack.push(this.state);
+      this.state = old.clone();
+    },
+    restore: function () {
+      var prev = this.stateStack.pop();
+      if (prev) {
+        this.state = prev;
+      }
+    },
+    transform: function (args) {
+      this.state.ctm = Util.transform(this.state.ctm, args);
+    }
+  };
+  return StateManager;
+})();
+
+var TextState = (function TextStateClosure() {
+  function TextState() {
+    this.ctm = new Float32Array(IDENTITY_MATRIX);
+    this.fontSize = 0;
+    this.font = null;
+    this.fontMatrix = FONT_IDENTITY_MATRIX;
+    this.textMatrix = IDENTITY_MATRIX.slice();
+    this.textLineMatrix = IDENTITY_MATRIX.slice();
+    this.charSpacing = 0;
+    this.wordSpacing = 0;
+    this.leading = 0;
+    this.textHScale = 1;
+    this.textRise = 0;
+  }
+
+  TextState.prototype = {
+    setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {
+      var m = this.textMatrix;
+      m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f;
+    },
+    setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {
+      var m = this.textLineMatrix;
+      m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f;
+    },
+    translateTextMatrix: function TextState_translateTextMatrix(x, y) {
+      var m = this.textMatrix;
+      m[4] = m[0] * x + m[2] * y + m[4];
+      m[5] = m[1] * x + m[3] * y + m[5];
+    },
+    translateTextLineMatrix: function TextState_translateTextMatrix(x, y) {
+      var m = this.textLineMatrix;
+      m[4] = m[0] * x + m[2] * y + m[4];
+      m[5] = m[1] * x + m[3] * y + m[5];
+    },
+    calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {
+      // 9.4.4 Text Space Details
+      var tsm = [this.fontSize * this.textHScale, 0,
+                0, this.fontSize,
+                0, this.textRise];
+      return Util.transform(ctm, Util.transform(this.textMatrix, tsm));
+    },
+    carriageReturn: function TextState_carriageReturn() {
+      this.translateTextLineMatrix(0, -this.leading);
+      this.textMatrix = this.textLineMatrix.slice();
+    },
+    clone: function TextState_clone() {
+      var clone = Object.create(this);
+      clone.textMatrix = this.textMatrix.slice();
+      clone.textLineMatrix = this.textLineMatrix.slice();
+      clone.fontMatrix = this.fontMatrix.slice();
+      return clone;
+    }
+  };
+  return TextState;
+})();
+
+var EvalState = (function EvalStateClosure() {
+  function EvalState() {
+    this.ctm = new Float32Array(IDENTITY_MATRIX);
+    this.font = null;
+    this.textRenderingMode = TextRenderingMode.FILL;
+    this.fillColorSpace = ColorSpace.singletons.gray;
+    this.strokeColorSpace = ColorSpace.singletons.gray;
+  }
+  EvalState.prototype = {
+    clone: function CanvasExtraState_clone() {
+      return Object.create(this);
+    },
+  };
+  return EvalState;
+})();
+
+var EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() {
+  // Specifies properties for each command
+  //
+  // If variableArgs === true: [0, `numArgs`] expected
+  // If variableArgs === false: exactly `numArgs` expected
+  var OP_MAP = {
+    // Graphic state
+    w: { id: OPS.setLineWidth, numArgs: 1, variableArgs: false },
+    J: { id: OPS.setLineCap, numArgs: 1, variableArgs: false },
+    j: { id: OPS.setLineJoin, numArgs: 1, variableArgs: false },
+    M: { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false },
+    d: { id: OPS.setDash, numArgs: 2, variableArgs: false },
+    ri: { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false },
+    i: { id: OPS.setFlatness, numArgs: 1, variableArgs: false },
+    gs: { id: OPS.setGState, numArgs: 1, variableArgs: false },
+    q: { id: OPS.save, numArgs: 0, variableArgs: false },
+    Q: { id: OPS.restore, numArgs: 0, variableArgs: false },
+    cm: { id: OPS.transform, numArgs: 6, variableArgs: false },
+
+    // Path
+    m: { id: OPS.moveTo, numArgs: 2, variableArgs: false },
+    l: { id: OPS.lineTo, numArgs: 2, variableArgs: false },
+    c: { id: OPS.curveTo, numArgs: 6, variableArgs: false },
+    v: { id: OPS.curveTo2, numArgs: 4, variableArgs: false },
+    y: { id: OPS.curveTo3, numArgs: 4, variableArgs: false },
+    h: { id: OPS.closePath, numArgs: 0, variableArgs: false },
+    re: { id: OPS.rectangle, numArgs: 4, variableArgs: false },
+    S: { id: OPS.stroke, numArgs: 0, variableArgs: false },
+    s: { id: OPS.closeStroke, numArgs: 0, variableArgs: false },
+    f: { id: OPS.fill, numArgs: 0, variableArgs: false },
+    F: { id: OPS.fill, numArgs: 0, variableArgs: false },
+    'f*': { id: OPS.eoFill, numArgs: 0, variableArgs: false },
+    B: { id: OPS.fillStroke, numArgs: 0, variableArgs: false },
+    'B*': { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false },
+    b: { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false },
+    'b*': { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false },
+    n: { id: OPS.endPath, numArgs: 0, variableArgs: false },
+
+    // Clipping
+    W: { id: OPS.clip, numArgs: 0, variableArgs: false },
+    'W*': { id: OPS.eoClip, numArgs: 0, variableArgs: false },
+
+    // Text
+    BT: { id: OPS.beginText, numArgs: 0, variableArgs: false },
+    ET: { id: OPS.endText, numArgs: 0, variableArgs: false },
+    Tc: { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false },
+    Tw: { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false },
+    Tz: { id: OPS.setHScale, numArgs: 1, variableArgs: false },
+    TL: { id: OPS.setLeading, numArgs: 1, variableArgs: false },
+    Tf: { id: OPS.setFont, numArgs: 2, variableArgs: false },
+    Tr: { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false },
+    Ts: { id: OPS.setTextRise, numArgs: 1, variableArgs: false },
+    Td: { id: OPS.moveText, numArgs: 2, variableArgs: false },
+    TD: { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false },
+    Tm: { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false },
+    'T*': { id: OPS.nextLine, numArgs: 0, variableArgs: false },
+    Tj: { id: OPS.showText, numArgs: 1, variableArgs: false },
+    TJ: { id: OPS.showSpacedText, numArgs: 1, variableArgs: false },
+    '\'': { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false },
+    '"': { id: OPS.nextLineSetSpacingShowText, numArgs: 3,
+           variableArgs: false },
+
+    // Type3 fonts
+    d0: { id: OPS.setCharWidth, numArgs: 2, variableArgs: false },
+    d1: { id: OPS.setCharWidthAndBounds, numArgs: 6, variableArgs: false },
+
+    // Color
+    CS: { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false },
+    cs: { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false },
+    SC: { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true },
+    SCN: { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true },
+    sc: { id: OPS.setFillColor, numArgs: 4, variableArgs: true },
+    scn: { id: OPS.setFillColorN, numArgs: 33, variableArgs: true },
+    G: { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false },
+    g: { id: OPS.setFillGray, numArgs: 1, variableArgs: false },
+    RG: { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false },
+    rg: { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false },
+    K: { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false },
+    k: { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false },
+
+    // Shading
+    sh: { id: OPS.shadingFill, numArgs: 1, variableArgs: false },
+
+    // Images
+    BI: { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false },
+    ID: { id: OPS.beginImageData, numArgs: 0, variableArgs: false },
+    EI: { id: OPS.endInlineImage, numArgs: 1, variableArgs: false },
+
+    // XObjects
+    Do: { id: OPS.paintXObject, numArgs: 1, variableArgs: false },
+    MP: { id: OPS.markPoint, numArgs: 1, variableArgs: false },
+    DP: { id: OPS.markPointProps, numArgs: 2, variableArgs: false },
+    BMC: { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false },
+    BDC: { id: OPS.beginMarkedContentProps, numArgs: 2,
+           variableArgs: false },
+    EMC: { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false },
+
+    // Compatibility
+    BX: { id: OPS.beginCompat, numArgs: 0, variableArgs: false },
+    EX: { id: OPS.endCompat, numArgs: 0, variableArgs: false },
+
+    // (reserved partial commands for the lexer)
+    BM: null,
+    BD: null,
+    'true': null,
+    fa: null,
+    fal: null,
+    fals: null,
+    'false': null,
+    nu: null,
+    nul: null,
+    'null': null
+  };
+
+  function EvaluatorPreprocessor(stream, xref, stateManager) {
+    // TODO(mduan): pass array of knownCommands rather than OP_MAP
+    // dictionary
+    this.parser = new Parser(new Lexer(stream, OP_MAP), false, xref);
+    this.stateManager = stateManager;
+    this.nonProcessedArgs = [];
+  }
+
+  EvaluatorPreprocessor.prototype = {
+    get savedStatesDepth() {
+      return this.stateManager.stateStack.length;
+    },
+
+    // |operation| is an object with two fields:
+    //
+    // - |fn| is an out param.
+    //
+    // - |args| is an inout param. On entry, it should have one of two values.
+    //
+    //   - An empty array. This indicates that the caller is providing the
+    //     array in which the args will be stored in. The caller should use
+    //     this value if it can reuse a single array for each call to read().
+    //
+    //   - |null|. This indicates that the caller needs this function to create
+    //     the array in which any args are stored in. If there are zero args,
+    //     this function will leave |operation.args| as |null| (thus avoiding
+    //     allocations that would occur if we used an empty array to represent
+    //     zero arguments). Otherwise, it will replace |null| with a new array
+    //     containing the arguments. The caller should use this value if it
+    //     cannot reuse an array for each call to read().
+    //
+    // These two modes are present because this function is very hot and so
+    // avoiding allocations where possible is worthwhile.
+    //
+    read: function EvaluatorPreprocessor_read(operation) {
+      var args = operation.args;
+      while (true) {
+        var obj = this.parser.getObj();
+        if (isCmd(obj)) {
+          var cmd = obj.cmd;
+          // Check that the command is valid
+          var opSpec = OP_MAP[cmd];
+          if (!opSpec) {
+            warn('Unknown command "' + cmd + '"');
+            continue;
+          }
+
+          var fn = opSpec.id;
+          var numArgs = opSpec.numArgs;
+          var argsLength = args !== null ? args.length : 0;
+
+          if (!opSpec.variableArgs) {
+            // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf
+            if (argsLength !== numArgs) {
+              var nonProcessedArgs = this.nonProcessedArgs;
+              while (argsLength > numArgs) {
+                nonProcessedArgs.push(args.shift());
+                argsLength--;
+              }
+              while (argsLength < numArgs && nonProcessedArgs.length !== 0) {
+                if (!args) {
+                  args = [];
+                }
+                args.unshift(nonProcessedArgs.pop());
+                argsLength++;
+              }
+            }
+
+            if (argsLength < numArgs) {
+              // If we receive too few args, it's not possible to possible
+              // to execute the command, so skip the command
+              info('Command ' + fn + ': because expected ' +
+                   numArgs + ' args, but received ' + argsLength +
+                   ' args; skipping');
+              args = null;
+              continue;
+            }
+          } else if (argsLength > numArgs) {
+            info('Command ' + fn + ': expected [0,' + numArgs +
+                 '] args, but received ' + argsLength + ' args');
+          }
+
+          // TODO figure out how to type-check vararg functions
+          this.preprocessCommand(fn, args);
+
+          operation.fn = fn;
+          operation.args = args;
+          return true;
+        } else {
+          if (isEOF(obj)) {
+            return false; // no more commands
+          }
+          // argument
+          if (obj !== null) {
+            if (!args) {
+              args = [];
+            }
+            args.push((obj instanceof Dict ? obj.getAll() : obj));
+            assert(args.length <= 33, 'Too many arguments');
+          }
+        }
+      }
+    },
+
+    preprocessCommand:
+        function EvaluatorPreprocessor_preprocessCommand(fn, args) {
+      switch (fn | 0) {
+        case OPS.save:
+          this.stateManager.save();
+          break;
+        case OPS.restore:
+          this.stateManager.restore();
+          break;
+        case OPS.transform:
+          this.stateManager.transform(args);
+          break;
+      }
+    }
+  };
+  return EvaluatorPreprocessor;
+})();
+
+var QueueOptimizer = (function QueueOptimizerClosure() {
+  function addState(parentState, pattern, fn) {
+    var state = parentState;
+    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {
+      var item = pattern[i];
+      state = (state[item] || (state[item] = []));
+    }
+    state[pattern[pattern.length - 1]] = fn;
+  }
+
+  function handlePaintSolidColorImageMask(iFirstSave, count, fnArray,
+                                          argsArray) {
+    // Handles special case of mainly LaTeX documents which use image masks to
+    // draw lines with the current fill style.
+    // 'count' groups of (save, transform, paintImageMaskXObject, restore)+
+    // have been found at iFirstSave.
+    var iFirstPIMXO = iFirstSave + 2;
+    for (var i = 0; i < count; i++) {
+      var arg = argsArray[iFirstPIMXO + 4 * i];
+      var imageMask = arg.length === 1 && arg[0];
+      if (imageMask && imageMask.width === 1 && imageMask.height === 1 &&
+          (!imageMask.data.length ||
+           (imageMask.data.length === 1 && imageMask.data[0] === 0))) {
+        fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;
+        continue;
+      }
+      break;
+    }
+    return count - i;
+  }
+
+  var InitialState = [];
+
+  // This replaces (save, transform, paintInlineImageXObject, restore)+
+  // sequences with one |paintInlineImageXObjectGroup| operation.
+  addState(InitialState,
+    [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],
+    function foundInlineImageGroup(context) {
+      var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;
+      var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;
+      var MAX_WIDTH = 1000;
+      var IMAGE_PADDING = 1;
+
+      var fnArray = context.fnArray, argsArray = context.argsArray;
+      var curr = context.iCurr;
+      var iFirstSave = curr - 3;
+      var iFirstTransform = curr - 2;
+      var iFirstPIIXO = curr - 1;
+
+      // Look for the quartets.
+      var i = iFirstSave + 4;
+      var ii = fnArray.length;
+      while (i + 3 < ii) {
+        if (fnArray[i] !== OPS.save ||
+            fnArray[i + 1] !== OPS.transform ||
+            fnArray[i + 2] !== OPS.paintInlineImageXObject ||
+            fnArray[i + 3] !== OPS.restore) {
+          break;    // ops don't match
+        }
+        i += 4;
+      }
+
+      // At this point, i is the index of the first op past the last valid
+      // quartet.
+      var count = Math.min((i - iFirstSave) / 4,
+                           MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);
+      if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {
+        return i;
+      }
+
+      // assuming that heights of those image is too small (~1 pixel)
+      // packing as much as possible by lines
+      var maxX = 0;
+      var map = [], maxLineHeight = 0;
+      var currentX = IMAGE_PADDING, currentY = IMAGE_PADDING;
+      var q;
+      for (q = 0; q < count; q++) {
+        var transform = argsArray[iFirstTransform + (q << 2)];
+        var img = argsArray[iFirstPIIXO + (q << 2)][0];
+        if (currentX + img.width > MAX_WIDTH) {
+          // starting new line
+          maxX = Math.max(maxX, currentX);
+          currentY += maxLineHeight + 2 * IMAGE_PADDING;
+          currentX = 0;
+          maxLineHeight = 0;
+        }
+        map.push({
+          transform: transform,
+          x: currentX, y: currentY,
+          w: img.width, h: img.height
+        });
+        currentX += img.width + 2 * IMAGE_PADDING;
+        maxLineHeight = Math.max(maxLineHeight, img.height);
+      }
+      var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
+      var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
+      var imgData = new Uint8Array(imgWidth * imgHeight * 4);
+      var imgRowSize = imgWidth << 2;
+      for (q = 0; q < count; q++) {
+        var data = argsArray[iFirstPIIXO + (q << 2)][0].data;
+        // Copy image by lines and extends pixels into padding.
+        var rowSize = map[q].w << 2;
+        var dataOffset = 0;
+        var offset = (map[q].x + map[q].y * imgWidth) << 2;
+        imgData.set(data.subarray(0, rowSize), offset - imgRowSize);
+        for (var k = 0, kk = map[q].h; k < kk; k++) {
+          imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);
+          dataOffset += rowSize;
+          offset += imgRowSize;
+        }
+        imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);
+        while (offset >= 0) {
+          data[offset - 4] = data[offset];
+          data[offset - 3] = data[offset + 1];
+          data[offset - 2] = data[offset + 2];
+          data[offset - 1] = data[offset + 3];
+          data[offset + rowSize] = data[offset + rowSize - 4];
+          data[offset + rowSize + 1] = data[offset + rowSize - 3];
+          data[offset + rowSize + 2] = data[offset + rowSize - 2];
+          data[offset + rowSize + 3] = data[offset + rowSize - 1];
+          offset -= imgRowSize;
+        }
+      }
+
+      // Replace queue items.
+      fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);
+      argsArray.splice(iFirstSave, count * 4,
+        [{ width: imgWidth, height: imgHeight, kind: ImageKind.RGBA_32BPP,
+           data: imgData }, map]);
+
+      return iFirstSave + 1;
+    });
+
+  // This replaces (save, transform, paintImageMaskXObject, restore)+
+  // sequences with one |paintImageMaskXObjectGroup| or one
+  // |paintImageMaskXObjectRepeat| operation.
+  addState(InitialState,
+    [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],
+    function foundImageMaskGroup(context) {
+      var MIN_IMAGES_IN_MASKS_BLOCK = 10;
+      var MAX_IMAGES_IN_MASKS_BLOCK = 100;
+      var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;
+
+      var fnArray = context.fnArray, argsArray = context.argsArray;
+      var curr = context.iCurr;
+      var iFirstSave = curr - 3;
+      var iFirstTransform = curr - 2;
+      var iFirstPIMXO = curr - 1;
+
+      // Look for the quartets.
+      var i = iFirstSave + 4;
+      var ii = fnArray.length;
+      while (i + 3 < ii) {
+        if (fnArray[i] !== OPS.save ||
+            fnArray[i + 1] !== OPS.transform ||
+            fnArray[i + 2] !== OPS.paintImageMaskXObject ||
+            fnArray[i + 3] !== OPS.restore) {
+          break;    // ops don't match
+        }
+        i += 4;
+      }
+
+      // At this point, i is the index of the first op past the last valid
+      // quartet.
+      var count = (i - iFirstSave) / 4;
+      count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray,
+                                             argsArray);
+      if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
+        return i;
+      }
+
+      var q;
+      var isSameImage = false;
+      var iTransform, transformArgs;
+      var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
+      if (argsArray[iFirstTransform][1] === 0 &&
+          argsArray[iFirstTransform][2] === 0) {
+        isSameImage = true;
+        var firstTransformArg0 = argsArray[iFirstTransform][0];
+        var firstTransformArg3 = argsArray[iFirstTransform][3];
+        iTransform = iFirstTransform + 4;
+        var iPIMXO = iFirstPIMXO + 4;
+        for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
+          transformArgs = argsArray[iTransform];
+          if (argsArray[iPIMXO][0] !== firstPIMXOArg0 ||
+              transformArgs[0] !== firstTransformArg0 ||
+              transformArgs[1] !== 0 ||
+              transformArgs[2] !== 0 ||
+              transformArgs[3] !== firstTransformArg3) {
+            if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
+              isSameImage = false;
+            } else {
+              count = q;
+            }
+            break; // different image or transform
+          }
+        }
+      }
+
+      if (isSameImage) {
+        count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);
+        var positions = new Float32Array(count * 2);
+        iTransform = iFirstTransform;
+        for (q = 0; q < count; q++, iTransform += 4) {
+          transformArgs = argsArray[iTransform];
+          positions[(q << 1)] = transformArgs[4];
+          positions[(q << 1) + 1] = transformArgs[5];
+        }
+
+        // Replace queue items.
+        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);
+        argsArray.splice(iFirstSave, count * 4,
+          [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);
+      } else {
+        count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
+        var images = [];
+        for (q = 0; q < count; q++) {
+          transformArgs = argsArray[iFirstTransform + (q << 2)];
+          var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];
+          images.push({ data: maskParams.data, width: maskParams.width,
+                        height: maskParams.height,
+                        transform: transformArgs });
+        }
+
+        // Replace queue items.
+        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);
+        argsArray.splice(iFirstSave, count * 4, [images]);
+      }
+
+      return iFirstSave + 1;
+    });
+
+  // This replaces (save, transform, paintImageXObject, restore)+ sequences
+  // with one paintImageXObjectRepeat operation, if the |transform| and
+  // |paintImageXObjectRepeat| ops are appropriate.
+  addState(InitialState,
+    [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],
+    function (context) {
+      var MIN_IMAGES_IN_BLOCK = 3;
+      var MAX_IMAGES_IN_BLOCK = 1000;
+
+      var fnArray = context.fnArray, argsArray = context.argsArray;
+      var curr = context.iCurr;
+      var iFirstSave = curr - 3;
+      var iFirstTransform = curr - 2;
+      var iFirstPIXO = curr - 1;
+      var iFirstRestore = curr;
+
+      if (argsArray[iFirstTransform][1] !== 0 ||
+          argsArray[iFirstTransform][2] !== 0) {
+        return iFirstRestore + 1;   // transform has the wrong form
+      }
+
+      // Look for the quartets.
+      var firstPIXOArg0 = argsArray[iFirstPIXO][0];
+      var firstTransformArg0 = argsArray[iFirstTransform][0];
+      var firstTransformArg3 = argsArray[iFirstTransform][3];
+      var i = iFirstSave + 4;
+      var ii = fnArray.length;
+      while (i + 3 < ii) {
+        if (fnArray[i] !== OPS.save ||
+            fnArray[i + 1] !== OPS.transform ||
+            fnArray[i + 2] !== OPS.paintImageXObject ||
+            fnArray[i + 3] !== OPS.restore) {
+          break;    // ops don't match
+        }
+        if (argsArray[i + 1][0] !== firstTransformArg0 ||
+            argsArray[i + 1][1] !== 0 ||
+            argsArray[i + 1][2] !== 0 ||
+            argsArray[i + 1][3] !== firstTransformArg3) {
+          break;    // transforms don't match
+        }
+        if (argsArray[i + 2][0] !== firstPIXOArg0) {
+          break;    // images don't match
+        }
+        i += 4;
+      }
+
+      // At this point, i is the index of the first op past the last valid
+      // quartet.
+      var count = Math.min((i - iFirstSave) / 4, MAX_IMAGES_IN_BLOCK);
+      if (count < MIN_IMAGES_IN_BLOCK) {
+        return i;
+      }
+
+      // Extract the (x,y) positions from all of the matching transforms.
+      var positions = new Float32Array(count * 2);
+      var iTransform = iFirstTransform;
+      for (var q = 0; q < count; q++, iTransform += 4) {
+        var transformArgs = argsArray[iTransform];
+        positions[(q << 1)] = transformArgs[4];
+        positions[(q << 1) + 1] = transformArgs[5];
+      }
+
+      // Replace queue items.
+      var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3,
+                  positions];
+      fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);
+      argsArray.splice(iFirstSave, count * 4, args);
+
+      return iFirstSave + 1;
+    });
+
+  // This replaces (beginText, setFont, setTextMatrix, showText, endText)+
+  // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+
+  // sequences, if the font for each one is the same.
+  addState(InitialState,
+    [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],
+    function (context) {
+      var MIN_CHARS_IN_BLOCK = 3;
+      var MAX_CHARS_IN_BLOCK = 1000;
+
+      var fnArray = context.fnArray, argsArray = context.argsArray;
+      var curr = context.iCurr;
+      var iFirstBeginText = curr - 4;
+      var iFirstSetFont = curr - 3;
+      var iFirstSetTextMatrix = curr - 2;
+      var iFirstShowText = curr - 1;
+      var iFirstEndText = curr;
+
+      // Look for the quintets.
+      var firstSetFontArg0 = argsArray[iFirstSetFont][0];
+      var firstSetFontArg1 = argsArray[iFirstSetFont][1];
+      var i = iFirstBeginText + 5;
+      var ii = fnArray.length;
+      while (i + 4 < ii) {
+        if (fnArray[i] !== OPS.beginText ||
+            fnArray[i + 1] !== OPS.setFont ||
+            fnArray[i + 2] !== OPS.setTextMatrix ||
+            fnArray[i + 3] !== OPS.showText ||
+            fnArray[i + 4] !== OPS.endText) {
+          break;    // ops don't match
+        }
+        if (argsArray[i + 1][0] !== firstSetFontArg0 ||
+            argsArray[i + 1][1] !== firstSetFontArg1) {
+          break;    // fonts don't match
+        }
+        i += 5;
+      }
+
+      // At this point, i is the index of the first op past the last valid
+      // quintet.
+      var count = Math.min(((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);
+      if (count < MIN_CHARS_IN_BLOCK) {
+        return i;
+      }
+
+      // If the preceding quintet is (<something>, setFont, setTextMatrix,
+      // showText, endText), include that as well. (E.g. <something> might be
+      // |dependency|.)
+      var iFirst = iFirstBeginText;
+      if (iFirstBeginText >= 4 &&
+          fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&
+          fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&
+          fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&
+          fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&
+          argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&
+          argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {
+        count++;
+        iFirst -= 5;
+      }
+
+      // Remove (endText, beginText, setFont) trios.
+      var iEndText = iFirst + 4;
+      for (var q = 1; q < count; q++) {
+        fnArray.splice(iEndText, 3);
+        argsArray.splice(iEndText, 3);
+        iEndText += 2;
+      }
+
+      return iEndText + 1;
+    });
+
+  function QueueOptimizer() {}
+
+  QueueOptimizer.prototype = {
+    optimize: function QueueOptimizer_optimize(queue) {
+      var fnArray = queue.fnArray, argsArray = queue.argsArray;
+      var context = {
+        iCurr: 0,
+        fnArray: fnArray,
+        argsArray: argsArray
+      };
+      var state;
+      var i = 0, ii = fnArray.length;
+      while (i < ii) {
+        state = (state || InitialState)[fnArray[i]];
+        if (typeof state === 'function') { // we found some handler
+          context.iCurr = i;
+          // state() returns the index of the first non-matching op (if we
+          // didn't match) or the first op past the modified ops (if we did
+          // match and replace).
+          i = state(context);
+          state = undefined;    // reset the state machine
+          ii = context.fnArray.length;
+        } else {
+          i++;
+        }
+      }
+    }
+  };
+  return QueueOptimizer;
+})();
+
+
+var BUILT_IN_CMAPS = [
+// << Start unicode maps.
+'Adobe-GB1-UCS2',
+'Adobe-CNS1-UCS2',
+'Adobe-Japan1-UCS2',
+'Adobe-Korea1-UCS2',
+// >> End unicode maps.
+'78-EUC-H',
+'78-EUC-V',
+'78-H',
+'78-RKSJ-H',
+'78-RKSJ-V',
+'78-V',
+'78ms-RKSJ-H',
+'78ms-RKSJ-V',
+'83pv-RKSJ-H',
+'90ms-RKSJ-H',
+'90ms-RKSJ-V',
+'90msp-RKSJ-H',
+'90msp-RKSJ-V',
+'90pv-RKSJ-H',
+'90pv-RKSJ-V',
+'Add-H',
+'Add-RKSJ-H',
+'Add-RKSJ-V',
+'Add-V',
+'Adobe-CNS1-0',
+'Adobe-CNS1-1',
+'Adobe-CNS1-2',
+'Adobe-CNS1-3',
+'Adobe-CNS1-4',
+'Adobe-CNS1-5',
+'Adobe-CNS1-6',
+'Adobe-GB1-0',
+'Adobe-GB1-1',
+'Adobe-GB1-2',
+'Adobe-GB1-3',
+'Adobe-GB1-4',
+'Adobe-GB1-5',
+'Adobe-Japan1-0',
+'Adobe-Japan1-1',
+'Adobe-Japan1-2',
+'Adobe-Japan1-3',
+'Adobe-Japan1-4',
+'Adobe-Japan1-5',
+'Adobe-Japan1-6',
+'Adobe-Korea1-0',
+'Adobe-Korea1-1',
+'Adobe-Korea1-2',
+'B5-H',
+'B5-V',
+'B5pc-H',
+'B5pc-V',
+'CNS-EUC-H',
+'CNS-EUC-V',
+'CNS1-H',
+'CNS1-V',
+'CNS2-H',
+'CNS2-V',
+'ETHK-B5-H',
+'ETHK-B5-V',
+'ETen-B5-H',
+'ETen-B5-V',
+'ETenms-B5-H',
+'ETenms-B5-V',
+'EUC-H',
+'EUC-V',
+'Ext-H',
+'Ext-RKSJ-H',
+'Ext-RKSJ-V',
+'Ext-V',
+'GB-EUC-H',
+'GB-EUC-V',
+'GB-H',
+'GB-V',
+'GBK-EUC-H',
+'GBK-EUC-V',
+'GBK2K-H',
+'GBK2K-V',
+'GBKp-EUC-H',
+'GBKp-EUC-V',
+'GBT-EUC-H',
+'GBT-EUC-V',
+'GBT-H',
+'GBT-V',
+'GBTpc-EUC-H',
+'GBTpc-EUC-V',
+'GBpc-EUC-H',
+'GBpc-EUC-V',
+'H',
+'HKdla-B5-H',
+'HKdla-B5-V',
+'HKdlb-B5-H',
+'HKdlb-B5-V',
+'HKgccs-B5-H',
+'HKgccs-B5-V',
+'HKm314-B5-H',
+'HKm314-B5-V',
+'HKm471-B5-H',
+'HKm471-B5-V',
+'HKscs-B5-H',
+'HKscs-B5-V',
+'Hankaku',
+'Hiragana',
+'KSC-EUC-H',
+'KSC-EUC-V',
+'KSC-H',
+'KSC-Johab-H',
+'KSC-Johab-V',
+'KSC-V',
+'KSCms-UHC-H',
+'KSCms-UHC-HW-H',
+'KSCms-UHC-HW-V',
+'KSCms-UHC-V',
+'KSCpc-EUC-H',
+'KSCpc-EUC-V',
+'Katakana',
+'NWP-H',
+'NWP-V',
+'RKSJ-H',
+'RKSJ-V',
+'Roman',
+'UniCNS-UCS2-H',
+'UniCNS-UCS2-V',
+'UniCNS-UTF16-H',
+'UniCNS-UTF16-V',
+'UniCNS-UTF32-H',
+'UniCNS-UTF32-V',
+'UniCNS-UTF8-H',
+'UniCNS-UTF8-V',
+'UniGB-UCS2-H',
+'UniGB-UCS2-V',
+'UniGB-UTF16-H',
+'UniGB-UTF16-V',
+'UniGB-UTF32-H',
+'UniGB-UTF32-V',
+'UniGB-UTF8-H',
+'UniGB-UTF8-V',
+'UniJIS-UCS2-H',
+'UniJIS-UCS2-HW-H',
+'UniJIS-UCS2-HW-V',
+'UniJIS-UCS2-V',
+'UniJIS-UTF16-H',
+'UniJIS-UTF16-V',
+'UniJIS-UTF32-H',
+'UniJIS-UTF32-V',
+'UniJIS-UTF8-H',
+'UniJIS-UTF8-V',
+'UniJIS2004-UTF16-H',
+'UniJIS2004-UTF16-V',
+'UniJIS2004-UTF32-H',
+'UniJIS2004-UTF32-V',
+'UniJIS2004-UTF8-H',
+'UniJIS2004-UTF8-V',
+'UniJISPro-UCS2-HW-V',
+'UniJISPro-UCS2-V',
+'UniJISPro-UTF8-V',
+'UniJISX0213-UTF32-H',
+'UniJISX0213-UTF32-V',
+'UniJISX02132004-UTF32-H',
+'UniJISX02132004-UTF32-V',
+'UniKS-UCS2-H',
+'UniKS-UCS2-V',
+'UniKS-UTF16-H',
+'UniKS-UTF16-V',
+'UniKS-UTF32-H',
+'UniKS-UTF32-V',
+'UniKS-UTF8-H',
+'UniKS-UTF8-V',
+'V',
+'WP-Symbol'];
+
+// CMap, not to be confused with TrueType's cmap.
+var CMap = (function CMapClosure() {
+  function CMap(builtInCMap) {
+    // Codespace ranges are stored as follows:
+    // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]
+    // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]
+    this.codespaceRanges = [[], [], [], []];
+    this.numCodespaceRanges = 0;
+    // Map entries have one of two forms.
+    // - cid chars are 16-bit unsigned integers, stored as integers.
+    // - bf chars are variable-length byte sequences, stored as strings, with
+    //   one byte per character.
+    this._map = [];
+    this.name = '';
+    this.vertical = false;
+    this.useCMap = null;
+    this.builtInCMap = builtInCMap;
+  }
+  CMap.prototype = {
+    addCodespaceRange: function(n, low, high) {
+      this.codespaceRanges[n - 1].push(low, high);
+      this.numCodespaceRanges++;
+    },
+
+    mapCidRange: function(low, high, dstLow) {
+      while (low <= high) {
+        this._map[low++] = dstLow++;
+      }
+    },
+
+    mapBfRange: function(low, high, dstLow) {
+      var lastByte = dstLow.length - 1;
+      while (low <= high) {
+        this._map[low++] = dstLow;
+        // Only the last byte has to be incremented.
+        dstLow = dstLow.substr(0, lastByte) +
+                 String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);
+      }
+    },
+
+    mapBfRangeToArray: function(low, high, array) {
+      var i = 0, ii = array.length;
+      while (low <= high && i < ii) {
+        this._map[low] = array[i++];
+        ++low;
+      }
+    },
+
+    // This is used for both bf and cid chars.
+    mapOne: function(src, dst) {
+      this._map[src] = dst;
+    },
+
+    lookup: function(code) {
+      return this._map[code];
+    },
+
+    contains: function(code) {
+      return this._map[code] !== undefined;
+    },
+
+    forEach: function(callback) {
+      // Most maps have fewer than 65536 entries, and for those we use normal
+      // array iteration. But really sparse tables are possible -- e.g. with
+      // indices in the *billions*. For such tables we use for..in, which isn't
+      // ideal because it stringifies the indices for all present elements, but
+      // it does avoid iterating over every undefined entry.
+      var map = this._map;
+      var length = map.length;
+      var i;
+      if (length <= 0x10000) {
+        for (i = 0; i < length; i++) {
+          if (map[i] !== undefined) {
+            callback(i, map[i]);
+          }
+        }
+      } else {
+        for (i in this._map) {
+          callback(i, map[i]);
+        }
+      }
+    },
+
+    charCodeOf: function(value) {
+      return this._map.indexOf(value);
+    },
+
+    getMap: function() {
+      return this._map;
+    },
+
+    readCharCode: function(str, offset, out) {
+      var c = 0;
+      var codespaceRanges = this.codespaceRanges;
+      var codespaceRangesLen = this.codespaceRanges.length;
+      // 9.7.6.2 CMap Mapping
+      // The code length is at most 4.
+      for (var n = 0; n < codespaceRangesLen; n++) {
+        c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;
+        // Check each codespace range to see if it falls within.
+        var codespaceRange = codespaceRanges[n];
+        for (var k = 0, kk = codespaceRange.length; k < kk;) {
+          var low = codespaceRange[k++];
+          var high = codespaceRange[k++];
+          if (c >= low && c <= high) {
+            out.charcode = c;
+            out.length = n + 1;
+            return;
+          }
+        }
+      }
+      out.charcode = 0;
+      out.length = 1;
+    },
+
+    get isIdentityCMap() {
+      if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) {
+        return false;
+      }
+      if (this._map.length !== 0x10000) {
+        return false;
+      }
+      for (var i = 0; i < 0x10000; i++) {
+        if (this._map[i] !== i) {
+          return false;
+        }
+      }
+      return true;
+    }
+  };
+  return CMap;
+})();
+
+// A special case of CMap, where the _map array implicitly has a length of
+// 65536 and each element is equal to its index.
+var IdentityCMap = (function IdentityCMapClosure() {
+  function IdentityCMap(vertical, n) {
+    CMap.call(this);
+    this.vertical = vertical;
+    this.addCodespaceRange(n, 0, 0xffff);
+  }
+  Util.inherit(IdentityCMap, CMap, {});
+
+  IdentityCMap.prototype = {
+    addCodespaceRange: CMap.prototype.addCodespaceRange,
+
+    mapCidRange: function(low, high, dstLow) {
+      error('should not call mapCidRange');
+    },
+
+    mapBfRange: function(low, high, dstLow) {
+      error('should not call mapBfRange');
+    },
+
+    mapBfRangeToArray: function(low, high, array) {
+      error('should not call mapBfRangeToArray');
+    },
+
+    mapOne: function(src, dst) {
+      error('should not call mapCidOne');
+    },
+
+    lookup: function(code) {
+      return (isInt(code) && code <= 0xffff) ? code : undefined;
+    },
+
+    contains: function(code) {
+      return isInt(code) && code <= 0xffff;
+    },
+
+    forEach: function(callback) {
+      for (var i = 0; i <= 0xffff; i++) {
+        callback(i, i);
+      }
+    },
+
+    charCodeOf: function(value) {
+      return (isInt(value) && value <= 0xffff) ? value : -1;
+    },
+
+    getMap: function() {
+      // Sometimes identity maps must be instantiated, but it's rare.
+      var map = new Array(0x10000);
+      for (var i = 0; i <= 0xffff; i++) {
+        map[i] = i;
+      }
+      return map;
+    },
+
+    readCharCode: CMap.prototype.readCharCode,
+
+    get isIdentityCMap() {
+      error('should not access .isIdentityCMap');
+    }
+  };
+
+  return IdentityCMap;
+})();
+
+var BinaryCMapReader = (function BinaryCMapReaderClosure() {
+  function fetchBinaryData(url) {
+    var nonBinaryRequest = PDFJS.disableWorker;
+    var request = new XMLHttpRequest();
+    request.open('GET', url, false);
+    if (!nonBinaryRequest) {
+      try {
+        request.responseType = 'arraybuffer';
+        nonBinaryRequest = request.responseType !== 'arraybuffer';
+      } catch (e) {
+        nonBinaryRequest = true;
+      }
+    }
+    if (nonBinaryRequest && request.overrideMimeType) {
+      request.overrideMimeType('text/plain; charset=x-user-defined');
+    }
+    request.send(null);
+    if (nonBinaryRequest ? !request.responseText : !request.response) {
+      error('Unable to get binary cMap at: ' + url);
+    }
+    if (nonBinaryRequest) {
+      var data = Array.prototype.map.call(request.responseText, function (ch) {
+        return ch.charCodeAt(0) & 255;
+      });
+      return new Uint8Array(data);
+    }
+    return new Uint8Array(request.response);
+  }
+
+  function hexToInt(a, size) {
+    var n = 0;
+    for (var i = 0; i <= size; i++) {
+      n = (n << 8) | a[i];
+    }
+    return n >>> 0;
+  }
+
+  function hexToStr(a, size) {
+    // This code is hot. Special-case some common values to avoid creating an
+    // object with subarray().
+    if (size === 1) {
+      return String.fromCharCode(a[0], a[1]);
+    }
+    if (size === 3) {
+      return String.fromCharCode(a[0], a[1], a[2], a[3]);
+    }
+    return String.fromCharCode.apply(null, a.subarray(0, size + 1));
+  }
+
+  function addHex(a, b, size) {
+    var c = 0;
+    for (var i = size; i >= 0; i--) {
+      c += a[i] + b[i];
+      a[i] = c & 255;
+      c >>= 8;
+    }
+  }
+
+  function incHex(a, size) {
+    var c = 1;
+    for (var i = size; i >= 0 && c > 0; i--) {
+      c += a[i];
+      a[i] = c & 255;
+      c >>= 8;
+    }
+  }
+
+  var MAX_NUM_SIZE = 16;
+  var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)
+
+  function BinaryCMapStream(data) {
+    this.buffer = data;
+    this.pos = 0;
+    this.end = data.length;
+    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
+  }
+
+  BinaryCMapStream.prototype = {
+    readByte: function () {
+      if (this.pos >= this.end) {
+        return -1;
+      }
+      return this.buffer[this.pos++];
+    },
+    readNumber: function () {
+      var n = 0;
+      var last;
+      do {
+        var b = this.readByte();
+        if (b < 0) {
+          error('unexpected EOF in bcmap');
+        }
+        last = !(b & 0x80);
+        n = (n << 7) | (b & 0x7F);
+      } while (!last);
+      return n;
+    },
+    readSigned: function () {
+      var n = this.readNumber();
+      return (n & 1) ? ~(n >>> 1) : n >>> 1;
+    },
+    readHex: function (num, size) {
+      num.set(this.buffer.subarray(this.pos,
+        this.pos + size + 1));
+      this.pos += size + 1;
+    },
+    readHexNumber: function (num, size) {
+      var last;
+      var stack = this.tmpBuf, sp = 0;
+      do {
+        var b = this.readByte();
+        if (b < 0) {
+          error('unexpected EOF in bcmap');
+        }
+        last = !(b & 0x80);
+        stack[sp++] = b & 0x7F;
+      } while (!last);
+      var i = size, buffer = 0, bufferSize = 0;
+      while (i >= 0) {
+        while (bufferSize < 8 && stack.length > 0) {
+          buffer = (stack[--sp] << bufferSize) | buffer;
+          bufferSize += 7;
+        }
+        num[i] = buffer & 255;
+        i--;
+        buffer >>= 8;
+        bufferSize -= 8;
+      }
+    },
+    readHexSigned: function (num, size) {
+      this.readHexNumber(num, size);
+      var sign = num[size] & 1 ? 255 : 0;
+      var c = 0;
+      for (var i = 0; i <= size; i++) {
+        c = ((c & 1) << 8) | num[i];
+        num[i] = (c >> 1) ^ sign;
+      }
+    },
+    readString: function () {
+      var len = this.readNumber();
+      var s = '';
+      for (var i = 0; i < len; i++) {
+        s += String.fromCharCode(this.readNumber());
+      }
+      return s;
+    }
+  };
+
+  function processBinaryCMap(url, cMap, extend) {
+    var data = fetchBinaryData(url);
+    var stream = new BinaryCMapStream(data);
+
+    var header = stream.readByte();
+    cMap.vertical = !!(header & 1);
+
+    var useCMap = null;
+    var start = new Uint8Array(MAX_NUM_SIZE);
+    var end = new Uint8Array(MAX_NUM_SIZE);
+    var char = new Uint8Array(MAX_NUM_SIZE);
+    var charCode = new Uint8Array(MAX_NUM_SIZE);
+    var tmp = new Uint8Array(MAX_NUM_SIZE);
+    var code;
+
+    var b;
+    while ((b = stream.readByte()) >= 0) {
+      var type = b >> 5;
+      if (type === 7) { // metadata, e.g. comment or usecmap
+        switch (b & 0x1F) {
+          case 0:
+            stream.readString(); // skipping comment
+            break;
+          case 1:
+            useCMap = stream.readString();
+            break;
+        }
+        continue;
+      }
+      var sequence = !!(b & 0x10);
+      var dataSize = b & 15;
+
+      assert(dataSize + 1 <= MAX_NUM_SIZE);
+
+      var ucs2DataSize = 1;
+      var subitemsCount = stream.readNumber();
+      var i;
+      switch (type) {
+        case 0: // codespacerange
+          stream.readHex(start, dataSize);
+          stream.readHexNumber(end, dataSize);
+          addHex(end, start, dataSize);
+          cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize),
+                                 hexToInt(end, dataSize));
+          for (i = 1; i < subitemsCount; i++) {
+            incHex(end, dataSize);
+            stream.readHexNumber(start, dataSize);
+            addHex(start, end, dataSize);
+            stream.readHexNumber(end, dataSize);
+            addHex(end, start, dataSize);
+            cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize),
+                                   hexToInt(end, dataSize));
+          }
+          break;
+        case 1: // notdefrange
+          stream.readHex(start, dataSize);
+          stream.readHexNumber(end, dataSize);
+          addHex(end, start, dataSize);
+          code = stream.readNumber();
+          // undefined range, skipping
+          for (i = 1; i < subitemsCount; i++) {
+            incHex(end, dataSize);
+            stream.readHexNumber(start, dataSize);
+            addHex(start, end, dataSize);
+            stream.readHexNumber(end, dataSize);
+            addHex(end, start, dataSize);
+            code = stream.readNumber();
+            // nop
+          }
+          break;
+        case 2: // cidchar
+          stream.readHex(char, dataSize);
+          code = stream.readNumber();
+          cMap.mapOne(hexToInt(char, dataSize), code);
+          for (i = 1; i < subitemsCount; i++) {
+            incHex(char, dataSize);
+            if (!sequence) {
+              stream.readHexNumber(tmp, dataSize);
+              addHex(char, tmp, dataSize);
+            }
+            code = stream.readSigned() + (code + 1);
+            cMap.mapOne(hexToInt(char, dataSize), code);
+          }
+          break;
+        case 3: // cidrange
+          stream.readHex(start, dataSize);
+          stream.readHexNumber(end, dataSize);
+          addHex(end, start, dataSize);
+          code = stream.readNumber();
+          cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize),
+                           code);
+          for (i = 1; i < subitemsCount; i++) {
+            incHex(end, dataSize);
+            if (!sequence) {
+              stream.readHexNumber(start, dataSize);
+              addHex(start, end, dataSize);
+            } else {
+              start.set(end);
+            }
+            stream.readHexNumber(end, dataSize);
+            addHex(end, start, dataSize);
+            code = stream.readNumber();
+            cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize),
+                             code);
+          }
+          break;
+        case 4: // bfchar
+          stream.readHex(char, ucs2DataSize);
+          stream.readHex(charCode, dataSize);
+          cMap.mapOne(hexToInt(char, ucs2DataSize),
+                      hexToStr(charCode, dataSize));
+          for (i = 1; i < subitemsCount; i++) {
+            incHex(char, ucs2DataSize);
+            if (!sequence) {
+              stream.readHexNumber(tmp, ucs2DataSize);
+              addHex(char, tmp, ucs2DataSize);
+            }
+            incHex(charCode, dataSize);
+            stream.readHexSigned(tmp, dataSize);
+            addHex(charCode, tmp, dataSize);
+            cMap.mapOne(hexToInt(char, ucs2DataSize),
+                        hexToStr(charCode, dataSize));
+          }
+          break;
+        case 5: // bfrange
+          stream.readHex(start, ucs2DataSize);
+          stream.readHexNumber(end, ucs2DataSize);
+          addHex(end, start, ucs2DataSize);
+          stream.readHex(charCode, dataSize);
+          cMap.mapBfRange(hexToInt(start, ucs2DataSize),
+                          hexToInt(end, ucs2DataSize),
+                          hexToStr(charCode, dataSize));
+          for (i = 1; i < subitemsCount; i++) {
+            incHex(end, ucs2DataSize);
+            if (!sequence) {
+              stream.readHexNumber(start, ucs2DataSize);
+              addHex(start, end, ucs2DataSize);
+            } else {
+              start.set(end);
+            }
+            stream.readHexNumber(end, ucs2DataSize);
+            addHex(end, start, ucs2DataSize);
+            stream.readHex(charCode, dataSize);
+            cMap.mapBfRange(hexToInt(start, ucs2DataSize),
+                            hexToInt(end, ucs2DataSize),
+                            hexToStr(charCode, dataSize));
+          }
+          break;
+        default:
+          error('Unknown type: ' + type);
+          break;
+      }
+    }
+
+    if (useCMap) {
+      extend(useCMap);
+    }
+    return cMap;
+  }
+
+  function BinaryCMapReader() {}
+
+  BinaryCMapReader.prototype = {
+    read: processBinaryCMap
+  };
+
+  return BinaryCMapReader;
+})();
+
+var CMapFactory = (function CMapFactoryClosure() {
+  function strToInt(str) {
+    var a = 0;
+    for (var i = 0; i < str.length; i++) {
+      a = (a << 8) | str.charCodeAt(i);
+    }
+    return a >>> 0;
+  }
+
+  function expectString(obj) {
+    if (!isString(obj)) {
+      error('Malformed CMap: expected string.');
+    }
+  }
+
+  function expectInt(obj) {
+    if (!isInt(obj)) {
+      error('Malformed CMap: expected int.');
+    }
+  }
+
+  function parseBfChar(cMap, lexer) {
+    while (true) {
+      var obj = lexer.getObj();
+      if (isEOF(obj)) {
+        break;
+      }
+      if (isCmd(obj, 'endbfchar')) {
+        return;
+      }
+      expectString(obj);
+      var src = strToInt(obj);
+      obj = lexer.getObj();
+      // TODO are /dstName used?
+      expectString(obj);
+      var dst = obj;
+      cMap.mapOne(src, dst);
+    }
+  }
+
+  function parseBfRange(cMap, lexer) {
+    while (true) {
+      var obj = lexer.getObj();
+      if (isEOF(obj)) {
+        break;
+      }
+      if (isCmd(obj, 'endbfrange')) {
+        return;
+      }
+      expectString(obj);
+      var low = strToInt(obj);
+      obj = lexer.getObj();
+      expectString(obj);
+      var high = strToInt(obj);
+      obj = lexer.getObj();
+      if (isInt(obj) || isString(obj)) {
+        var dstLow = isInt(obj) ? String.fromCharCode(obj) : obj;
+        cMap.mapBfRange(low, high, dstLow);
+      } else if (isCmd(obj, '[')) {
+        obj = lexer.getObj();
+        var array = [];
+        while (!isCmd(obj, ']') && !isEOF(obj)) {
+          array.push(obj);
+          obj = lexer.getObj();
+        }
+        cMap.mapBfRangeToArray(low, high, array);
+      } else {
+        break;
+      }
+    }
+    error('Invalid bf range.');
+  }
+
+  function parseCidChar(cMap, lexer) {
+    while (true) {
+      var obj = lexer.getObj();
+      if (isEOF(obj)) {
+        break;
+      }
+      if (isCmd(obj, 'endcidchar')) {
+        return;
+      }
+      expectString(obj);
+      var src = strToInt(obj);
+      obj = lexer.getObj();
+      expectInt(obj);
+      var dst = obj;
+      cMap.mapOne(src, dst);
+    }
+  }
+
+  function parseCidRange(cMap, lexer) {
+    while (true) {
+      var obj = lexer.getObj();
+      if (isEOF(obj)) {
+        break;
+      }
+      if (isCmd(obj, 'endcidrange')) {
+        return;
+      }
+      expectString(obj);
+      var low = strToInt(obj);
+      obj = lexer.getObj();
+      expectString(obj);
+      var high = strToInt(obj);
+      obj = lexer.getObj();
+      expectInt(obj);
+      var dstLow = obj;
+      cMap.mapCidRange(low, high, dstLow);
+    }
+  }
+
+  function parseCodespaceRange(cMap, lexer) {
+    while (true) {
+      var obj = lexer.getObj();
+      if (isEOF(obj)) {
+        break;
+      }
+      if (isCmd(obj, 'endcodespacerange')) {
+        return;
+      }
+      if (!isString(obj)) {
+        break;
+      }
+      var low = strToInt(obj);
+      obj = lexer.getObj();
+      if (!isString(obj)) {
+        break;
+      }
+      var high = strToInt(obj);
+      cMap.addCodespaceRange(obj.length, low, high);
+    }
+    error('Invalid codespace range.');
+  }
+
+  function parseWMode(cMap, lexer) {
+    var obj = lexer.getObj();
+    if (isInt(obj)) {
+      cMap.vertical = !!obj;
+    }
+  }
+
+  function parseCMapName(cMap, lexer) {
+    var obj = lexer.getObj();
+    if (isName(obj) && isString(obj.name)) {
+      cMap.name = obj.name;
+    }
+  }
+
+  function parseCMap(cMap, lexer, builtInCMapParams, useCMap) {
+    var previous;
+    var embededUseCMap;
+    objLoop: while (true) {
+      var obj = lexer.getObj();
+      if (isEOF(obj)) {
+        break;
+      } else if (isName(obj)) {
+        if (obj.name === 'WMode') {
+          parseWMode(cMap, lexer);
+        } else if (obj.name === 'CMapName') {
+          parseCMapName(cMap, lexer);
+        }
+        previous = obj;
+      } else if (isCmd(obj)) {
+        switch (obj.cmd) {
+          case 'endcmap':
+            break objLoop;
+          case 'usecmap':
+            if (isName(previous)) {
+              embededUseCMap = previous.name;
+            }
+            break;
+          case 'begincodespacerange':
+            parseCodespaceRange(cMap, lexer);
+            break;
+          case 'beginbfchar':
+            parseBfChar(cMap, lexer);
+            break;
+          case 'begincidchar':
+            parseCidChar(cMap, lexer);
+            break;
+          case 'beginbfrange':
+            parseBfRange(cMap, lexer);
+            break;
+          case 'begincidrange':
+            parseCidRange(cMap, lexer);
+            break;
+        }
+      }
+    }
+
+    if (!useCMap && embededUseCMap) {
+      // Load the usecmap definition from the file only if there wasn't one
+      // specified.
+      useCMap = embededUseCMap;
+    }
+    if (useCMap) {
+      extendCMap(cMap, builtInCMapParams, useCMap);
+    }
+  }
+
+  function extendCMap(cMap, builtInCMapParams, useCMap) {
+    cMap.useCMap = createBuiltInCMap(useCMap, builtInCMapParams);
+    // If there aren't any code space ranges defined clone all the parent ones
+    // into this cMap.
+    if (cMap.numCodespaceRanges === 0) {
+      var useCodespaceRanges = cMap.useCMap.codespaceRanges;
+      for (var i = 0; i < useCodespaceRanges.length; i++) {
+        cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();
+      }
+      cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;
+    }
+    // Merge the map into the current one, making sure not to override
+    // any previously defined entries.
+    cMap.useCMap.forEach(function(key, value) {
+      if (!cMap.contains(key)) {
+        cMap.mapOne(key, cMap.useCMap.lookup(key));
+      }
+    });
+  }
+
+  function parseBinaryCMap(name, builtInCMapParams) {
+    var url = builtInCMapParams.url + name + '.bcmap';
+    var cMap = new CMap(true);
+    new BinaryCMapReader().read(url, cMap, function (useCMap) {
+      extendCMap(cMap, builtInCMapParams, useCMap);
+    });
+    return cMap;
+  }
+
+  function createBuiltInCMap(name, builtInCMapParams) {
+    if (name === 'Identity-H') {
+      return new IdentityCMap(false, 2);
+    } else if (name === 'Identity-V') {
+      return new IdentityCMap(true, 2);
+    }
+    if (BUILT_IN_CMAPS.indexOf(name) === -1) {
+      error('Unknown cMap name: ' + name);
+    }
+    assert(builtInCMapParams, 'built-in cMap parameters are not provided');
+
+    if (builtInCMapParams.packed) {
+      return parseBinaryCMap(name, builtInCMapParams);
+    }
+
+    var request = new XMLHttpRequest();
+    var url = builtInCMapParams.url + name;
+    request.open('GET', url, false);
+    request.send(null);
+    if (!request.responseText) {
+      error('Unable to get cMap at: ' + url);
+    }
+    var cMap = new CMap(true);
+    var lexer = new Lexer(new StringStream(request.responseText));
+    parseCMap(cMap, lexer, builtInCMapParams, null);
+    return cMap;
+  }
+
+  return {
+    create: function (encoding, builtInCMapParams, useCMap) {
+      if (isName(encoding)) {
+        return createBuiltInCMap(encoding.name, builtInCMapParams);
+      } else if (isStream(encoding)) {
+        var cMap = new CMap();
+        var lexer = new Lexer(encoding);
+        try {
+          parseCMap(cMap, lexer, builtInCMapParams, useCMap);
+        } catch (e) {
+          warn('Invalid CMap data. ' + e);
+        }
+        if (cMap.isIdentityCMap) {
+          return createBuiltInCMap(cMap.name, builtInCMapParams);
+        }
+        return cMap;
+      }
+      error('Encoding required.');
+    }
+  };
+})();
+
+
+// Unicode Private Use Area
+var PRIVATE_USE_OFFSET_START = 0xE000;
+var PRIVATE_USE_OFFSET_END = 0xF8FF;
+var SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = false;
+
+// PDF Glyph Space Units are one Thousandth of a TextSpace Unit
+// except for Type 3 fonts
+var PDF_GLYPH_SPACE_UNITS = 1000;
+
+// Hinting is currently disabled due to unknown problems on windows
+// in tracemonkey and various other pdfs with type1 fonts.
+var HINTING_ENABLED = false;
+
+// Accented charactars are not displayed properly on windows, using this flag
+// to control analysis of seac charstrings.
+var SEAC_ANALYSIS_ENABLED = false;
+
+var FontFlags = {
+  FixedPitch: 1,
+  Serif: 2,
+  Symbolic: 4,
+  Script: 8,
+  Nonsymbolic: 32,
+  Italic: 64,
+  AllCap: 65536,
+  SmallCap: 131072,
+  ForceBold: 262144
+};
+
+var Encodings = {
+  ExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle',
+    'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',
+    'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',
+    'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',
+    'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',
+    'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon',
+    'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior',
+    'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior',
+    'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior',
+    'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior',
+    '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '',
+    'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',
+    'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',
+    'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',
+    'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',
+    'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',
+    'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',
+    '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall',
+    'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '',
+    'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall',
+    'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters',
+    'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',
+    'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior',
+    'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior',
+    'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior',
+    'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',
+    'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior',
+    'seveninferior', 'eightinferior', 'nineinferior', 'centinferior',
+    'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',
+    'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall',
+    'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',
+    'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',
+    'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',
+    'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',
+    'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',
+    'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',
+    'Ydieresissmall'],
+  MacExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle',
+    'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall',
+    'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',
+    'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle',
+    'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle',
+    'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle',
+    'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '',
+    'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter',
+    'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',
+    'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff',
+    'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior',
+    'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall',
+    'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',
+    'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',
+    'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',
+    'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',
+    'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '',
+    'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall',
+    'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall',
+    'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall',
+    'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall',
+    'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall',
+    'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '',
+    'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior',
+    'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior',
+    'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior',
+    'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '',
+    'dollarinferior', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior',
+    'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall',
+    'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '',
+    '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '',
+    'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior',
+    'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',
+    'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior',
+    'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior',
+    '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall',
+    'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior',
+    'periodsuperior', 'Dotaccentsmall', 'Ringsmall'],
+  MacRomanEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
+    'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',
+    'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
+    'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
+    'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
+    'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+    'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
+    'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+    'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '',
+    'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis',
+    'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde',
+    'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',
+    'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute',
+    'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave',
+    'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling',
+    'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright',
+    'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity',
+    'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff',
+    'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine',
+    'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot',
+    'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft',
+    'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE',
+    'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft',
+    'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction',
+    'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl',
+    'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand',
+    'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute',
+    'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple',
+    'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex',
+    'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut',
+    'ogonek', 'caron'],
+  StandardEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
+    'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',
+    'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
+    'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
+    'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
+    'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+    'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
+    'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f',
+    'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
+    'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown',
+    'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
+    'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
+    'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl',
+    'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase',
+    'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',
+    'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex',
+    'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla',
+    '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '',
+    '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae',
+    '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'],
+  WinAnsiEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
+    'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',
+    'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
+    'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
+    'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
+    'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+    'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
+    'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+    'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',
+    'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase',
+    'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron',
+    'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft',
+    'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash',
+    'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet',
+    'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling',
+    'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright',
+    'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered',
+    'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute',
+    'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior',
+    'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters',
+    'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis',
+    'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
+    'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve',
+    'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash',
+    'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn',
+    'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis',
+    'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis',
+    'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve',
+    'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash',
+    'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn',
+    'ydieresis'],
+  SymbolSetEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent',
+    'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus',
+    'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',
+    'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',
+    'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi',
+    'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa',
+    'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau',
+    'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft',
+    'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex',
+    'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota',
+    'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho',
+    'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta',
+    'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal',
+    'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade',
+    'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree',
+    'plusminus', 'second', 'greaterequal', 'multiply', 'proportional',
+    'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence',
+    'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn',
+    'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply',
+    'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset',
+    'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element',
+    'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif',
+    'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot',
+    'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup',
+    'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans',
+    'copyrightsans', 'trademarksans', 'summation', 'parenlefttp',
+    'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex',
+    'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex',
+    '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt',
+    'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp',
+    'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid',
+    'bracerightbt'],
+  ZapfDingbatsEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117',
+    'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19',
+    'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7',
+    'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36',
+    'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46',
+    'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56',
+    'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66',
+    'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75',
+    'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97',
+    'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205',
+    'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103',
+    'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120',
+    'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129',
+    'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138',
+    'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147',
+    'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156',
+    'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165',
+    'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173',
+    'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180',
+    'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185',
+    'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191']
+};
+
+/**
+ * Hold a map of decoded fonts and of the standard fourteen Type1
+ * fonts and their acronyms.
+ */
+var stdFontMap = {
+  'ArialNarrow': 'Helvetica',
+  'ArialNarrow-Bold': 'Helvetica-Bold',
+  'ArialNarrow-BoldItalic': 'Helvetica-BoldOblique',
+  'ArialNarrow-Italic': 'Helvetica-Oblique',
+  'ArialBlack': 'Helvetica',
+  'ArialBlack-Bold': 'Helvetica-Bold',
+  'ArialBlack-BoldItalic': 'Helvetica-BoldOblique',
+  'ArialBlack-Italic': 'Helvetica-Oblique',
+  'Arial': 'Helvetica',
+  'Arial-Bold': 'Helvetica-Bold',
+  'Arial-BoldItalic': 'Helvetica-BoldOblique',
+  'Arial-Italic': 'Helvetica-Oblique',
+  'Arial-BoldItalicMT': 'Helvetica-BoldOblique',
+  'Arial-BoldMT': 'Helvetica-Bold',
+  'Arial-ItalicMT': 'Helvetica-Oblique',
+  'ArialMT': 'Helvetica',
+  'Courier-Bold': 'Courier-Bold',
+  'Courier-BoldItalic': 'Courier-BoldOblique',
+  'Courier-Italic': 'Courier-Oblique',
+  'CourierNew': 'Courier',
+  'CourierNew-Bold': 'Courier-Bold',
+  'CourierNew-BoldItalic': 'Courier-BoldOblique',
+  'CourierNew-Italic': 'Courier-Oblique',
+  'CourierNewPS-BoldItalicMT': 'Courier-BoldOblique',
+  'CourierNewPS-BoldMT': 'Courier-Bold',
+  'CourierNewPS-ItalicMT': 'Courier-Oblique',
+  'CourierNewPSMT': 'Courier',
+  'Helvetica': 'Helvetica',
+  'Helvetica-Bold': 'Helvetica-Bold',
+  'Helvetica-BoldItalic': 'Helvetica-BoldOblique',
+  'Helvetica-BoldOblique': 'Helvetica-BoldOblique',
+  'Helvetica-Italic': 'Helvetica-Oblique',
+  'Helvetica-Oblique':'Helvetica-Oblique',
+  'Symbol-Bold': 'Symbol',
+  'Symbol-BoldItalic': 'Symbol',
+  'Symbol-Italic': 'Symbol',
+  'TimesNewRoman': 'Times-Roman',
+  'TimesNewRoman-Bold': 'Times-Bold',
+  'TimesNewRoman-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRoman-Italic': 'Times-Italic',
+  'TimesNewRomanPS': 'Times-Roman',
+  'TimesNewRomanPS-Bold': 'Times-Bold',
+  'TimesNewRomanPS-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRomanPS-BoldItalicMT': 'Times-BoldItalic',
+  'TimesNewRomanPS-BoldMT': 'Times-Bold',
+  'TimesNewRomanPS-Italic': 'Times-Italic',
+  'TimesNewRomanPS-ItalicMT': 'Times-Italic',
+  'TimesNewRomanPSMT': 'Times-Roman',
+  'TimesNewRomanPSMT-Bold': 'Times-Bold',
+  'TimesNewRomanPSMT-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRomanPSMT-Italic': 'Times-Italic'
+};
+
+/**
+ * Holds the map of the non-standard fonts that might be included as a standard
+ * fonts without glyph data.
+ */
+var nonStdFontMap = {
+  'CenturyGothic': 'Helvetica',
+  'CenturyGothic-Bold': 'Helvetica-Bold',
+  'CenturyGothic-BoldItalic': 'Helvetica-BoldOblique',
+  'CenturyGothic-Italic': 'Helvetica-Oblique',
+  'ComicSansMS': 'Comic Sans MS',
+  'ComicSansMS-Bold': 'Comic Sans MS-Bold',
+  'ComicSansMS-BoldItalic': 'Comic Sans MS-BoldItalic',
+  'ComicSansMS-Italic': 'Comic Sans MS-Italic',
+  'LucidaConsole': 'Courier',
+  'LucidaConsole-Bold': 'Courier-Bold',
+  'LucidaConsole-BoldItalic': 'Courier-BoldOblique',
+  'LucidaConsole-Italic': 'Courier-Oblique',
+  'MS-Gothic': 'MS Gothic',
+  'MS-Gothic-Bold': 'MS Gothic-Bold',
+  'MS-Gothic-BoldItalic': 'MS Gothic-BoldItalic',
+  'MS-Gothic-Italic': 'MS Gothic-Italic',
+  'MS-Mincho': 'MS Mincho',
+  'MS-Mincho-Bold': 'MS Mincho-Bold',
+  'MS-Mincho-BoldItalic': 'MS Mincho-BoldItalic',
+  'MS-Mincho-Italic': 'MS Mincho-Italic',
+  'MS-PGothic': 'MS PGothic',
+  'MS-PGothic-Bold': 'MS PGothic-Bold',
+  'MS-PGothic-BoldItalic': 'MS PGothic-BoldItalic',
+  'MS-PGothic-Italic': 'MS PGothic-Italic',
+  'MS-PMincho': 'MS PMincho',
+  'MS-PMincho-Bold': 'MS PMincho-Bold',
+  'MS-PMincho-BoldItalic': 'MS PMincho-BoldItalic',
+  'MS-PMincho-Italic': 'MS PMincho-Italic',
+  'Wingdings': 'ZapfDingbats'
+};
+
+var serifFonts = {
+  'Adobe Jenson': true, 'Adobe Text': true, 'Albertus': true,
+  'Aldus': true, 'Alexandria': true, 'Algerian': true,
+  'American Typewriter': true, 'Antiqua': true, 'Apex': true,
+  'Arno': true, 'Aster': true, 'Aurora': true,
+  'Baskerville': true, 'Bell': true, 'Bembo': true,
+  'Bembo Schoolbook': true, 'Benguiat': true, 'Berkeley Old Style': true,
+  'Bernhard Modern': true, 'Berthold City': true, 'Bodoni': true,
+  'Bauer Bodoni': true, 'Book Antiqua': true, 'Bookman': true,
+  'Bordeaux Roman': true, 'Californian FB': true, 'Calisto': true,
+  'Calvert': true, 'Capitals': true, 'Cambria': true,
+  'Cartier': true, 'Caslon': true, 'Catull': true,
+  'Centaur': true, 'Century Old Style': true, 'Century Schoolbook': true,
+  'Chaparral': true, 'Charis SIL': true, 'Cheltenham': true,
+  'Cholla Slab': true, 'Clarendon': true, 'Clearface': true,
+  'Cochin': true, 'Colonna': true, 'Computer Modern': true,
+  'Concrete Roman': true, 'Constantia': true, 'Cooper Black': true,
+  'Corona': true, 'Ecotype': true, 'Egyptienne': true,
+  'Elephant': true, 'Excelsior': true, 'Fairfield': true,
+  'FF Scala': true, 'Folkard': true, 'Footlight': true,
+  'FreeSerif': true, 'Friz Quadrata': true, 'Garamond': true,
+  'Gentium': true, 'Georgia': true, 'Gloucester': true,
+  'Goudy Old Style': true, 'Goudy Schoolbook': true, 'Goudy Pro Font': true,
+  'Granjon': true, 'Guardian Egyptian': true, 'Heather': true,
+  'Hercules': true, 'High Tower Text': true, 'Hiroshige': true,
+  'Hoefler Text': true, 'Humana Serif': true, 'Imprint': true,
+  'Ionic No. 5': true, 'Janson': true, 'Joanna': true,
+  'Korinna': true, 'Lexicon': true, 'Liberation Serif': true,
+  'Linux Libertine': true, 'Literaturnaya': true, 'Lucida': true,
+  'Lucida Bright': true, 'Melior': true, 'Memphis': true,
+  'Miller': true, 'Minion': true, 'Modern': true,
+  'Mona Lisa': true, 'Mrs Eaves': true, 'MS Serif': true,
+  'Museo Slab': true, 'New York': true, 'Nimbus Roman': true,
+  'NPS Rawlinson Roadway': true, 'Palatino': true, 'Perpetua': true,
+  'Plantin': true, 'Plantin Schoolbook': true, 'Playbill': true,
+  'Poor Richard': true, 'Rawlinson Roadway': true, 'Renault': true,
+  'Requiem': true, 'Rockwell': true, 'Roman': true,
+  'Rotis Serif': true, 'Sabon': true, 'Scala': true,
+  'Seagull': true, 'Sistina': true, 'Souvenir': true,
+  'STIX': true, 'Stone Informal': true, 'Stone Serif': true,
+  'Sylfaen': true, 'Times': true, 'Trajan': true,
+  'Trinité': true, 'Trump Mediaeval': true, 'Utopia': true,
+  'Vale Type': true, 'Bitstream Vera': true, 'Vera Serif': true,
+  'Versailles': true, 'Wanted': true, 'Weiss': true,
+  'Wide Latin': true, 'Windsor': true, 'XITS': true
+};
+
+var symbolsFonts = {
+  'Dingbats': true, 'Symbol': true, 'ZapfDingbats': true
+};
+
+// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID fonts
+// but does not embed the CID to GID mapping. The mapping is incomplete for all
+// glyphs, but common for some set of the standard fonts.
+var GlyphMapForStandardFonts = {
+  '2': 10, '3': 32, '4': 33, '5': 34, '6': 35, '7': 36, '8': 37, '9': 38,
+  '10': 39, '11': 40, '12': 41, '13': 42, '14': 43, '15': 44, '16': 45,
+  '17': 46, '18': 47, '19': 48, '20': 49, '21': 50, '22': 51, '23': 52,
+  '24': 53, '25': 54, '26': 55, '27': 56, '28': 57, '29': 58, '30': 894,
+  '31': 60, '32': 61, '33': 62, '34': 63, '35': 64, '36': 65, '37': 66,
+  '38': 67, '39': 68, '40': 69, '41': 70, '42': 71, '43': 72, '44': 73,
+  '45': 74, '46': 75, '47': 76, '48': 77, '49': 78, '50': 79, '51': 80,
+  '52': 81, '53': 82, '54': 83, '55': 84, '56': 85, '57': 86, '58': 87,
+  '59': 88, '60': 89, '61': 90, '62': 91, '63': 92, '64': 93, '65': 94,
+  '66': 95, '67': 96, '68': 97, '69': 98, '70': 99, '71': 100, '72': 101,
+  '73': 102, '74': 103, '75': 104, '76': 105, '77': 106, '78': 107, '79': 108,
+  '80': 109, '81': 110, '82': 111, '83': 112, '84': 113, '85': 114, '86': 115,
+  '87': 116, '88': 117, '89': 118, '90': 119, '91': 120, '92': 121, '93': 122,
+  '94': 123, '95': 124, '96': 125, '97': 126, '98': 196, '99': 197, '100': 199,
+  '101': 201, '102': 209, '103': 214, '104': 220, '105': 225, '106': 224,
+  '107': 226, '108': 228, '109': 227, '110': 229, '111': 231, '112': 233,
+  '113': 232, '114': 234, '115': 235, '116': 237, '117': 236, '118': 238,
+  '119': 239, '120': 241, '121': 243, '122': 242, '123': 244, '124': 246,
+  '125': 245, '126': 250, '127': 249, '128': 251, '129': 252, '130': 8224,
+  '131': 176, '132': 162, '133': 163, '134': 167, '135': 8226, '136': 182,
+  '137': 223, '138': 174, '139': 169, '140': 8482, '141': 180, '142': 168,
+  '143': 8800, '144': 198, '145': 216, '146': 8734, '147': 177, '148': 8804,
+  '149': 8805, '150': 165, '151': 181, '152': 8706, '153': 8721, '154': 8719,
+  '156': 8747, '157': 170, '158': 186, '159': 8486, '160': 230, '161': 248,
+  '162': 191, '163': 161, '164': 172, '165': 8730, '166': 402, '167': 8776,
+  '168': 8710, '169': 171, '170': 187, '171': 8230, '210': 218, '223': 711,
+  '224': 321, '225': 322, '227': 353, '229': 382, '234': 253, '252': 263,
+  '253': 268, '254': 269, '258': 258, '260': 260, '261': 261, '265': 280,
+  '266': 281, '268': 283, '269': 313, '275': 323, '276': 324, '278': 328,
+  '284': 345, '285': 346, '286': 347, '292': 367, '295': 377, '296': 378,
+  '298': 380, '305': 963,
+  '306': 964, '307': 966, '308': 8215, '309': 8252, '310': 8319, '311': 8359,
+  '312': 8592, '313': 8593, '337': 9552, '493': 1039, '494': 1040, '705': 1524,
+  '706': 8362, '710': 64288, '711': 64298, '759': 1617, '761': 1776,
+  '763': 1778, '775': 1652, '777': 1764, '778': 1780, '779': 1781, '780': 1782,
+  '782': 771, '783': 64726, '786': 8363, '788': 8532, '790': 768, '791': 769,
+  '792': 768, '795': 803, '797': 64336, '798': 64337, '799': 64342,
+  '800': 64343, '801': 64344, '802': 64345, '803': 64362, '804': 64363,
+  '805': 64364, '2424': 7821, '2425': 7822, '2426': 7823, '2427': 7824,
+  '2428': 7825, '2429': 7826, '2430': 7827, '2433': 7682, '2678': 8045,
+  '2679': 8046, '2830': 1552, '2838': 686, '2840': 751, '2842': 753,
+  '2843': 754, '2844': 755, '2846': 757, '2856': 767, '2857': 848, '2858': 849,
+  '2862': 853, '2863': 854, '2864': 855, '2865': 861, '2866': 862, '2906': 7460,
+  '2908': 7462, '2909': 7463, '2910': 7464, '2912': 7466, '2913': 7467,
+  '2914': 7468, '2916': 7470, '2917': 7471, '2918': 7472, '2920': 7474,
+  '2921': 7475, '2922': 7476, '2924': 7478, '2925': 7479, '2926': 7480,
+  '2928': 7482, '2929': 7483, '2930': 7484, '2932': 7486, '2933': 7487,
+  '2934': 7488, '2936': 7490, '2937': 7491, '2938': 7492, '2940': 7494,
+  '2941': 7495, '2942': 7496, '2944': 7498, '2946': 7500, '2948': 7502,
+  '2950': 7504, '2951': 7505, '2952': 7506, '2954': 7508, '2955': 7509,
+  '2956': 7510, '2958': 7512, '2959': 7513, '2960': 7514, '2962': 7516,
+  '2963': 7517, '2964': 7518, '2966': 7520, '2967': 7521, '2968': 7522,
+  '2970': 7524, '2971': 7525, '2972': 7526, '2974': 7528, '2975': 7529,
+  '2976': 7530, '2978': 1537, '2979': 1538, '2980': 1539, '2982': 1549,
+  '2983': 1551, '2984': 1552, '2986': 1554, '2987': 1555, '2988': 1556,
+  '2990': 1623, '2991': 1624, '2995': 1775, '2999': 1791, '3002': 64290,
+  '3003': 64291, '3004': 64292, '3006': 64294, '3007': 64295, '3008': 64296,
+  '3011': 1900, '3014': 8223, '3015': 8244, '3017': 7532, '3018': 7533,
+  '3019': 7534, '3075': 7590, '3076': 7591, '3079': 7594, '3080': 7595,
+  '3083': 7598, '3084': 7599, '3087': 7602, '3088': 7603, '3091': 7606,
+  '3092': 7607, '3095': 7610, '3096': 7611, '3099': 7614, '3100': 7615,
+  '3103': 7618, '3104': 7619, '3107': 8337, '3108': 8338, '3116': 1884,
+  '3119': 1885, '3120': 1885, '3123': 1886, '3124': 1886, '3127': 1887,
+  '3128': 1887, '3131': 1888, '3132': 1888, '3135': 1889, '3136': 1889,
+  '3139': 1890, '3140': 1890, '3143': 1891, '3144': 1891, '3147': 1892,
+  '3148': 1892, '3153': 580, '3154': 581, '3157': 584, '3158': 585, '3161': 588,
+  '3162': 589, '3165': 891, '3166': 892, '3169': 1274, '3170': 1275,
+  '3173': 1278, '3174': 1279, '3181': 7622, '3182': 7623, '3282': 11799,
+  '3316': 578, '3379': 42785, '3393': 1159, '3416': 8377
+};
+
+// Some characters, e.g. copyrightserif, are mapped to the private use area and
+// might not be displayed using standard fonts. Mapping/hacking well-known chars
+// to the similar equivalents in the normal characters range.
+var SpecialPUASymbols = {
+  '63721': 0x00A9, // copyrightsans (0xF8E9) => copyright
+  '63193': 0x00A9, // copyrightserif (0xF6D9) => copyright
+  '63720': 0x00AE, // registersans (0xF8E8) => registered
+  '63194': 0x00AE, // registerserif (0xF6DA) => registered
+  '63722': 0x2122, // trademarksans (0xF8EA) => trademark
+  '63195': 0x2122, // trademarkserif (0xF6DB) => trademark
+  '63729': 0x23A7, // bracelefttp (0xF8F1)
+  '63730': 0x23A8, // braceleftmid (0xF8F2)
+  '63731': 0x23A9, // braceleftbt (0xF8F3)
+  '63740': 0x23AB, // bracerighttp (0xF8FC)
+  '63741': 0x23AC, // bracerightmid (0xF8FD)
+  '63742': 0x23AD, // bracerightbt (0xF8FE)
+  '63726': 0x23A1, // bracketlefttp (0xF8EE)
+  '63727': 0x23A2, // bracketleftex (0xF8EF)
+  '63728': 0x23A3, // bracketleftbt (0xF8F0)
+  '63737': 0x23A4, // bracketrighttp (0xF8F9)
+  '63738': 0x23A5, // bracketrightex (0xF8FA)
+  '63739': 0x23A6, // bracketrightbt (0xF8FB)
+  '63723': 0x239B, // parenlefttp (0xF8EB)
+  '63724': 0x239C, // parenleftex (0xF8EC)
+  '63725': 0x239D, // parenleftbt (0xF8ED)
+  '63734': 0x239E, // parenrighttp (0xF8F6)
+  '63735': 0x239F, // parenrightex (0xF8F7)
+  '63736': 0x23A0, // parenrightbt (0xF8F8)
+};
+function mapSpecialUnicodeValues(code) {
+  if (code >= 0xFFF0 && code <= 0xFFFF) { // Specials unicode block.
+    return 0;
+  } else if (code >= 0xF600 && code <= 0xF8FF) {
+    return (SpecialPUASymbols[code] || code);
+  }
+  return code;
+}
+
+var UnicodeRanges = [
+  { 'begin': 0x0000, 'end': 0x007F }, // Basic Latin
+  { 'begin': 0x0080, 'end': 0x00FF }, // Latin-1 Supplement
+  { 'begin': 0x0100, 'end': 0x017F }, // Latin Extended-A
+  { 'begin': 0x0180, 'end': 0x024F }, // Latin Extended-B
+  { 'begin': 0x0250, 'end': 0x02AF }, // IPA Extensions
+  { 'begin': 0x02B0, 'end': 0x02FF }, // Spacing Modifier Letters
+  { 'begin': 0x0300, 'end': 0x036F }, // Combining Diacritical Marks
+  { 'begin': 0x0370, 'end': 0x03FF }, // Greek and Coptic
+  { 'begin': 0x2C80, 'end': 0x2CFF }, // Coptic
+  { 'begin': 0x0400, 'end': 0x04FF }, // Cyrillic
+  { 'begin': 0x0530, 'end': 0x058F }, // Armenian
+  { 'begin': 0x0590, 'end': 0x05FF }, // Hebrew
+  { 'begin': 0xA500, 'end': 0xA63F }, // Vai
+  { 'begin': 0x0600, 'end': 0x06FF }, // Arabic
+  { 'begin': 0x07C0, 'end': 0x07FF }, // NKo
+  { 'begin': 0x0900, 'end': 0x097F }, // Devanagari
+  { 'begin': 0x0980, 'end': 0x09FF }, // Bengali
+  { 'begin': 0x0A00, 'end': 0x0A7F }, // Gurmukhi
+  { 'begin': 0x0A80, 'end': 0x0AFF }, // Gujarati
+  { 'begin': 0x0B00, 'end': 0x0B7F }, // Oriya
+  { 'begin': 0x0B80, 'end': 0x0BFF }, // Tamil
+  { 'begin': 0x0C00, 'end': 0x0C7F }, // Telugu
+  { 'begin': 0x0C80, 'end': 0x0CFF }, // Kannada
+  { 'begin': 0x0D00, 'end': 0x0D7F }, // Malayalam
+  { 'begin': 0x0E00, 'end': 0x0E7F }, // Thai
+  { 'begin': 0x0E80, 'end': 0x0EFF }, // Lao
+  { 'begin': 0x10A0, 'end': 0x10FF }, // Georgian
+  { 'begin': 0x1B00, 'end': 0x1B7F }, // Balinese
+  { 'begin': 0x1100, 'end': 0x11FF }, // Hangul Jamo
+  { 'begin': 0x1E00, 'end': 0x1EFF }, // Latin Extended Additional
+  { 'begin': 0x1F00, 'end': 0x1FFF }, // Greek Extended
+  { 'begin': 0x2000, 'end': 0x206F }, // General Punctuation
+  { 'begin': 0x2070, 'end': 0x209F }, // Superscripts And Subscripts
+  { 'begin': 0x20A0, 'end': 0x20CF }, // Currency Symbol
+  { 'begin': 0x20D0, 'end': 0x20FF }, // Combining Diacritical Marks For Symbols
+  { 'begin': 0x2100, 'end': 0x214F }, // Letterlike Symbols
+  { 'begin': 0x2150, 'end': 0x218F }, // Number Forms
+  { 'begin': 0x2190, 'end': 0x21FF }, // Arrows
+  { 'begin': 0x2200, 'end': 0x22FF }, // Mathematical Operators
+  { 'begin': 0x2300, 'end': 0x23FF }, // Miscellaneous Technical
+  { 'begin': 0x2400, 'end': 0x243F }, // Control Pictures
+  { 'begin': 0x2440, 'end': 0x245F }, // Optical Character Recognition
+  { 'begin': 0x2460, 'end': 0x24FF }, // Enclosed Alphanumerics
+  { 'begin': 0x2500, 'end': 0x257F }, // Box Drawing
+  { 'begin': 0x2580, 'end': 0x259F }, // Block Elements
+  { 'begin': 0x25A0, 'end': 0x25FF }, // Geometric Shapes
+  { 'begin': 0x2600, 'end': 0x26FF }, // Miscellaneous Symbols
+  { 'begin': 0x2700, 'end': 0x27BF }, // Dingbats
+  { 'begin': 0x3000, 'end': 0x303F }, // CJK Symbols And Punctuation
+  { 'begin': 0x3040, 'end': 0x309F }, // Hiragana
+  { 'begin': 0x30A0, 'end': 0x30FF }, // Katakana
+  { 'begin': 0x3100, 'end': 0x312F }, // Bopomofo
+  { 'begin': 0x3130, 'end': 0x318F }, // Hangul Compatibility Jamo
+  { 'begin': 0xA840, 'end': 0xA87F }, // Phags-pa
+  { 'begin': 0x3200, 'end': 0x32FF }, // Enclosed CJK Letters And Months
+  { 'begin': 0x3300, 'end': 0x33FF }, // CJK Compatibility
+  { 'begin': 0xAC00, 'end': 0xD7AF }, // Hangul Syllables
+  { 'begin': 0xD800, 'end': 0xDFFF }, // Non-Plane 0 *
+  { 'begin': 0x10900, 'end': 0x1091F }, // Phoenicia
+  { 'begin': 0x4E00, 'end': 0x9FFF }, // CJK Unified Ideographs
+  { 'begin': 0xE000, 'end': 0xF8FF }, // Private Use Area (plane 0)
+  { 'begin': 0x31C0, 'end': 0x31EF }, // CJK Strokes
+  { 'begin': 0xFB00, 'end': 0xFB4F }, // Alphabetic Presentation Forms
+  { 'begin': 0xFB50, 'end': 0xFDFF }, // Arabic Presentation Forms-A
+  { 'begin': 0xFE20, 'end': 0xFE2F }, // Combining Half Marks
+  { 'begin': 0xFE10, 'end': 0xFE1F }, // Vertical Forms
+  { 'begin': 0xFE50, 'end': 0xFE6F }, // Small Form Variants
+  { 'begin': 0xFE70, 'end': 0xFEFF }, // Arabic Presentation Forms-B
+  { 'begin': 0xFF00, 'end': 0xFFEF }, // Halfwidth And Fullwidth Forms
+  { 'begin': 0xFFF0, 'end': 0xFFFF }, // Specials
+  { 'begin': 0x0F00, 'end': 0x0FFF }, // Tibetan
+  { 'begin': 0x0700, 'end': 0x074F }, // Syriac
+  { 'begin': 0x0780, 'end': 0x07BF }, // Thaana
+  { 'begin': 0x0D80, 'end': 0x0DFF }, // Sinhala
+  { 'begin': 0x1000, 'end': 0x109F }, // Myanmar
+  { 'begin': 0x1200, 'end': 0x137F }, // Ethiopic
+  { 'begin': 0x13A0, 'end': 0x13FF }, // Cherokee
+  { 'begin': 0x1400, 'end': 0x167F }, // Unified Canadian Aboriginal Syllabics
+  { 'begin': 0x1680, 'end': 0x169F }, // Ogham
+  { 'begin': 0x16A0, 'end': 0x16FF }, // Runic
+  { 'begin': 0x1780, 'end': 0x17FF }, // Khmer
+  { 'begin': 0x1800, 'end': 0x18AF }, // Mongolian
+  { 'begin': 0x2800, 'end': 0x28FF }, // Braille Patterns
+  { 'begin': 0xA000, 'end': 0xA48F }, // Yi Syllables
+  { 'begin': 0x1700, 'end': 0x171F }, // Tagalog
+  { 'begin': 0x10300, 'end': 0x1032F }, // Old Italic
+  { 'begin': 0x10330, 'end': 0x1034F }, // Gothic
+  { 'begin': 0x10400, 'end': 0x1044F }, // Deseret
+  { 'begin': 0x1D000, 'end': 0x1D0FF }, // Byzantine Musical Symbols
+  { 'begin': 0x1D400, 'end': 0x1D7FF }, // Mathematical Alphanumeric Symbols
+  { 'begin': 0xFF000, 'end': 0xFFFFD }, // Private Use (plane 15)
+  { 'begin': 0xFE00, 'end': 0xFE0F }, // Variation Selectors
+  { 'begin': 0xE0000, 'end': 0xE007F }, // Tags
+  { 'begin': 0x1900, 'end': 0x194F }, // Limbu
+  { 'begin': 0x1950, 'end': 0x197F }, // Tai Le
+  { 'begin': 0x1980, 'end': 0x19DF }, // New Tai Lue
+  { 'begin': 0x1A00, 'end': 0x1A1F }, // Buginese
+  { 'begin': 0x2C00, 'end': 0x2C5F }, // Glagolitic
+  { 'begin': 0x2D30, 'end': 0x2D7F }, // Tifinagh
+  { 'begin': 0x4DC0, 'end': 0x4DFF }, // Yijing Hexagram Symbols
+  { 'begin': 0xA800, 'end': 0xA82F }, // Syloti Nagri
+  { 'begin': 0x10000, 'end': 0x1007F }, // Linear B Syllabary
+  { 'begin': 0x10140, 'end': 0x1018F }, // Ancient Greek Numbers
+  { 'begin': 0x10380, 'end': 0x1039F }, // Ugaritic
+  { 'begin': 0x103A0, 'end': 0x103DF }, // Old Persian
+  { 'begin': 0x10450, 'end': 0x1047F }, // Shavian
+  { 'begin': 0x10480, 'end': 0x104AF }, // Osmanya
+  { 'begin': 0x10800, 'end': 0x1083F }, // Cypriot Syllabary
+  { 'begin': 0x10A00, 'end': 0x10A5F }, // Kharoshthi
+  { 'begin': 0x1D300, 'end': 0x1D35F }, // Tai Xuan Jing Symbols
+  { 'begin': 0x12000, 'end': 0x123FF }, // Cuneiform
+  { 'begin': 0x1D360, 'end': 0x1D37F }, // Counting Rod Numerals
+  { 'begin': 0x1B80, 'end': 0x1BBF }, // Sundanese
+  { 'begin': 0x1C00, 'end': 0x1C4F }, // Lepcha
+  { 'begin': 0x1C50, 'end': 0x1C7F }, // Ol Chiki
+  { 'begin': 0xA880, 'end': 0xA8DF }, // Saurashtra
+  { 'begin': 0xA900, 'end': 0xA92F }, // Kayah Li
+  { 'begin': 0xA930, 'end': 0xA95F }, // Rejang
+  { 'begin': 0xAA00, 'end': 0xAA5F }, // Cham
+  { 'begin': 0x10190, 'end': 0x101CF }, // Ancient Symbols
+  { 'begin': 0x101D0, 'end': 0x101FF }, // Phaistos Disc
+  { 'begin': 0x102A0, 'end': 0x102DF }, // Carian
+  { 'begin': 0x1F030, 'end': 0x1F09F }  // Domino Tiles
+];
+
+var MacStandardGlyphOrdering = [
+  '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl',
+  'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft',
+  'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash',
+  'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
+  'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at',
+  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+  'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft',
+  'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b',
+  'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
+  'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright',
+  'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde',
+  'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis',
+  'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',
+  'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve',
+  'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex',
+  'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet',
+  'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute',
+  'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal',
+  'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi',
+  'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash',
+  'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin',
+  'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis',
+  'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash',
+  'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright',
+  'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency',
+  'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered',
+  'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex',
+  'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex',
+  'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute',
+  'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron',
+  'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron',
+  'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar',
+  'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply',
+  'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter',
+  'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla',
+  'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
+
+function getUnicodeRangeFor(value) {
+  for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {
+    var range = UnicodeRanges[i];
+    if (value >= range.begin && value < range.end) {
+      return i;
+    }
+  }
+  return -1;
+}
+
+function isRTLRangeFor(value) {
+  var range = UnicodeRanges[13];
+  if (value >= range.begin && value < range.end) {
+    return true;
+  }
+  range = UnicodeRanges[11];
+  if (value >= range.begin && value < range.end) {
+    return true;
+  }
+  return false;
+}
+
+// The normalization table is obtained by filtering the Unicode characters
+// database with <compat> entries.
+var NormalizedUnicodes = {
+  '\u00A8': '\u0020\u0308',
+  '\u00AF': '\u0020\u0304',
+  '\u00B4': '\u0020\u0301',
+  '\u00B5': '\u03BC',
+  '\u00B8': '\u0020\u0327',
+  '\u0132': '\u0049\u004A',
+  '\u0133': '\u0069\u006A',
+  '\u013F': '\u004C\u00B7',
+  '\u0140': '\u006C\u00B7',
+  '\u0149': '\u02BC\u006E',
+  '\u017F': '\u0073',
+  '\u01C4': '\u0044\u017D',
+  '\u01C5': '\u0044\u017E',
+  '\u01C6': '\u0064\u017E',
+  '\u01C7': '\u004C\u004A',
+  '\u01C8': '\u004C\u006A',
+  '\u01C9': '\u006C\u006A',
+  '\u01CA': '\u004E\u004A',
+  '\u01CB': '\u004E\u006A',
+  '\u01CC': '\u006E\u006A',
+  '\u01F1': '\u0044\u005A',
+  '\u01F2': '\u0044\u007A',
+  '\u01F3': '\u0064\u007A',
+  '\u02D8': '\u0020\u0306',
+  '\u02D9': '\u0020\u0307',
+  '\u02DA': '\u0020\u030A',
+  '\u02DB': '\u0020\u0328',
+  '\u02DC': '\u0020\u0303',
+  '\u02DD': '\u0020\u030B',
+  '\u037A': '\u0020\u0345',
+  '\u0384': '\u0020\u0301',
+  '\u03D0': '\u03B2',
+  '\u03D1': '\u03B8',
+  '\u03D2': '\u03A5',
+  '\u03D5': '\u03C6',
+  '\u03D6': '\u03C0',
+  '\u03F0': '\u03BA',
+  '\u03F1': '\u03C1',
+  '\u03F2': '\u03C2',
+  '\u03F4': '\u0398',
+  '\u03F5': '\u03B5',
+  '\u03F9': '\u03A3',
+  '\u0587': '\u0565\u0582',
+  '\u0675': '\u0627\u0674',
+  '\u0676': '\u0648\u0674',
+  '\u0677': '\u06C7\u0674',
+  '\u0678': '\u064A\u0674',
+  '\u0E33': '\u0E4D\u0E32',
+  '\u0EB3': '\u0ECD\u0EB2',
+  '\u0EDC': '\u0EAB\u0E99',
+  '\u0EDD': '\u0EAB\u0EA1',
+  '\u0F77': '\u0FB2\u0F81',
+  '\u0F79': '\u0FB3\u0F81',
+  '\u1E9A': '\u0061\u02BE',
+  '\u1FBD': '\u0020\u0313',
+  '\u1FBF': '\u0020\u0313',
+  '\u1FC0': '\u0020\u0342',
+  '\u1FFE': '\u0020\u0314',
+  '\u2002': '\u0020',
+  '\u2003': '\u0020',
+  '\u2004': '\u0020',
+  '\u2005': '\u0020',
+  '\u2006': '\u0020',
+  '\u2008': '\u0020',
+  '\u2009': '\u0020',
+  '\u200A': '\u0020',
+  '\u2017': '\u0020\u0333',
+  '\u2024': '\u002E',
+  '\u2025': '\u002E\u002E',
+  '\u2026': '\u002E\u002E\u002E',
+  '\u2033': '\u2032\u2032',
+  '\u2034': '\u2032\u2032\u2032',
+  '\u2036': '\u2035\u2035',
+  '\u2037': '\u2035\u2035\u2035',
+  '\u203C': '\u0021\u0021',
+  '\u203E': '\u0020\u0305',
+  '\u2047': '\u003F\u003F',
+  '\u2048': '\u003F\u0021',
+  '\u2049': '\u0021\u003F',
+  '\u2057': '\u2032\u2032\u2032\u2032',
+  '\u205F': '\u0020',
+  '\u20A8': '\u0052\u0073',
+  '\u2100': '\u0061\u002F\u0063',
+  '\u2101': '\u0061\u002F\u0073',
+  '\u2103': '\u00B0\u0043',
+  '\u2105': '\u0063\u002F\u006F',
+  '\u2106': '\u0063\u002F\u0075',
+  '\u2107': '\u0190',
+  '\u2109': '\u00B0\u0046',
+  '\u2116': '\u004E\u006F',
+  '\u2121': '\u0054\u0045\u004C',
+  '\u2135': '\u05D0',
+  '\u2136': '\u05D1',
+  '\u2137': '\u05D2',
+  '\u2138': '\u05D3',
+  '\u213B': '\u0046\u0041\u0058',
+  '\u2160': '\u0049',
+  '\u2161': '\u0049\u0049',
+  '\u2162': '\u0049\u0049\u0049',
+  '\u2163': '\u0049\u0056',
+  '\u2164': '\u0056',
+  '\u2165': '\u0056\u0049',
+  '\u2166': '\u0056\u0049\u0049',
+  '\u2167': '\u0056\u0049\u0049\u0049',
+  '\u2168': '\u0049\u0058',
+  '\u2169': '\u0058',
+  '\u216A': '\u0058\u0049',
+  '\u216B': '\u0058\u0049\u0049',
+  '\u216C': '\u004C',
+  '\u216D': '\u0043',
+  '\u216E': '\u0044',
+  '\u216F': '\u004D',
+  '\u2170': '\u0069',
+  '\u2171': '\u0069\u0069',
+  '\u2172': '\u0069\u0069\u0069',
+  '\u2173': '\u0069\u0076',
+  '\u2174': '\u0076',
+  '\u2175': '\u0076\u0069',
+  '\u2176': '\u0076\u0069\u0069',
+  '\u2177': '\u0076\u0069\u0069\u0069',
+  '\u2178': '\u0069\u0078',
+  '\u2179': '\u0078',
+  '\u217A': '\u0078\u0069',
+  '\u217B': '\u0078\u0069\u0069',
+  '\u217C': '\u006C',
+  '\u217D': '\u0063',
+  '\u217E': '\u0064',
+  '\u217F': '\u006D',
+  '\u222C': '\u222B\u222B',
+  '\u222D': '\u222B\u222B\u222B',
+  '\u222F': '\u222E\u222E',
+  '\u2230': '\u222E\u222E\u222E',
+  '\u2474': '\u0028\u0031\u0029',
+  '\u2475': '\u0028\u0032\u0029',
+  '\u2476': '\u0028\u0033\u0029',
+  '\u2477': '\u0028\u0034\u0029',
+  '\u2478': '\u0028\u0035\u0029',
+  '\u2479': '\u0028\u0036\u0029',
+  '\u247A': '\u0028\u0037\u0029',
+  '\u247B': '\u0028\u0038\u0029',
+  '\u247C': '\u0028\u0039\u0029',
+  '\u247D': '\u0028\u0031\u0030\u0029',
+  '\u247E': '\u0028\u0031\u0031\u0029',
+  '\u247F': '\u0028\u0031\u0032\u0029',
+  '\u2480': '\u0028\u0031\u0033\u0029',
+  '\u2481': '\u0028\u0031\u0034\u0029',
+  '\u2482': '\u0028\u0031\u0035\u0029',
+  '\u2483': '\u0028\u0031\u0036\u0029',
+  '\u2484': '\u0028\u0031\u0037\u0029',
+  '\u2485': '\u0028\u0031\u0038\u0029',
+  '\u2486': '\u0028\u0031\u0039\u0029',
+  '\u2487': '\u0028\u0032\u0030\u0029',
+  '\u2488': '\u0031\u002E',
+  '\u2489': '\u0032\u002E',
+  '\u248A': '\u0033\u002E',
+  '\u248B': '\u0034\u002E',
+  '\u248C': '\u0035\u002E',
+  '\u248D': '\u0036\u002E',
+  '\u248E': '\u0037\u002E',
+  '\u248F': '\u0038\u002E',
+  '\u2490': '\u0039\u002E',
+  '\u2491': '\u0031\u0030\u002E',
+  '\u2492': '\u0031\u0031\u002E',
+  '\u2493': '\u0031\u0032\u002E',
+  '\u2494': '\u0031\u0033\u002E',
+  '\u2495': '\u0031\u0034\u002E',
+  '\u2496': '\u0031\u0035\u002E',
+  '\u2497': '\u0031\u0036\u002E',
+  '\u2498': '\u0031\u0037\u002E',
+  '\u2499': '\u0031\u0038\u002E',
+  '\u249A': '\u0031\u0039\u002E',
+  '\u249B': '\u0032\u0030\u002E',
+  '\u249C': '\u0028\u0061\u0029',
+  '\u249D': '\u0028\u0062\u0029',
+  '\u249E': '\u0028\u0063\u0029',
+  '\u249F': '\u0028\u0064\u0029',
+  '\u24A0': '\u0028\u0065\u0029',
+  '\u24A1': '\u0028\u0066\u0029',
+  '\u24A2': '\u0028\u0067\u0029',
+  '\u24A3': '\u0028\u0068\u0029',
+  '\u24A4': '\u0028\u0069\u0029',
+  '\u24A5': '\u0028\u006A\u0029',
+  '\u24A6': '\u0028\u006B\u0029',
+  '\u24A7': '\u0028\u006C\u0029',
+  '\u24A8': '\u0028\u006D\u0029',
+  '\u24A9': '\u0028\u006E\u0029',
+  '\u24AA': '\u0028\u006F\u0029',
+  '\u24AB': '\u0028\u0070\u0029',
+  '\u24AC': '\u0028\u0071\u0029',
+  '\u24AD': '\u0028\u0072\u0029',
+  '\u24AE': '\u0028\u0073\u0029',
+  '\u24AF': '\u0028\u0074\u0029',
+  '\u24B0': '\u0028\u0075\u0029',
+  '\u24B1': '\u0028\u0076\u0029',
+  '\u24B2': '\u0028\u0077\u0029',
+  '\u24B3': '\u0028\u0078\u0029',
+  '\u24B4': '\u0028\u0079\u0029',
+  '\u24B5': '\u0028\u007A\u0029',
+  '\u2A0C': '\u222B\u222B\u222B\u222B',
+  '\u2A74': '\u003A\u003A\u003D',
+  '\u2A75': '\u003D\u003D',
+  '\u2A76': '\u003D\u003D\u003D',
+  '\u2E9F': '\u6BCD',
+  '\u2EF3': '\u9F9F',
+  '\u2F00': '\u4E00',
+  '\u2F01': '\u4E28',
+  '\u2F02': '\u4E36',
+  '\u2F03': '\u4E3F',
+  '\u2F04': '\u4E59',
+  '\u2F05': '\u4E85',
+  '\u2F06': '\u4E8C',
+  '\u2F07': '\u4EA0',
+  '\u2F08': '\u4EBA',
+  '\u2F09': '\u513F',
+  '\u2F0A': '\u5165',
+  '\u2F0B': '\u516B',
+  '\u2F0C': '\u5182',
+  '\u2F0D': '\u5196',
+  '\u2F0E': '\u51AB',
+  '\u2F0F': '\u51E0',
+  '\u2F10': '\u51F5',
+  '\u2F11': '\u5200',
+  '\u2F12': '\u529B',
+  '\u2F13': '\u52F9',
+  '\u2F14': '\u5315',
+  '\u2F15': '\u531A',
+  '\u2F16': '\u5338',
+  '\u2F17': '\u5341',
+  '\u2F18': '\u535C',
+  '\u2F19': '\u5369',
+  '\u2F1A': '\u5382',
+  '\u2F1B': '\u53B6',
+  '\u2F1C': '\u53C8',
+  '\u2F1D': '\u53E3',
+  '\u2F1E': '\u56D7',
+  '\u2F1F': '\u571F',
+  '\u2F20': '\u58EB',
+  '\u2F21': '\u5902',
+  '\u2F22': '\u590A',
+  '\u2F23': '\u5915',
+  '\u2F24': '\u5927',
+  '\u2F25': '\u5973',
+  '\u2F26': '\u5B50',
+  '\u2F27': '\u5B80',
+  '\u2F28': '\u5BF8',
+  '\u2F29': '\u5C0F',
+  '\u2F2A': '\u5C22',
+  '\u2F2B': '\u5C38',
+  '\u2F2C': '\u5C6E',
+  '\u2F2D': '\u5C71',
+  '\u2F2E': '\u5DDB',
+  '\u2F2F': '\u5DE5',
+  '\u2F30': '\u5DF1',
+  '\u2F31': '\u5DFE',
+  '\u2F32': '\u5E72',
+  '\u2F33': '\u5E7A',
+  '\u2F34': '\u5E7F',
+  '\u2F35': '\u5EF4',
+  '\u2F36': '\u5EFE',
+  '\u2F37': '\u5F0B',
+  '\u2F38': '\u5F13',
+  '\u2F39': '\u5F50',
+  '\u2F3A': '\u5F61',
+  '\u2F3B': '\u5F73',
+  '\u2F3C': '\u5FC3',
+  '\u2F3D': '\u6208',
+  '\u2F3E': '\u6236',
+  '\u2F3F': '\u624B',
+  '\u2F40': '\u652F',
+  '\u2F41': '\u6534',
+  '\u2F42': '\u6587',
+  '\u2F43': '\u6597',
+  '\u2F44': '\u65A4',
+  '\u2F45': '\u65B9',
+  '\u2F46': '\u65E0',
+  '\u2F47': '\u65E5',
+  '\u2F48': '\u66F0',
+  '\u2F49': '\u6708',
+  '\u2F4A': '\u6728',
+  '\u2F4B': '\u6B20',
+  '\u2F4C': '\u6B62',
+  '\u2F4D': '\u6B79',
+  '\u2F4E': '\u6BB3',
+  '\u2F4F': '\u6BCB',
+  '\u2F50': '\u6BD4',
+  '\u2F51': '\u6BDB',
+  '\u2F52': '\u6C0F',
+  '\u2F53': '\u6C14',
+  '\u2F54': '\u6C34',
+  '\u2F55': '\u706B',
+  '\u2F56': '\u722A',
+  '\u2F57': '\u7236',
+  '\u2F58': '\u723B',
+  '\u2F59': '\u723F',
+  '\u2F5A': '\u7247',
+  '\u2F5B': '\u7259',
+  '\u2F5C': '\u725B',
+  '\u2F5D': '\u72AC',
+  '\u2F5E': '\u7384',
+  '\u2F5F': '\u7389',
+  '\u2F60': '\u74DC',
+  '\u2F61': '\u74E6',
+  '\u2F62': '\u7518',
+  '\u2F63': '\u751F',
+  '\u2F64': '\u7528',
+  '\u2F65': '\u7530',
+  '\u2F66': '\u758B',
+  '\u2F67': '\u7592',
+  '\u2F68': '\u7676',
+  '\u2F69': '\u767D',
+  '\u2F6A': '\u76AE',
+  '\u2F6B': '\u76BF',
+  '\u2F6C': '\u76EE',
+  '\u2F6D': '\u77DB',
+  '\u2F6E': '\u77E2',
+  '\u2F6F': '\u77F3',
+  '\u2F70': '\u793A',
+  '\u2F71': '\u79B8',
+  '\u2F72': '\u79BE',
+  '\u2F73': '\u7A74',
+  '\u2F74': '\u7ACB',
+  '\u2F75': '\u7AF9',
+  '\u2F76': '\u7C73',
+  '\u2F77': '\u7CF8',
+  '\u2F78': '\u7F36',
+  '\u2F79': '\u7F51',
+  '\u2F7A': '\u7F8A',
+  '\u2F7B': '\u7FBD',
+  '\u2F7C': '\u8001',
+  '\u2F7D': '\u800C',
+  '\u2F7E': '\u8012',
+  '\u2F7F': '\u8033',
+  '\u2F80': '\u807F',
+  '\u2F81': '\u8089',
+  '\u2F82': '\u81E3',
+  '\u2F83': '\u81EA',
+  '\u2F84': '\u81F3',
+  '\u2F85': '\u81FC',
+  '\u2F86': '\u820C',
+  '\u2F87': '\u821B',
+  '\u2F88': '\u821F',
+  '\u2F89': '\u826E',
+  '\u2F8A': '\u8272',
+  '\u2F8B': '\u8278',
+  '\u2F8C': '\u864D',
+  '\u2F8D': '\u866B',
+  '\u2F8E': '\u8840',
+  '\u2F8F': '\u884C',
+  '\u2F90': '\u8863',
+  '\u2F91': '\u897E',
+  '\u2F92': '\u898B',
+  '\u2F93': '\u89D2',
+  '\u2F94': '\u8A00',
+  '\u2F95': '\u8C37',
+  '\u2F96': '\u8C46',
+  '\u2F97': '\u8C55',
+  '\u2F98': '\u8C78',
+  '\u2F99': '\u8C9D',
+  '\u2F9A': '\u8D64',
+  '\u2F9B': '\u8D70',
+  '\u2F9C': '\u8DB3',
+  '\u2F9D': '\u8EAB',
+  '\u2F9E': '\u8ECA',
+  '\u2F9F': '\u8F9B',
+  '\u2FA0': '\u8FB0',
+  '\u2FA1': '\u8FB5',
+  '\u2FA2': '\u9091',
+  '\u2FA3': '\u9149',
+  '\u2FA4': '\u91C6',
+  '\u2FA5': '\u91CC',
+  '\u2FA6': '\u91D1',
+  '\u2FA7': '\u9577',
+  '\u2FA8': '\u9580',
+  '\u2FA9': '\u961C',
+  '\u2FAA': '\u96B6',
+  '\u2FAB': '\u96B9',
+  '\u2FAC': '\u96E8',
+  '\u2FAD': '\u9751',
+  '\u2FAE': '\u975E',
+  '\u2FAF': '\u9762',
+  '\u2FB0': '\u9769',
+  '\u2FB1': '\u97CB',
+  '\u2FB2': '\u97ED',
+  '\u2FB3': '\u97F3',
+  '\u2FB4': '\u9801',
+  '\u2FB5': '\u98A8',
+  '\u2FB6': '\u98DB',
+  '\u2FB7': '\u98DF',
+  '\u2FB8': '\u9996',
+  '\u2FB9': '\u9999',
+  '\u2FBA': '\u99AC',
+  '\u2FBB': '\u9AA8',
+  '\u2FBC': '\u9AD8',
+  '\u2FBD': '\u9ADF',
+  '\u2FBE': '\u9B25',
+  '\u2FBF': '\u9B2F',
+  '\u2FC0': '\u9B32',
+  '\u2FC1': '\u9B3C',
+  '\u2FC2': '\u9B5A',
+  '\u2FC3': '\u9CE5',
+  '\u2FC4': '\u9E75',
+  '\u2FC5': '\u9E7F',
+  '\u2FC6': '\u9EA5',
+  '\u2FC7': '\u9EBB',
+  '\u2FC8': '\u9EC3',
+  '\u2FC9': '\u9ECD',
+  '\u2FCA': '\u9ED1',
+  '\u2FCB': '\u9EF9',
+  '\u2FCC': '\u9EFD',
+  '\u2FCD': '\u9F0E',
+  '\u2FCE': '\u9F13',
+  '\u2FCF': '\u9F20',
+  '\u2FD0': '\u9F3B',
+  '\u2FD1': '\u9F4A',
+  '\u2FD2': '\u9F52',
+  '\u2FD3': '\u9F8D',
+  '\u2FD4': '\u9F9C',
+  '\u2FD5': '\u9FA0',
+  '\u3036': '\u3012',
+  '\u3038': '\u5341',
+  '\u3039': '\u5344',
+  '\u303A': '\u5345',
+  '\u309B': '\u0020\u3099',
+  '\u309C': '\u0020\u309A',
+  '\u3131': '\u1100',
+  '\u3132': '\u1101',
+  '\u3133': '\u11AA',
+  '\u3134': '\u1102',
+  '\u3135': '\u11AC',
+  '\u3136': '\u11AD',
+  '\u3137': '\u1103',
+  '\u3138': '\u1104',
+  '\u3139': '\u1105',
+  '\u313A': '\u11B0',
+  '\u313B': '\u11B1',
+  '\u313C': '\u11B2',
+  '\u313D': '\u11B3',
+  '\u313E': '\u11B4',
+  '\u313F': '\u11B5',
+  '\u3140': '\u111A',
+  '\u3141': '\u1106',
+  '\u3142': '\u1107',
+  '\u3143': '\u1108',
+  '\u3144': '\u1121',
+  '\u3145': '\u1109',
+  '\u3146': '\u110A',
+  '\u3147': '\u110B',
+  '\u3148': '\u110C',
+  '\u3149': '\u110D',
+  '\u314A': '\u110E',
+  '\u314B': '\u110F',
+  '\u314C': '\u1110',
+  '\u314D': '\u1111',
+  '\u314E': '\u1112',
+  '\u314F': '\u1161',
+  '\u3150': '\u1162',
+  '\u3151': '\u1163',
+  '\u3152': '\u1164',
+  '\u3153': '\u1165',
+  '\u3154': '\u1166',
+  '\u3155': '\u1167',
+  '\u3156': '\u1168',
+  '\u3157': '\u1169',
+  '\u3158': '\u116A',
+  '\u3159': '\u116B',
+  '\u315A': '\u116C',
+  '\u315B': '\u116D',
+  '\u315C': '\u116E',
+  '\u315D': '\u116F',
+  '\u315E': '\u1170',
+  '\u315F': '\u1171',
+  '\u3160': '\u1172',
+  '\u3161': '\u1173',
+  '\u3162': '\u1174',
+  '\u3163': '\u1175',
+  '\u3164': '\u1160',
+  '\u3165': '\u1114',
+  '\u3166': '\u1115',
+  '\u3167': '\u11C7',
+  '\u3168': '\u11C8',
+  '\u3169': '\u11CC',
+  '\u316A': '\u11CE',
+  '\u316B': '\u11D3',
+  '\u316C': '\u11D7',
+  '\u316D': '\u11D9',
+  '\u316E': '\u111C',
+  '\u316F': '\u11DD',
+  '\u3170': '\u11DF',
+  '\u3171': '\u111D',
+  '\u3172': '\u111E',
+  '\u3173': '\u1120',
+  '\u3174': '\u1122',
+  '\u3175': '\u1123',
+  '\u3176': '\u1127',
+  '\u3177': '\u1129',
+  '\u3178': '\u112B',
+  '\u3179': '\u112C',
+  '\u317A': '\u112D',
+  '\u317B': '\u112E',
+  '\u317C': '\u112F',
+  '\u317D': '\u1132',
+  '\u317E': '\u1136',
+  '\u317F': '\u1140',
+  '\u3180': '\u1147',
+  '\u3181': '\u114C',
+  '\u3182': '\u11F1',
+  '\u3183': '\u11F2',
+  '\u3184': '\u1157',
+  '\u3185': '\u1158',
+  '\u3186': '\u1159',
+  '\u3187': '\u1184',
+  '\u3188': '\u1185',
+  '\u3189': '\u1188',
+  '\u318A': '\u1191',
+  '\u318B': '\u1192',
+  '\u318C': '\u1194',
+  '\u318D': '\u119E',
+  '\u318E': '\u11A1',
+  '\u3200': '\u0028\u1100\u0029',
+  '\u3201': '\u0028\u1102\u0029',
+  '\u3202': '\u0028\u1103\u0029',
+  '\u3203': '\u0028\u1105\u0029',
+  '\u3204': '\u0028\u1106\u0029',
+  '\u3205': '\u0028\u1107\u0029',
+  '\u3206': '\u0028\u1109\u0029',
+  '\u3207': '\u0028\u110B\u0029',
+  '\u3208': '\u0028\u110C\u0029',
+  '\u3209': '\u0028\u110E\u0029',
+  '\u320A': '\u0028\u110F\u0029',
+  '\u320B': '\u0028\u1110\u0029',
+  '\u320C': '\u0028\u1111\u0029',
+  '\u320D': '\u0028\u1112\u0029',
+  '\u320E': '\u0028\u1100\u1161\u0029',
+  '\u320F': '\u0028\u1102\u1161\u0029',
+  '\u3210': '\u0028\u1103\u1161\u0029',
+  '\u3211': '\u0028\u1105\u1161\u0029',
+  '\u3212': '\u0028\u1106\u1161\u0029',
+  '\u3213': '\u0028\u1107\u1161\u0029',
+  '\u3214': '\u0028\u1109\u1161\u0029',
+  '\u3215': '\u0028\u110B\u1161\u0029',
+  '\u3216': '\u0028\u110C\u1161\u0029',
+  '\u3217': '\u0028\u110E\u1161\u0029',
+  '\u3218': '\u0028\u110F\u1161\u0029',
+  '\u3219': '\u0028\u1110\u1161\u0029',
+  '\u321A': '\u0028\u1111\u1161\u0029',
+  '\u321B': '\u0028\u1112\u1161\u0029',
+  '\u321C': '\u0028\u110C\u116E\u0029',
+  '\u321D': '\u0028\u110B\u1169\u110C\u1165\u11AB\u0029',
+  '\u321E': '\u0028\u110B\u1169\u1112\u116E\u0029',
+  '\u3220': '\u0028\u4E00\u0029',
+  '\u3221': '\u0028\u4E8C\u0029',
+  '\u3222': '\u0028\u4E09\u0029',
+  '\u3223': '\u0028\u56DB\u0029',
+  '\u3224': '\u0028\u4E94\u0029',
+  '\u3225': '\u0028\u516D\u0029',
+  '\u3226': '\u0028\u4E03\u0029',
+  '\u3227': '\u0028\u516B\u0029',
+  '\u3228': '\u0028\u4E5D\u0029',
+  '\u3229': '\u0028\u5341\u0029',
+  '\u322A': '\u0028\u6708\u0029',
+  '\u322B': '\u0028\u706B\u0029',
+  '\u322C': '\u0028\u6C34\u0029',
+  '\u322D': '\u0028\u6728\u0029',
+  '\u322E': '\u0028\u91D1\u0029',
+  '\u322F': '\u0028\u571F\u0029',
+  '\u3230': '\u0028\u65E5\u0029',
+  '\u3231': '\u0028\u682A\u0029',
+  '\u3232': '\u0028\u6709\u0029',
+  '\u3233': '\u0028\u793E\u0029',
+  '\u3234': '\u0028\u540D\u0029',
+  '\u3235': '\u0028\u7279\u0029',
+  '\u3236': '\u0028\u8CA1\u0029',
+  '\u3237': '\u0028\u795D\u0029',
+  '\u3238': '\u0028\u52B4\u0029',
+  '\u3239': '\u0028\u4EE3\u0029',
+  '\u323A': '\u0028\u547C\u0029',
+  '\u323B': '\u0028\u5B66\u0029',
+  '\u323C': '\u0028\u76E3\u0029',
+  '\u323D': '\u0028\u4F01\u0029',
+  '\u323E': '\u0028\u8CC7\u0029',
+  '\u323F': '\u0028\u5354\u0029',
+  '\u3240': '\u0028\u796D\u0029',
+  '\u3241': '\u0028\u4F11\u0029',
+  '\u3242': '\u0028\u81EA\u0029',
+  '\u3243': '\u0028\u81F3\u0029',
+  '\u32C0': '\u0031\u6708',
+  '\u32C1': '\u0032\u6708',
+  '\u32C2': '\u0033\u6708',
+  '\u32C3': '\u0034\u6708',
+  '\u32C4': '\u0035\u6708',
+  '\u32C5': '\u0036\u6708',
+  '\u32C6': '\u0037\u6708',
+  '\u32C7': '\u0038\u6708',
+  '\u32C8': '\u0039\u6708',
+  '\u32C9': '\u0031\u0030\u6708',
+  '\u32CA': '\u0031\u0031\u6708',
+  '\u32CB': '\u0031\u0032\u6708',
+  '\u3358': '\u0030\u70B9',
+  '\u3359': '\u0031\u70B9',
+  '\u335A': '\u0032\u70B9',
+  '\u335B': '\u0033\u70B9',
+  '\u335C': '\u0034\u70B9',
+  '\u335D': '\u0035\u70B9',
+  '\u335E': '\u0036\u70B9',
+  '\u335F': '\u0037\u70B9',
+  '\u3360': '\u0038\u70B9',
+  '\u3361': '\u0039\u70B9',
+  '\u3362': '\u0031\u0030\u70B9',
+  '\u3363': '\u0031\u0031\u70B9',
+  '\u3364': '\u0031\u0032\u70B9',
+  '\u3365': '\u0031\u0033\u70B9',
+  '\u3366': '\u0031\u0034\u70B9',
+  '\u3367': '\u0031\u0035\u70B9',
+  '\u3368': '\u0031\u0036\u70B9',
+  '\u3369': '\u0031\u0037\u70B9',
+  '\u336A': '\u0031\u0038\u70B9',
+  '\u336B': '\u0031\u0039\u70B9',
+  '\u336C': '\u0032\u0030\u70B9',
+  '\u336D': '\u0032\u0031\u70B9',
+  '\u336E': '\u0032\u0032\u70B9',
+  '\u336F': '\u0032\u0033\u70B9',
+  '\u3370': '\u0032\u0034\u70B9',
+  '\u33E0': '\u0031\u65E5',
+  '\u33E1': '\u0032\u65E5',
+  '\u33E2': '\u0033\u65E5',
+  '\u33E3': '\u0034\u65E5',
+  '\u33E4': '\u0035\u65E5',
+  '\u33E5': '\u0036\u65E5',
+  '\u33E6': '\u0037\u65E5',
+  '\u33E7': '\u0038\u65E5',
+  '\u33E8': '\u0039\u65E5',
+  '\u33E9': '\u0031\u0030\u65E5',
+  '\u33EA': '\u0031\u0031\u65E5',
+  '\u33EB': '\u0031\u0032\u65E5',
+  '\u33EC': '\u0031\u0033\u65E5',
+  '\u33ED': '\u0031\u0034\u65E5',
+  '\u33EE': '\u0031\u0035\u65E5',
+  '\u33EF': '\u0031\u0036\u65E5',
+  '\u33F0': '\u0031\u0037\u65E5',
+  '\u33F1': '\u0031\u0038\u65E5',
+  '\u33F2': '\u0031\u0039\u65E5',
+  '\u33F3': '\u0032\u0030\u65E5',
+  '\u33F4': '\u0032\u0031\u65E5',
+  '\u33F5': '\u0032\u0032\u65E5',
+  '\u33F6': '\u0032\u0033\u65E5',
+  '\u33F7': '\u0032\u0034\u65E5',
+  '\u33F8': '\u0032\u0035\u65E5',
+  '\u33F9': '\u0032\u0036\u65E5',
+  '\u33FA': '\u0032\u0037\u65E5',
+  '\u33FB': '\u0032\u0038\u65E5',
+  '\u33FC': '\u0032\u0039\u65E5',
+  '\u33FD': '\u0033\u0030\u65E5',
+  '\u33FE': '\u0033\u0031\u65E5',
+  '\uFB00': '\u0066\u0066',
+  '\uFB01': '\u0066\u0069',
+  '\uFB02': '\u0066\u006C',
+  '\uFB03': '\u0066\u0066\u0069',
+  '\uFB04': '\u0066\u0066\u006C',
+  '\uFB05': '\u017F\u0074',
+  '\uFB06': '\u0073\u0074',
+  '\uFB13': '\u0574\u0576',
+  '\uFB14': '\u0574\u0565',
+  '\uFB15': '\u0574\u056B',
+  '\uFB16': '\u057E\u0576',
+  '\uFB17': '\u0574\u056D',
+  '\uFB4F': '\u05D0\u05DC',
+  '\uFB50': '\u0671',
+  '\uFB51': '\u0671',
+  '\uFB52': '\u067B',
+  '\uFB53': '\u067B',
+  '\uFB54': '\u067B',
+  '\uFB55': '\u067B',
+  '\uFB56': '\u067E',
+  '\uFB57': '\u067E',
+  '\uFB58': '\u067E',
+  '\uFB59': '\u067E',
+  '\uFB5A': '\u0680',
+  '\uFB5B': '\u0680',
+  '\uFB5C': '\u0680',
+  '\uFB5D': '\u0680',
+  '\uFB5E': '\u067A',
+  '\uFB5F': '\u067A',
+  '\uFB60': '\u067A',
+  '\uFB61': '\u067A',
+  '\uFB62': '\u067F',
+  '\uFB63': '\u067F',
+  '\uFB64': '\u067F',
+  '\uFB65': '\u067F',
+  '\uFB66': '\u0679',
+  '\uFB67': '\u0679',
+  '\uFB68': '\u0679',
+  '\uFB69': '\u0679',
+  '\uFB6A': '\u06A4',
+  '\uFB6B': '\u06A4',
+  '\uFB6C': '\u06A4',
+  '\uFB6D': '\u06A4',
+  '\uFB6E': '\u06A6',
+  '\uFB6F': '\u06A6',
+  '\uFB70': '\u06A6',
+  '\uFB71': '\u06A6',
+  '\uFB72': '\u0684',
+  '\uFB73': '\u0684',
+  '\uFB74': '\u0684',
+  '\uFB75': '\u0684',
+  '\uFB76': '\u0683',
+  '\uFB77': '\u0683',
+  '\uFB78': '\u0683',
+  '\uFB79': '\u0683',
+  '\uFB7A': '\u0686',
+  '\uFB7B': '\u0686',
+  '\uFB7C': '\u0686',
+  '\uFB7D': '\u0686',
+  '\uFB7E': '\u0687',
+  '\uFB7F': '\u0687',
+  '\uFB80': '\u0687',
+  '\uFB81': '\u0687',
+  '\uFB82': '\u068D',
+  '\uFB83': '\u068D',
+  '\uFB84': '\u068C',
+  '\uFB85': '\u068C',
+  '\uFB86': '\u068E',
+  '\uFB87': '\u068E',
+  '\uFB88': '\u0688',
+  '\uFB89': '\u0688',
+  '\uFB8A': '\u0698',
+  '\uFB8B': '\u0698',
+  '\uFB8C': '\u0691',
+  '\uFB8D': '\u0691',
+  '\uFB8E': '\u06A9',
+  '\uFB8F': '\u06A9',
+  '\uFB90': '\u06A9',
+  '\uFB91': '\u06A9',
+  '\uFB92': '\u06AF',
+  '\uFB93': '\u06AF',
+  '\uFB94': '\u06AF',
+  '\uFB95': '\u06AF',
+  '\uFB96': '\u06B3',
+  '\uFB97': '\u06B3',
+  '\uFB98': '\u06B3',
+  '\uFB99': '\u06B3',
+  '\uFB9A': '\u06B1',
+  '\uFB9B': '\u06B1',
+  '\uFB9C': '\u06B1',
+  '\uFB9D': '\u06B1',
+  '\uFB9E': '\u06BA',
+  '\uFB9F': '\u06BA',
+  '\uFBA0': '\u06BB',
+  '\uFBA1': '\u06BB',
+  '\uFBA2': '\u06BB',
+  '\uFBA3': '\u06BB',
+  '\uFBA4': '\u06C0',
+  '\uFBA5': '\u06C0',
+  '\uFBA6': '\u06C1',
+  '\uFBA7': '\u06C1',
+  '\uFBA8': '\u06C1',
+  '\uFBA9': '\u06C1',
+  '\uFBAA': '\u06BE',
+  '\uFBAB': '\u06BE',
+  '\uFBAC': '\u06BE',
+  '\uFBAD': '\u06BE',
+  '\uFBAE': '\u06D2',
+  '\uFBAF': '\u06D2',
+  '\uFBB0': '\u06D3',
+  '\uFBB1': '\u06D3',
+  '\uFBD3': '\u06AD',
+  '\uFBD4': '\u06AD',
+  '\uFBD5': '\u06AD',
+  '\uFBD6': '\u06AD',
+  '\uFBD7': '\u06C7',
+  '\uFBD8': '\u06C7',
+  '\uFBD9': '\u06C6',
+  '\uFBDA': '\u06C6',
+  '\uFBDB': '\u06C8',
+  '\uFBDC': '\u06C8',
+  '\uFBDD': '\u0677',
+  '\uFBDE': '\u06CB',
+  '\uFBDF': '\u06CB',
+  '\uFBE0': '\u06C5',
+  '\uFBE1': '\u06C5',
+  '\uFBE2': '\u06C9',
+  '\uFBE3': '\u06C9',
+  '\uFBE4': '\u06D0',
+  '\uFBE5': '\u06D0',
+  '\uFBE6': '\u06D0',
+  '\uFBE7': '\u06D0',
+  '\uFBE8': '\u0649',
+  '\uFBE9': '\u0649',
+  '\uFBEA': '\u0626\u0627',
+  '\uFBEB': '\u0626\u0627',
+  '\uFBEC': '\u0626\u06D5',
+  '\uFBED': '\u0626\u06D5',
+  '\uFBEE': '\u0626\u0648',
+  '\uFBEF': '\u0626\u0648',
+  '\uFBF0': '\u0626\u06C7',
+  '\uFBF1': '\u0626\u06C7',
+  '\uFBF2': '\u0626\u06C6',
+  '\uFBF3': '\u0626\u06C6',
+  '\uFBF4': '\u0626\u06C8',
+  '\uFBF5': '\u0626\u06C8',
+  '\uFBF6': '\u0626\u06D0',
+  '\uFBF7': '\u0626\u06D0',
+  '\uFBF8': '\u0626\u06D0',
+  '\uFBF9': '\u0626\u0649',
+  '\uFBFA': '\u0626\u0649',
+  '\uFBFB': '\u0626\u0649',
+  '\uFBFC': '\u06CC',
+  '\uFBFD': '\u06CC',
+  '\uFBFE': '\u06CC',
+  '\uFBFF': '\u06CC',
+  '\uFC00': '\u0626\u062C',
+  '\uFC01': '\u0626\u062D',
+  '\uFC02': '\u0626\u0645',
+  '\uFC03': '\u0626\u0649',
+  '\uFC04': '\u0626\u064A',
+  '\uFC05': '\u0628\u062C',
+  '\uFC06': '\u0628\u062D',
+  '\uFC07': '\u0628\u062E',
+  '\uFC08': '\u0628\u0645',
+  '\uFC09': '\u0628\u0649',
+  '\uFC0A': '\u0628\u064A',
+  '\uFC0B': '\u062A\u062C',
+  '\uFC0C': '\u062A\u062D',
+  '\uFC0D': '\u062A\u062E',
+  '\uFC0E': '\u062A\u0645',
+  '\uFC0F': '\u062A\u0649',
+  '\uFC10': '\u062A\u064A',
+  '\uFC11': '\u062B\u062C',
+  '\uFC12': '\u062B\u0645',
+  '\uFC13': '\u062B\u0649',
+  '\uFC14': '\u062B\u064A',
+  '\uFC15': '\u062C\u062D',
+  '\uFC16': '\u062C\u0645',
+  '\uFC17': '\u062D\u062C',
+  '\uFC18': '\u062D\u0645',
+  '\uFC19': '\u062E\u062C',
+  '\uFC1A': '\u062E\u062D',
+  '\uFC1B': '\u062E\u0645',
+  '\uFC1C': '\u0633\u062C',
+  '\uFC1D': '\u0633\u062D',
+  '\uFC1E': '\u0633\u062E',
+  '\uFC1F': '\u0633\u0645',
+  '\uFC20': '\u0635\u062D',
+  '\uFC21': '\u0635\u0645',
+  '\uFC22': '\u0636\u062C',
+  '\uFC23': '\u0636\u062D',
+  '\uFC24': '\u0636\u062E',
+  '\uFC25': '\u0636\u0645',
+  '\uFC26': '\u0637\u062D',
+  '\uFC27': '\u0637\u0645',
+  '\uFC28': '\u0638\u0645',
+  '\uFC29': '\u0639\u062C',
+  '\uFC2A': '\u0639\u0645',
+  '\uFC2B': '\u063A\u062C',
+  '\uFC2C': '\u063A\u0645',
+  '\uFC2D': '\u0641\u062C',
+  '\uFC2E': '\u0641\u062D',
+  '\uFC2F': '\u0641\u062E',
+  '\uFC30': '\u0641\u0645',
+  '\uFC31': '\u0641\u0649',
+  '\uFC32': '\u0641\u064A',
+  '\uFC33': '\u0642\u062D',
+  '\uFC34': '\u0642\u0645',
+  '\uFC35': '\u0642\u0649',
+  '\uFC36': '\u0642\u064A',
+  '\uFC37': '\u0643\u0627',
+  '\uFC38': '\u0643\u062C',
+  '\uFC39': '\u0643\u062D',
+  '\uFC3A': '\u0643\u062E',
+  '\uFC3B': '\u0643\u0644',
+  '\uFC3C': '\u0643\u0645',
+  '\uFC3D': '\u0643\u0649',
+  '\uFC3E': '\u0643\u064A',
+  '\uFC3F': '\u0644\u062C',
+  '\uFC40': '\u0644\u062D',
+  '\uFC41': '\u0644\u062E',
+  '\uFC42': '\u0644\u0645',
+  '\uFC43': '\u0644\u0649',
+  '\uFC44': '\u0644\u064A',
+  '\uFC45': '\u0645\u062C',
+  '\uFC46': '\u0645\u062D',
+  '\uFC47': '\u0645\u062E',
+  '\uFC48': '\u0645\u0645',
+  '\uFC49': '\u0645\u0649',
+  '\uFC4A': '\u0645\u064A',
+  '\uFC4B': '\u0646\u062C',
+  '\uFC4C': '\u0646\u062D',
+  '\uFC4D': '\u0646\u062E',
+  '\uFC4E': '\u0646\u0645',
+  '\uFC4F': '\u0646\u0649',
+  '\uFC50': '\u0646\u064A',
+  '\uFC51': '\u0647\u062C',
+  '\uFC52': '\u0647\u0645',
+  '\uFC53': '\u0647\u0649',
+  '\uFC54': '\u0647\u064A',
+  '\uFC55': '\u064A\u062C',
+  '\uFC56': '\u064A\u062D',
+  '\uFC57': '\u064A\u062E',
+  '\uFC58': '\u064A\u0645',
+  '\uFC59': '\u064A\u0649',
+  '\uFC5A': '\u064A\u064A',
+  '\uFC5B': '\u0630\u0670',
+  '\uFC5C': '\u0631\u0670',
+  '\uFC5D': '\u0649\u0670',
+  '\uFC5E': '\u0020\u064C\u0651',
+  '\uFC5F': '\u0020\u064D\u0651',
+  '\uFC60': '\u0020\u064E\u0651',
+  '\uFC61': '\u0020\u064F\u0651',
+  '\uFC62': '\u0020\u0650\u0651',
+  '\uFC63': '\u0020\u0651\u0670',
+  '\uFC64': '\u0626\u0631',
+  '\uFC65': '\u0626\u0632',
+  '\uFC66': '\u0626\u0645',
+  '\uFC67': '\u0626\u0646',
+  '\uFC68': '\u0626\u0649',
+  '\uFC69': '\u0626\u064A',
+  '\uFC6A': '\u0628\u0631',
+  '\uFC6B': '\u0628\u0632',
+  '\uFC6C': '\u0628\u0645',
+  '\uFC6D': '\u0628\u0646',
+  '\uFC6E': '\u0628\u0649',
+  '\uFC6F': '\u0628\u064A',
+  '\uFC70': '\u062A\u0631',
+  '\uFC71': '\u062A\u0632',
+  '\uFC72': '\u062A\u0645',
+  '\uFC73': '\u062A\u0646',
+  '\uFC74': '\u062A\u0649',
+  '\uFC75': '\u062A\u064A',
+  '\uFC76': '\u062B\u0631',
+  '\uFC77': '\u062B\u0632',
+  '\uFC78': '\u062B\u0645',
+  '\uFC79': '\u062B\u0646',
+  '\uFC7A': '\u062B\u0649',
+  '\uFC7B': '\u062B\u064A',
+  '\uFC7C': '\u0641\u0649',
+  '\uFC7D': '\u0641\u064A',
+  '\uFC7E': '\u0642\u0649',
+  '\uFC7F': '\u0642\u064A',
+  '\uFC80': '\u0643\u0627',
+  '\uFC81': '\u0643\u0644',
+  '\uFC82': '\u0643\u0645',
+  '\uFC83': '\u0643\u0649',
+  '\uFC84': '\u0643\u064A',
+  '\uFC85': '\u0644\u0645',
+  '\uFC86': '\u0644\u0649',
+  '\uFC87': '\u0644\u064A',
+  '\uFC88': '\u0645\u0627',
+  '\uFC89': '\u0645\u0645',
+  '\uFC8A': '\u0646\u0631',
+  '\uFC8B': '\u0646\u0632',
+  '\uFC8C': '\u0646\u0645',
+  '\uFC8D': '\u0646\u0646',
+  '\uFC8E': '\u0646\u0649',
+  '\uFC8F': '\u0646\u064A',
+  '\uFC90': '\u0649\u0670',
+  '\uFC91': '\u064A\u0631',
+  '\uFC92': '\u064A\u0632',
+  '\uFC93': '\u064A\u0645',
+  '\uFC94': '\u064A\u0646',
+  '\uFC95': '\u064A\u0649',
+  '\uFC96': '\u064A\u064A',
+  '\uFC97': '\u0626\u062C',
+  '\uFC98': '\u0626\u062D',
+  '\uFC99': '\u0626\u062E',
+  '\uFC9A': '\u0626\u0645',
+  '\uFC9B': '\u0626\u0647',
+  '\uFC9C': '\u0628\u062C',
+  '\uFC9D': '\u0628\u062D',
+  '\uFC9E': '\u0628\u062E',
+  '\uFC9F': '\u0628\u0645',
+  '\uFCA0': '\u0628\u0647',
+  '\uFCA1': '\u062A\u062C',
+  '\uFCA2': '\u062A\u062D',
+  '\uFCA3': '\u062A\u062E',
+  '\uFCA4': '\u062A\u0645',
+  '\uFCA5': '\u062A\u0647',
+  '\uFCA6': '\u062B\u0645',
+  '\uFCA7': '\u062C\u062D',
+  '\uFCA8': '\u062C\u0645',
+  '\uFCA9': '\u062D\u062C',
+  '\uFCAA': '\u062D\u0645',
+  '\uFCAB': '\u062E\u062C',
+  '\uFCAC': '\u062E\u0645',
+  '\uFCAD': '\u0633\u062C',
+  '\uFCAE': '\u0633\u062D',
+  '\uFCAF': '\u0633\u062E',
+  '\uFCB0': '\u0633\u0645',
+  '\uFCB1': '\u0635\u062D',
+  '\uFCB2': '\u0635\u062E',
+  '\uFCB3': '\u0635\u0645',
+  '\uFCB4': '\u0636\u062C',
+  '\uFCB5': '\u0636\u062D',
+  '\uFCB6': '\u0636\u062E',
+  '\uFCB7': '\u0636\u0645',
+  '\uFCB8': '\u0637\u062D',
+  '\uFCB9': '\u0638\u0645',
+  '\uFCBA': '\u0639\u062C',
+  '\uFCBB': '\u0639\u0645',
+  '\uFCBC': '\u063A\u062C',
+  '\uFCBD': '\u063A\u0645',
+  '\uFCBE': '\u0641\u062C',
+  '\uFCBF': '\u0641\u062D',
+  '\uFCC0': '\u0641\u062E',
+  '\uFCC1': '\u0641\u0645',
+  '\uFCC2': '\u0642\u062D',
+  '\uFCC3': '\u0642\u0645',
+  '\uFCC4': '\u0643\u062C',
+  '\uFCC5': '\u0643\u062D',
+  '\uFCC6': '\u0643\u062E',
+  '\uFCC7': '\u0643\u0644',
+  '\uFCC8': '\u0643\u0645',
+  '\uFCC9': '\u0644\u062C',
+  '\uFCCA': '\u0644\u062D',
+  '\uFCCB': '\u0644\u062E',
+  '\uFCCC': '\u0644\u0645',
+  '\uFCCD': '\u0644\u0647',
+  '\uFCCE': '\u0645\u062C',
+  '\uFCCF': '\u0645\u062D',
+  '\uFCD0': '\u0645\u062E',
+  '\uFCD1': '\u0645\u0645',
+  '\uFCD2': '\u0646\u062C',
+  '\uFCD3': '\u0646\u062D',
+  '\uFCD4': '\u0646\u062E',
+  '\uFCD5': '\u0646\u0645',
+  '\uFCD6': '\u0646\u0647',
+  '\uFCD7': '\u0647\u062C',
+  '\uFCD8': '\u0647\u0645',
+  '\uFCD9': '\u0647\u0670',
+  '\uFCDA': '\u064A\u062C',
+  '\uFCDB': '\u064A\u062D',
+  '\uFCDC': '\u064A\u062E',
+  '\uFCDD': '\u064A\u0645',
+  '\uFCDE': '\u064A\u0647',
+  '\uFCDF': '\u0626\u0645',
+  '\uFCE0': '\u0626\u0647',
+  '\uFCE1': '\u0628\u0645',
+  '\uFCE2': '\u0628\u0647',
+  '\uFCE3': '\u062A\u0645',
+  '\uFCE4': '\u062A\u0647',
+  '\uFCE5': '\u062B\u0645',
+  '\uFCE6': '\u062B\u0647',
+  '\uFCE7': '\u0633\u0645',
+  '\uFCE8': '\u0633\u0647',
+  '\uFCE9': '\u0634\u0645',
+  '\uFCEA': '\u0634\u0647',
+  '\uFCEB': '\u0643\u0644',
+  '\uFCEC': '\u0643\u0645',
+  '\uFCED': '\u0644\u0645',
+  '\uFCEE': '\u0646\u0645',
+  '\uFCEF': '\u0646\u0647',
+  '\uFCF0': '\u064A\u0645',
+  '\uFCF1': '\u064A\u0647',
+  '\uFCF2': '\u0640\u064E\u0651',
+  '\uFCF3': '\u0640\u064F\u0651',
+  '\uFCF4': '\u0640\u0650\u0651',
+  '\uFCF5': '\u0637\u0649',
+  '\uFCF6': '\u0637\u064A',
+  '\uFCF7': '\u0639\u0649',
+  '\uFCF8': '\u0639\u064A',
+  '\uFCF9': '\u063A\u0649',
+  '\uFCFA': '\u063A\u064A',
+  '\uFCFB': '\u0633\u0649',
+  '\uFCFC': '\u0633\u064A',
+  '\uFCFD': '\u0634\u0649',
+  '\uFCFE': '\u0634\u064A',
+  '\uFCFF': '\u062D\u0649',
+  '\uFD00': '\u062D\u064A',
+  '\uFD01': '\u062C\u0649',
+  '\uFD02': '\u062C\u064A',
+  '\uFD03': '\u062E\u0649',
+  '\uFD04': '\u062E\u064A',
+  '\uFD05': '\u0635\u0649',
+  '\uFD06': '\u0635\u064A',
+  '\uFD07': '\u0636\u0649',
+  '\uFD08': '\u0636\u064A',
+  '\uFD09': '\u0634\u062C',
+  '\uFD0A': '\u0634\u062D',
+  '\uFD0B': '\u0634\u062E',
+  '\uFD0C': '\u0634\u0645',
+  '\uFD0D': '\u0634\u0631',
+  '\uFD0E': '\u0633\u0631',
+  '\uFD0F': '\u0635\u0631',
+  '\uFD10': '\u0636\u0631',
+  '\uFD11': '\u0637\u0649',
+  '\uFD12': '\u0637\u064A',
+  '\uFD13': '\u0639\u0649',
+  '\uFD14': '\u0639\u064A',
+  '\uFD15': '\u063A\u0649',
+  '\uFD16': '\u063A\u064A',
+  '\uFD17': '\u0633\u0649',
+  '\uFD18': '\u0633\u064A',
+  '\uFD19': '\u0634\u0649',
+  '\uFD1A': '\u0634\u064A',
+  '\uFD1B': '\u062D\u0649',
+  '\uFD1C': '\u062D\u064A',
+  '\uFD1D': '\u062C\u0649',
+  '\uFD1E': '\u062C\u064A',
+  '\uFD1F': '\u062E\u0649',
+  '\uFD20': '\u062E\u064A',
+  '\uFD21': '\u0635\u0649',
+  '\uFD22': '\u0635\u064A',
+  '\uFD23': '\u0636\u0649',
+  '\uFD24': '\u0636\u064A',
+  '\uFD25': '\u0634\u062C',
+  '\uFD26': '\u0634\u062D',
+  '\uFD27': '\u0634\u062E',
+  '\uFD28': '\u0634\u0645',
+  '\uFD29': '\u0634\u0631',
+  '\uFD2A': '\u0633\u0631',
+  '\uFD2B': '\u0635\u0631',
+  '\uFD2C': '\u0636\u0631',
+  '\uFD2D': '\u0634\u062C',
+  '\uFD2E': '\u0634\u062D',
+  '\uFD2F': '\u0634\u062E',
+  '\uFD30': '\u0634\u0645',
+  '\uFD31': '\u0633\u0647',
+  '\uFD32': '\u0634\u0647',
+  '\uFD33': '\u0637\u0645',
+  '\uFD34': '\u0633\u062C',
+  '\uFD35': '\u0633\u062D',
+  '\uFD36': '\u0633\u062E',
+  '\uFD37': '\u0634\u062C',
+  '\uFD38': '\u0634\u062D',
+  '\uFD39': '\u0634\u062E',
+  '\uFD3A': '\u0637\u0645',
+  '\uFD3B': '\u0638\u0645',
+  '\uFD3C': '\u0627\u064B',
+  '\uFD3D': '\u0627\u064B',
+  '\uFD50': '\u062A\u062C\u0645',
+  '\uFD51': '\u062A\u062D\u062C',
+  '\uFD52': '\u062A\u062D\u062C',
+  '\uFD53': '\u062A\u062D\u0645',
+  '\uFD54': '\u062A\u062E\u0645',
+  '\uFD55': '\u062A\u0645\u062C',
+  '\uFD56': '\u062A\u0645\u062D',
+  '\uFD57': '\u062A\u0645\u062E',
+  '\uFD58': '\u062C\u0645\u062D',
+  '\uFD59': '\u062C\u0645\u062D',
+  '\uFD5A': '\u062D\u0645\u064A',
+  '\uFD5B': '\u062D\u0645\u0649',
+  '\uFD5C': '\u0633\u062D\u062C',
+  '\uFD5D': '\u0633\u062C\u062D',
+  '\uFD5E': '\u0633\u062C\u0649',
+  '\uFD5F': '\u0633\u0645\u062D',
+  '\uFD60': '\u0633\u0645\u062D',
+  '\uFD61': '\u0633\u0645\u062C',
+  '\uFD62': '\u0633\u0645\u0645',
+  '\uFD63': '\u0633\u0645\u0645',
+  '\uFD64': '\u0635\u062D\u062D',
+  '\uFD65': '\u0635\u062D\u062D',
+  '\uFD66': '\u0635\u0645\u0645',
+  '\uFD67': '\u0634\u062D\u0645',
+  '\uFD68': '\u0634\u062D\u0645',
+  '\uFD69': '\u0634\u062C\u064A',
+  '\uFD6A': '\u0634\u0645\u062E',
+  '\uFD6B': '\u0634\u0645\u062E',
+  '\uFD6C': '\u0634\u0645\u0645',
+  '\uFD6D': '\u0634\u0645\u0645',
+  '\uFD6E': '\u0636\u062D\u0649',
+  '\uFD6F': '\u0636\u062E\u0645',
+  '\uFD70': '\u0636\u062E\u0645',
+  '\uFD71': '\u0637\u0645\u062D',
+  '\uFD72': '\u0637\u0645\u062D',
+  '\uFD73': '\u0637\u0645\u0645',
+  '\uFD74': '\u0637\u0645\u064A',
+  '\uFD75': '\u0639\u062C\u0645',
+  '\uFD76': '\u0639\u0645\u0645',
+  '\uFD77': '\u0639\u0645\u0645',
+  '\uFD78': '\u0639\u0645\u0649',
+  '\uFD79': '\u063A\u0645\u0645',
+  '\uFD7A': '\u063A\u0645\u064A',
+  '\uFD7B': '\u063A\u0645\u0649',
+  '\uFD7C': '\u0641\u062E\u0645',
+  '\uFD7D': '\u0641\u062E\u0645',
+  '\uFD7E': '\u0642\u0645\u062D',
+  '\uFD7F': '\u0642\u0645\u0645',
+  '\uFD80': '\u0644\u062D\u0645',
+  '\uFD81': '\u0644\u062D\u064A',
+  '\uFD82': '\u0644\u062D\u0649',
+  '\uFD83': '\u0644\u062C\u062C',
+  '\uFD84': '\u0644\u062C\u062C',
+  '\uFD85': '\u0644\u062E\u0645',
+  '\uFD86': '\u0644\u062E\u0645',
+  '\uFD87': '\u0644\u0645\u062D',
+  '\uFD88': '\u0644\u0645\u062D',
+  '\uFD89': '\u0645\u062D\u062C',
+  '\uFD8A': '\u0645\u062D\u0645',
+  '\uFD8B': '\u0645\u062D\u064A',
+  '\uFD8C': '\u0645\u062C\u062D',
+  '\uFD8D': '\u0645\u062C\u0645',
+  '\uFD8E': '\u0645\u062E\u062C',
+  '\uFD8F': '\u0645\u062E\u0645',
+  '\uFD92': '\u0645\u062C\u062E',
+  '\uFD93': '\u0647\u0645\u062C',
+  '\uFD94': '\u0647\u0645\u0645',
+  '\uFD95': '\u0646\u062D\u0645',
+  '\uFD96': '\u0646\u062D\u0649',
+  '\uFD97': '\u0646\u062C\u0645',
+  '\uFD98': '\u0646\u062C\u0645',
+  '\uFD99': '\u0646\u062C\u0649',
+  '\uFD9A': '\u0646\u0645\u064A',
+  '\uFD9B': '\u0646\u0645\u0649',
+  '\uFD9C': '\u064A\u0645\u0645',
+  '\uFD9D': '\u064A\u0645\u0645',
+  '\uFD9E': '\u0628\u062E\u064A',
+  '\uFD9F': '\u062A\u062C\u064A',
+  '\uFDA0': '\u062A\u062C\u0649',
+  '\uFDA1': '\u062A\u062E\u064A',
+  '\uFDA2': '\u062A\u062E\u0649',
+  '\uFDA3': '\u062A\u0645\u064A',
+  '\uFDA4': '\u062A\u0645\u0649',
+  '\uFDA5': '\u062C\u0645\u064A',
+  '\uFDA6': '\u062C\u062D\u0649',
+  '\uFDA7': '\u062C\u0645\u0649',
+  '\uFDA8': '\u0633\u062E\u0649',
+  '\uFDA9': '\u0635\u062D\u064A',
+  '\uFDAA': '\u0634\u062D\u064A',
+  '\uFDAB': '\u0636\u062D\u064A',
+  '\uFDAC': '\u0644\u062C\u064A',
+  '\uFDAD': '\u0644\u0645\u064A',
+  '\uFDAE': '\u064A\u062D\u064A',
+  '\uFDAF': '\u064A\u062C\u064A',
+  '\uFDB0': '\u064A\u0645\u064A',
+  '\uFDB1': '\u0645\u0645\u064A',
+  '\uFDB2': '\u0642\u0645\u064A',
+  '\uFDB3': '\u0646\u062D\u064A',
+  '\uFDB4': '\u0642\u0645\u062D',
+  '\uFDB5': '\u0644\u062D\u0645',
+  '\uFDB6': '\u0639\u0645\u064A',
+  '\uFDB7': '\u0643\u0645\u064A',
+  '\uFDB8': '\u0646\u062C\u062D',
+  '\uFDB9': '\u0645\u062E\u064A',
+  '\uFDBA': '\u0644\u062C\u0645',
+  '\uFDBB': '\u0643\u0645\u0645',
+  '\uFDBC': '\u0644\u062C\u0645',
+  '\uFDBD': '\u0646\u062C\u062D',
+  '\uFDBE': '\u062C\u062D\u064A',
+  '\uFDBF': '\u062D\u062C\u064A',
+  '\uFDC0': '\u0645\u062C\u064A',
+  '\uFDC1': '\u0641\u0645\u064A',
+  '\uFDC2': '\u0628\u062D\u064A',
+  '\uFDC3': '\u0643\u0645\u0645',
+  '\uFDC4': '\u0639\u062C\u0645',
+  '\uFDC5': '\u0635\u0645\u0645',
+  '\uFDC6': '\u0633\u062E\u064A',
+  '\uFDC7': '\u0646\u062C\u064A',
+  '\uFE49': '\u203E',
+  '\uFE4A': '\u203E',
+  '\uFE4B': '\u203E',
+  '\uFE4C': '\u203E',
+  '\uFE4D': '\u005F',
+  '\uFE4E': '\u005F',
+  '\uFE4F': '\u005F',
+  '\uFE80': '\u0621',
+  '\uFE81': '\u0622',
+  '\uFE82': '\u0622',
+  '\uFE83': '\u0623',
+  '\uFE84': '\u0623',
+  '\uFE85': '\u0624',
+  '\uFE86': '\u0624',
+  '\uFE87': '\u0625',
+  '\uFE88': '\u0625',
+  '\uFE89': '\u0626',
+  '\uFE8A': '\u0626',
+  '\uFE8B': '\u0626',
+  '\uFE8C': '\u0626',
+  '\uFE8D': '\u0627',
+  '\uFE8E': '\u0627',
+  '\uFE8F': '\u0628',
+  '\uFE90': '\u0628',
+  '\uFE91': '\u0628',
+  '\uFE92': '\u0628',
+  '\uFE93': '\u0629',
+  '\uFE94': '\u0629',
+  '\uFE95': '\u062A',
+  '\uFE96': '\u062A',
+  '\uFE97': '\u062A',
+  '\uFE98': '\u062A',
+  '\uFE99': '\u062B',
+  '\uFE9A': '\u062B',
+  '\uFE9B': '\u062B',
+  '\uFE9C': '\u062B',
+  '\uFE9D': '\u062C',
+  '\uFE9E': '\u062C',
+  '\uFE9F': '\u062C',
+  '\uFEA0': '\u062C',
+  '\uFEA1': '\u062D',
+  '\uFEA2': '\u062D',
+  '\uFEA3': '\u062D',
+  '\uFEA4': '\u062D',
+  '\uFEA5': '\u062E',
+  '\uFEA6': '\u062E',
+  '\uFEA7': '\u062E',
+  '\uFEA8': '\u062E',
+  '\uFEA9': '\u062F',
+  '\uFEAA': '\u062F',
+  '\uFEAB': '\u0630',
+  '\uFEAC': '\u0630',
+  '\uFEAD': '\u0631',
+  '\uFEAE': '\u0631',
+  '\uFEAF': '\u0632',
+  '\uFEB0': '\u0632',
+  '\uFEB1': '\u0633',
+  '\uFEB2': '\u0633',
+  '\uFEB3': '\u0633',
+  '\uFEB4': '\u0633',
+  '\uFEB5': '\u0634',
+  '\uFEB6': '\u0634',
+  '\uFEB7': '\u0634',
+  '\uFEB8': '\u0634',
+  '\uFEB9': '\u0635',
+  '\uFEBA': '\u0635',
+  '\uFEBB': '\u0635',
+  '\uFEBC': '\u0635',
+  '\uFEBD': '\u0636',
+  '\uFEBE': '\u0636',
+  '\uFEBF': '\u0636',
+  '\uFEC0': '\u0636',
+  '\uFEC1': '\u0637',
+  '\uFEC2': '\u0637',
+  '\uFEC3': '\u0637',
+  '\uFEC4': '\u0637',
+  '\uFEC5': '\u0638',
+  '\uFEC6': '\u0638',
+  '\uFEC7': '\u0638',
+  '\uFEC8': '\u0638',
+  '\uFEC9': '\u0639',
+  '\uFECA': '\u0639',
+  '\uFECB': '\u0639',
+  '\uFECC': '\u0639',
+  '\uFECD': '\u063A',
+  '\uFECE': '\u063A',
+  '\uFECF': '\u063A',
+  '\uFED0': '\u063A',
+  '\uFED1': '\u0641',
+  '\uFED2': '\u0641',
+  '\uFED3': '\u0641',
+  '\uFED4': '\u0641',
+  '\uFED5': '\u0642',
+  '\uFED6': '\u0642',
+  '\uFED7': '\u0642',
+  '\uFED8': '\u0642',
+  '\uFED9': '\u0643',
+  '\uFEDA': '\u0643',
+  '\uFEDB': '\u0643',
+  '\uFEDC': '\u0643',
+  '\uFEDD': '\u0644',
+  '\uFEDE': '\u0644',
+  '\uFEDF': '\u0644',
+  '\uFEE0': '\u0644',
+  '\uFEE1': '\u0645',
+  '\uFEE2': '\u0645',
+  '\uFEE3': '\u0645',
+  '\uFEE4': '\u0645',
+  '\uFEE5': '\u0646',
+  '\uFEE6': '\u0646',
+  '\uFEE7': '\u0646',
+  '\uFEE8': '\u0646',
+  '\uFEE9': '\u0647',
+  '\uFEEA': '\u0647',
+  '\uFEEB': '\u0647',
+  '\uFEEC': '\u0647',
+  '\uFEED': '\u0648',
+  '\uFEEE': '\u0648',
+  '\uFEEF': '\u0649',
+  '\uFEF0': '\u0649',
+  '\uFEF1': '\u064A',
+  '\uFEF2': '\u064A',
+  '\uFEF3': '\u064A',
+  '\uFEF4': '\u064A',
+  '\uFEF5': '\u0644\u0622',
+  '\uFEF6': '\u0644\u0622',
+  '\uFEF7': '\u0644\u0623',
+  '\uFEF8': '\u0644\u0623',
+  '\uFEF9': '\u0644\u0625',
+  '\uFEFA': '\u0644\u0625',
+  '\uFEFB': '\u0644\u0627',
+  '\uFEFC': '\u0644\u0627'
+};
+
+function reverseIfRtl(chars) {
+  var charsLength = chars.length;
+  //reverse an arabic ligature
+  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {
+    return chars;
+  }
+  var s = '';
+  for (var ii = charsLength - 1; ii >= 0; ii--) {
+    s += chars[ii];
+  }
+  return s;
+}
+
+function adjustWidths(properties) {
+  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {
+    return;
+  }
+  // adjusting width to fontMatrix scale
+  var scale = 0.001 / properties.fontMatrix[0];
+  var glyphsWidths = properties.widths;
+  for (var glyph in glyphsWidths) {
+    glyphsWidths[glyph] *= scale;
+  }
+  properties.defaultWidth *= scale;
+}
+
+function getFontType(type, subtype) {
+  switch (type) {
+    case 'Type1':
+      return subtype === 'Type1C' ? FontType.TYPE1C : FontType.TYPE1;
+    case 'CIDFontType0':
+      return subtype === 'CIDFontType0C' ? FontType.CIDFONTTYPE0C :
+        FontType.CIDFONTTYPE0;
+    case 'OpenType':
+      return FontType.OPENTYPE;
+    case 'TrueType':
+      return FontType.TRUETYPE;
+    case 'CIDFontType2':
+      return FontType.CIDFONTTYPE2;
+    case 'MMType1':
+      return FontType.MMTYPE1;
+    case 'Type0':
+      return FontType.TYPE0;
+    default:
+      return FontType.UNKNOWN;
+  }
+}
+
+var Glyph = (function GlyphClosure() {
+  function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId) {
+    this.fontChar = fontChar;
+    this.unicode = unicode;
+    this.accent = accent;
+    this.width = width;
+    this.vmetric = vmetric;
+    this.operatorListId = operatorListId;
+  }
+
+  Glyph.prototype.matchesForCache =
+      function(fontChar, unicode, accent, width, vmetric, operatorListId) {
+    return this.fontChar === fontChar &&
+           this.unicode === unicode &&
+           this.accent === accent &&
+           this.width === width &&
+           this.vmetric === vmetric &&
+           this.operatorListId === operatorListId;
+  };
+
+  return Glyph;
+})();
+
+var ToUnicodeMap = (function ToUnicodeMapClosure() {
+  function ToUnicodeMap(cmap) {
+    // The elements of this._map can be integers or strings, depending on how
+    // |cmap| was created.
+    this._map = cmap;
+  }
+
+  ToUnicodeMap.prototype = {
+    get length() {
+      return this._map.length;
+    },
+
+    forEach: function(callback) {
+      for (var charCode in this._map) {
+        callback(charCode, this._map[charCode].charCodeAt(0));
+      }
+    },
+
+    has: function(i) {
+      return this._map[i] !== undefined;
+    },
+
+    get: function(i) {
+      return this._map[i];
+    },
+
+    charCodeOf: function(v) {
+      return this._map.indexOf(v);
+    }
+  };
+
+  return ToUnicodeMap;
+})();
+
+var IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() {
+  function IdentityToUnicodeMap(firstChar, lastChar) {
+    this.firstChar = firstChar;
+    this.lastChar = lastChar;
+  }
+
+  IdentityToUnicodeMap.prototype = {
+    get length() {
+      return (this.lastChar + 1) - this.firstChar;
+    },
+
+    forEach: function (callback) {
+      for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {
+        callback(i, i);
+      }
+    },
+
+    has: function (i) {
+      return this.firstChar <= i && i <= this.lastChar;
+    },
+
+    get: function (i) {
+      if (this.firstChar <= i && i <= this.lastChar) {
+        return String.fromCharCode(i);
+      }
+      return undefined;
+    },
+
+    charCodeOf: function (v) {
+      error('should not call .charCodeOf');
+    }
+  };
+
+  return IdentityToUnicodeMap;
+})();
+
+var OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {
+  function writeInt16(dest, offset, num) {
+    dest[offset] = (num >> 8) & 0xFF;
+    dest[offset + 1] = num & 0xFF;
+  }
+
+  function writeInt32(dest, offset, num) {
+    dest[offset] = (num >> 24) & 0xFF;
+    dest[offset + 1] = (num >> 16) & 0xFF;
+    dest[offset + 2] = (num >> 8) & 0xFF;
+    dest[offset + 3] = num & 0xFF;
+  }
+
+  function writeData(dest, offset, data) {
+    var i, ii;
+    if (data instanceof Uint8Array) {
+      dest.set(data, offset);
+    } else if (typeof data === 'string') {
+      for (i = 0, ii = data.length; i < ii; i++) {
+        dest[offset++] = data.charCodeAt(i) & 0xFF;
+      }
+    } else {
+      // treating everything else as array
+      for (i = 0, ii = data.length; i < ii; i++) {
+        dest[offset++] = data[i] & 0xFF;
+      }
+    }
+  }
+
+  function OpenTypeFileBuilder(sfnt) {
+    this.sfnt = sfnt;
+    this.tables = Object.create(null);
+  }
+
+  OpenTypeFileBuilder.getSearchParams =
+      function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {
+    var maxPower2 = 1, log2 = 0;
+    while ((maxPower2 ^ entriesCount) > maxPower2) {
+      maxPower2 <<= 1;
+      log2++;
+    }
+    var searchRange = maxPower2 * entrySize;
+    return {
+      range: searchRange,
+      entry: log2,
+      rangeShift: entrySize * entriesCount - searchRange
+    };
+  };
+
+  var OTF_HEADER_SIZE = 12;
+  var OTF_TABLE_ENTRY_SIZE = 16;
+
+  OpenTypeFileBuilder.prototype = {
+    toArray: function OpenTypeFileBuilder_toArray() {
+      var sfnt = this.sfnt;
+
+      // Tables needs to be written by ascendant alphabetic order
+      var tables = this.tables;
+      var tablesNames = Object.keys(tables);
+      tablesNames.sort();
+      var numTables = tablesNames.length;
+
+      var i, j, jj, table, tableName;
+      // layout the tables data
+      var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;
+      var tableOffsets = [offset];
+      for (i = 0; i < numTables; i++) {
+        table = tables[tablesNames[i]];
+        var paddedLength = ((table.length + 3) & ~3) >>> 0;
+        offset += paddedLength;
+        tableOffsets.push(offset);
+      }
+
+      var file = new Uint8Array(offset);
+      // write the table data first (mostly for checksum)
+      for (i = 0; i < numTables; i++) {
+        table = tables[tablesNames[i]];
+        writeData(file, tableOffsets[i], table);
+      }
+
+      // sfnt version (4 bytes)
+      if (sfnt === 'true') {
+        // Windows hates the Mac TrueType sfnt version number
+        sfnt = string32(0x00010000);
+      }
+      file[0] = sfnt.charCodeAt(0) & 0xFF;
+      file[1] = sfnt.charCodeAt(1) & 0xFF;
+      file[2] = sfnt.charCodeAt(2) & 0xFF;
+      file[3] = sfnt.charCodeAt(3) & 0xFF;
+
+      // numTables (2 bytes)
+      writeInt16(file, 4, numTables);
+
+      var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);
+
+      // searchRange (2 bytes)
+      writeInt16(file, 6, searchParams.range);
+      // entrySelector (2 bytes)
+      writeInt16(file, 8, searchParams.entry);
+      // rangeShift (2 bytes)
+      writeInt16(file, 10, searchParams.rangeShift);
+
+      offset = OTF_HEADER_SIZE;
+      // writing table entries
+      for (i = 0; i < numTables; i++) {
+        tableName = tablesNames[i];
+        file[offset] = tableName.charCodeAt(0) & 0xFF;
+        file[offset + 1] = tableName.charCodeAt(1) & 0xFF;
+        file[offset + 2] = tableName.charCodeAt(2) & 0xFF;
+        file[offset + 3] = tableName.charCodeAt(3) & 0xFF;
+
+        // checksum
+        var checksum = 0;
+        for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {
+          var quad = (file[j] << 24) + (file[j + 1] << 16) +
+                     (file[j + 2] << 8) + file[j + 3];
+          checksum = (checksum + quad) | 0;
+        }
+        writeInt32(file, offset + 4, checksum);
+
+        // offset
+        writeInt32(file, offset + 8, tableOffsets[i]);
+        // length
+        writeInt32(file, offset + 12, tables[tableName].length);
+
+        offset += OTF_TABLE_ENTRY_SIZE;
+      }
+      return file;
+    },
+
+    addTable: function OpenTypeFileBuilder_addTable(tag, data) {
+      if (tag in this.tables) {
+        throw new Error('Table ' + tag + ' already exists');
+      }
+      this.tables[tag] = data;
+    }
+  };
+
+  return OpenTypeFileBuilder;
+})();
+
+/**
+ * 'Font' is the class the outside world should use, it encapsulate all the font
+ * decoding logics whatever type it is (assuming the font type is supported).
+ *
+ * For example to read a Type1 font and to attach it to the document:
+ *   var type1Font = new Font("MyFontName", binaryFile, propertiesObject);
+ *   type1Font.bind();
+ */
+var Font = (function FontClosure() {
+  function Font(name, file, properties) {
+    var charCode, glyphName, fontChar;
+
+    this.name = name;
+    this.loadedName = properties.loadedName;
+    this.isType3Font = properties.isType3Font;
+    this.sizes = [];
+
+    this.glyphCache = {};
+
+    var names = name.split('+');
+    names = names.length > 1 ? names[1] : names[0];
+    names = names.split(/[-,_]/g)[0];
+    this.isSerifFont = !!(properties.flags & FontFlags.Serif);
+    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
+    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);
+
+    var type = properties.type;
+    var subtype = properties.subtype;
+    this.type = type;
+
+    this.fallbackName = (this.isMonospace ? 'monospace' :
+                         (this.isSerifFont ? 'serif' : 'sans-serif'));
+
+    this.differences = properties.differences;
+    this.widths = properties.widths;
+    this.defaultWidth = properties.defaultWidth;
+    this.composite = properties.composite;
+    this.wideChars = properties.wideChars;
+    this.cMap = properties.cMap;
+    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;
+    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;
+    this.fontMatrix = properties.fontMatrix;
+
+    this.toUnicode = properties.toUnicode = this.buildToUnicode(properties);
+
+    this.toFontChar = [];
+
+    if (properties.type === 'Type3') {
+      for (charCode = 0; charCode < 256; charCode++) {
+        this.toFontChar[charCode] = (this.differences[charCode] ||
+                                     properties.defaultEncoding[charCode]);
+      }
+      this.fontType = FontType.TYPE3;
+      return;
+    }
+
+    this.cidEncoding = properties.cidEncoding;
+    this.vertical = properties.vertical;
+    if (this.vertical) {
+      this.vmetrics = properties.vmetrics;
+      this.defaultVMetrics = properties.defaultVMetrics;
+    }
+
+    if (!file || file.isEmpty) {
+      if (file) {
+        // Some bad PDF generators will include empty font files,
+        // attempting to recover by assuming that no file exists.
+        warn('Font file is empty in "' + name + '" (' + this.loadedName + ')');
+      }
+
+      this.missingFile = true;
+      // The file data is not specified. Trying to fix the font name
+      // to be used with the canvas.font.
+      var fontName = name.replace(/[,_]/g, '-');
+      var isStandardFont = !!stdFontMap[fontName] ||
+        !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);
+      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
+
+      this.bold = (fontName.search(/bold/gi) !== -1);
+      this.italic = ((fontName.search(/oblique/gi) !== -1) ||
+                     (fontName.search(/italic/gi) !== -1));
+
+      // Use 'name' instead of 'fontName' here because the original
+      // name ArialBlack for example will be replaced by Helvetica.
+      this.black = (name.search(/Black/g) !== -1);
+
+      // if at least one width is present, remeasure all chars when exists
+      this.remeasure = Object.keys(this.widths).length > 0;
+      if (isStandardFont && type === 'CIDFontType2' &&
+          properties.cidEncoding.indexOf('Identity-') === 0) {
+        // Standard fonts might be embedded as CID font without glyph mapping.
+        // Building one based on GlyphMapForStandardFonts.
+        var map = [];
+        for (var code in GlyphMapForStandardFonts) {
+          map[+code] = GlyphMapForStandardFonts[code];
+        }
+        var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;
+        if (!isIdentityUnicode) {
+          this.toUnicode.forEach(function(charCode, unicodeCharCode) {
+            map[+charCode] = unicodeCharCode;
+          });
+        }
+        this.toFontChar = map;
+        this.toUnicode = new ToUnicodeMap(map);
+      } else if (/Symbol/i.test(fontName)) {
+        var symbols = Encodings.SymbolSetEncoding;
+        for (charCode in symbols) {
+          fontChar = GlyphsUnicode[symbols[charCode]];
+          if (!fontChar) {
+            continue;
+          }
+          this.toFontChar[charCode] = fontChar;
+        }
+        for (charCode in properties.differences) {
+          fontChar = GlyphsUnicode[properties.differences[charCode]];
+          if (!fontChar) {
+            continue;
+          }
+          this.toFontChar[charCode] = fontChar;
+        }
+      } else if (/Dingbats/i.test(fontName)) {
+        if (/Wingdings/i.test(name)) {
+          warn('Wingdings font without embedded font file, ' +
+               'falling back to the ZapfDingbats encoding.');
+        }
+        var dingbats = Encodings.ZapfDingbatsEncoding;
+        for (charCode in dingbats) {
+          fontChar = DingbatsGlyphsUnicode[dingbats[charCode]];
+          if (!fontChar) {
+            continue;
+          }
+          this.toFontChar[charCode] = fontChar;
+        }
+        for (charCode in properties.differences) {
+          fontChar = DingbatsGlyphsUnicode[properties.differences[charCode]];
+          if (!fontChar) {
+            continue;
+          }
+          this.toFontChar[charCode] = fontChar;
+        }
+      } else if (isStandardFont) {
+        this.toFontChar = [];
+        for (charCode in properties.defaultEncoding) {
+          glyphName = (properties.differences[charCode] ||
+                       properties.defaultEncoding[charCode]);
+          this.toFontChar[charCode] = GlyphsUnicode[glyphName];
+        }
+      } else {
+        var unicodeCharCode, notCidFont = (type.indexOf('CIDFontType') === -1);
+        this.toUnicode.forEach(function(charCode, unicodeCharCode) {
+          if (notCidFont) {
+            glyphName = (properties.differences[charCode] ||
+                         properties.defaultEncoding[charCode]);
+            unicodeCharCode = (GlyphsUnicode[glyphName] || unicodeCharCode);
+          }
+          this.toFontChar[charCode] = unicodeCharCode;
+        }.bind(this));
+      }
+      this.loadedName = fontName.split('-')[0];
+      this.loading = false;
+      this.fontType = getFontType(type, subtype);
+      return;
+    }
+
+    // Some fonts might use wrong font types for Type1C or CIDFontType0C
+    if (subtype === 'Type1C' && (type !== 'Type1' && type !== 'MMType1')) {
+      // Some TrueType fonts by mistake claim Type1C
+      if (isTrueTypeFile(file)) {
+        subtype = 'TrueType';
+      } else {
+        type = 'Type1';
+      }
+    }
+    if (subtype === 'CIDFontType0C' && type !== 'CIDFontType0') {
+      type = 'CIDFontType0';
+    }
+    if (subtype === 'OpenType') {
+      type = 'OpenType';
+    }
+    // Some CIDFontType0C fonts by mistake claim CIDFontType0.
+    if (type === 'CIDFontType0') {
+      subtype = isType1File(file) ? 'CIDFontType0' : 'CIDFontType0C';
+    }
+
+    var data;
+    switch (type) {
+      case 'MMType1':
+        info('MMType1 font (' + name + '), falling back to Type1.');
+        /* falls through */
+      case 'Type1':
+      case 'CIDFontType0':
+        this.mimetype = 'font/opentype';
+
+        var cff = (subtype === 'Type1C' || subtype === 'CIDFontType0C') ?
+          new CFFFont(file, properties) : new Type1Font(name, file, properties);
+
+        adjustWidths(properties);
+
+        // Wrap the CFF data inside an OTF font file
+        data = this.convert(name, cff, properties);
+        break;
+
+      case 'OpenType':
+      case 'TrueType':
+      case 'CIDFontType2':
+        this.mimetype = 'font/opentype';
+
+        // Repair the TrueType file. It is can be damaged in the point of
+        // view of the sanitizer
+        data = this.checkAndRepair(name, file, properties);
+        if (this.isOpenType) {
+          type = 'OpenType';
+        }
+        break;
+
+      default:
+        error('Font ' + type + ' is not supported');
+        break;
+    }
+
+    this.data = data;
+    this.fontType = getFontType(type, subtype);
+
+    // Transfer some properties again that could change during font conversion
+    this.fontMatrix = properties.fontMatrix;
+    this.widths = properties.widths;
+    this.defaultWidth = properties.defaultWidth;
+    this.encoding = properties.baseEncoding;
+    this.seacMap = properties.seacMap;
+
+    this.loading = true;
+  }
+
+  Font.getFontID = (function () {
+    var ID = 1;
+    return function Font_getFontID() {
+      return String(ID++);
+    };
+  })();
+
+  function int16(b0, b1) {
+    return (b0 << 8) + b1;
+  }
+
+  function int32(b0, b1, b2, b3) {
+    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
+  }
+
+  function string16(value) {
+    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);
+  }
+
+  function safeString16(value) {
+    // clamp value to the 16-bit int range
+    value = (value > 0x7FFF ? 0x7FFF : (value < -0x8000 ? -0x8000 : value));
+    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);
+  }
+
+  function isTrueTypeFile(file) {
+    var header = file.peekBytes(4);
+    return readUint32(header, 0) === 0x00010000;
+  }
+
+  function isType1File(file) {
+    var header = file.peekBytes(2);
+    // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).
+    if (header[0] === 0x25 && header[1] === 0x21) {
+      return true;
+    }
+    // ... obviously some fonts violate that part of the specification,
+    // please refer to the comment in |Type1Font| below.
+    if (header[0] === 0x80 && header[1] === 0x01) { // pfb file header.
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Helper function for |adjustMapping|.
+   * @return {boolean}
+   */
+  function isProblematicUnicodeLocation(code) {
+    if (code <= 0x1F) { // Control chars
+      return true;
+    }
+    if (code >= 0x80 && code <= 0x9F) { // Control chars
+      return true;
+    }
+    if ((code >= 0x2000 && code <= 0x200F) || // General punctuation chars
+        (code >= 0x2028 && code <= 0x202F) ||
+        (code >= 0x2060 && code <= 0x206F)) {
+      return true;
+    }
+    if (code >= 0xFFF0 && code <= 0xFFFF) { // Specials Unicode block
+      return true;
+    }
+    switch (code) {
+      case 0x7F: // Control char
+      case 0xA0: // Non breaking space
+      case 0xAD: // Soft hyphen
+      case 0x0E33: // Thai character SARA AM
+      case 0x2011: // Non breaking hyphen
+      case 0x205F: // Medium mathematical space
+      case 0x25CC: // Dotted circle (combining mark)
+        return true;
+    }
+    return false;
+  }
+
+  /**
+   * Rebuilds the char code to glyph ID map by trying to replace the char codes
+   * with their unicode value. It also moves char codes that are in known
+   * problematic locations.
+   * @return {Object} Two properties:
+   * 'toFontChar' - maps original char codes(the value that will be read
+   * from commands such as show text) to the char codes that will be used in the
+   * font that we build
+   * 'charCodeToGlyphId' - maps the new font char codes to glyph ids
+   */
+  function adjustMapping(charCodeToGlyphId, properties) {
+    var toUnicode = properties.toUnicode;
+    var isSymbolic = !!(properties.flags & FontFlags.Symbolic);
+    var isIdentityUnicode =
+      properties.toUnicode instanceof IdentityToUnicodeMap;
+    var newMap = Object.create(null);
+    var toFontChar = [];
+    var usedFontCharCodes = [];
+    var nextAvailableFontCharCode = PRIVATE_USE_OFFSET_START;
+    for (var originalCharCode in charCodeToGlyphId) {
+      originalCharCode |= 0;
+      var glyphId = charCodeToGlyphId[originalCharCode];
+      var fontCharCode = originalCharCode;
+      // First try to map the value to a unicode position if a non identity map
+      // was created.
+      if (!isIdentityUnicode && toUnicode.has(originalCharCode)) {
+        var unicode = toUnicode.get(fontCharCode);
+        // TODO: Try to map ligatures to the correct spot.
+        if (unicode.length === 1) {
+          fontCharCode = unicode.charCodeAt(0);
+        }
+      }
+      // Try to move control characters, special characters and already mapped
+      // characters to the private use area since they will not be drawn by
+      // canvas if left in their current position. Also, move characters if the
+      // font was symbolic and there is only an identity unicode map since the
+      // characters probably aren't in the correct position (fixes an issue
+      // with firefox and thuluthfont).
+      if ((usedFontCharCodes[fontCharCode] !== undefined ||
+           isProblematicUnicodeLocation(fontCharCode) ||
+           (isSymbolic && isIdentityUnicode)) &&
+          nextAvailableFontCharCode <= PRIVATE_USE_OFFSET_END) { // Room left.
+        // Loop to try and find a free spot in the private use area.
+        do {
+          fontCharCode = nextAvailableFontCharCode++;
+
+          if (SKIP_PRIVATE_USE_RANGE_F000_TO_F01F && fontCharCode === 0xF000) {
+            fontCharCode = 0xF020;
+            nextAvailableFontCharCode = fontCharCode + 1;
+          }
+
+        } while (usedFontCharCodes[fontCharCode] !== undefined &&
+                 nextAvailableFontCharCode <= PRIVATE_USE_OFFSET_END);
+      }
+
+      newMap[fontCharCode] = glyphId;
+      toFontChar[originalCharCode] = fontCharCode;
+      usedFontCharCodes[fontCharCode] = true;
+    }
+    return {
+      toFontChar: toFontChar,
+      charCodeToGlyphId: newMap,
+      nextAvailableFontCharCode: nextAvailableFontCharCode
+    };
+  }
+
+  function getRanges(glyphs) {
+    // Array.sort() sorts by characters, not numerically, so convert to an
+    // array of characters.
+    var codes = [];
+    for (var charCode in glyphs) {
+      codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });
+    }
+    codes.sort(function fontGetRangesSort(a, b) {
+      return a.fontCharCode - b.fontCharCode;
+    });
+
+    // Split the sorted codes into ranges.
+    var ranges = [];
+    var length = codes.length;
+    for (var n = 0; n < length; ) {
+      var start = codes[n].fontCharCode;
+      var codeIndices = [codes[n].glyphId];
+      ++n;
+      var end = start;
+      while (n < length && end + 1 === codes[n].fontCharCode) {
+        codeIndices.push(codes[n].glyphId);
+        ++end;
+        ++n;
+        if (end === 0xFFFF) {
+          break;
+        }
+      }
+      ranges.push([start, end, codeIndices]);
+    }
+
+    return ranges;
+  }
+
+  function createCmapTable(glyphs) {
+    var ranges = getRanges(glyphs);
+    var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1;
+    var cmap = '\x00\x00' + // version
+               string16(numTables) +  // numTables
+               '\x00\x03' + // platformID
+               '\x00\x01' + // encodingID
+               string32(4 + numTables * 8); // start of the table record
+
+    var i, ii, j, jj;
+    for (i = ranges.length - 1; i >= 0; --i) {
+      if (ranges[i][0] <= 0xFFFF) { break; }
+    }
+    var bmpLength = i + 1;
+
+    if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) {
+      ranges[i][1] = 0xFFFE;
+    }
+    var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0;
+    var segCount = bmpLength + trailingRangesCount;
+    var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);
+
+    // Fill up the 4 parallel arrays describing the segments.
+    var startCount = '';
+    var endCount = '';
+    var idDeltas = '';
+    var idRangeOffsets = '';
+    var glyphsIds = '';
+    var bias = 0;
+
+    var range, start, end, codes;
+    for (i = 0, ii = bmpLength; i < ii; i++) {
+      range = ranges[i];
+      start = range[0];
+      end = range[1];
+      startCount += string16(start);
+      endCount += string16(end);
+      codes = range[2];
+      var contiguous = true;
+      for (j = 1, jj = codes.length; j < jj; ++j) {
+        if (codes[j] !== codes[j - 1] + 1) {
+          contiguous = false;
+          break;
+        }
+      }
+      if (!contiguous) {
+        var offset = (segCount - i) * 2 + bias * 2;
+        bias += (end - start + 1);
+
+        idDeltas += string16(0);
+        idRangeOffsets += string16(offset);
+
+        for (j = 0, jj = codes.length; j < jj; ++j) {
+          glyphsIds += string16(codes[j]);
+        }
+      } else {
+        var startCode = codes[0];
+
+        idDeltas += string16((startCode - start) & 0xFFFF);
+        idRangeOffsets += string16(0);
+      }
+    }
+
+    if (trailingRangesCount > 0) {
+      endCount += '\xFF\xFF';
+      startCount += '\xFF\xFF';
+      idDeltas += '\x00\x01';
+      idRangeOffsets += '\x00\x00';
+    }
+
+    var format314 = '\x00\x00' + // language
+                    string16(2 * segCount) +
+                    string16(searchParams.range) +
+                    string16(searchParams.entry) +
+                    string16(searchParams.rangeShift) +
+                    endCount + '\x00\x00' + startCount +
+                    idDeltas + idRangeOffsets + glyphsIds;
+
+    var format31012 = '';
+    var header31012 = '';
+    if (numTables > 1) {
+      cmap += '\x00\x03' + // platformID
+              '\x00\x0A' + // encodingID
+              string32(4 + numTables * 8 +
+                       4 + format314.length); // start of the table record
+      format31012 = '';
+      for (i = 0, ii = ranges.length; i < ii; i++) {
+        range = ranges[i];
+        start = range[0];
+        codes = range[2];
+        var code = codes[0];
+        for (j = 1, jj = codes.length; j < jj; ++j) {
+          if (codes[j] !== codes[j - 1] + 1) {
+            end = range[0] + j - 1;
+            format31012 += string32(start) + // startCharCode
+                           string32(end) + // endCharCode
+                           string32(code); // startGlyphID
+            start = end + 1;
+            code = codes[j];
+          }
+        }
+        format31012 += string32(start) + // startCharCode
+                       string32(range[1]) + // endCharCode
+                       string32(code); // startGlyphID
+      }
+      header31012 = '\x00\x0C' + // format
+                    '\x00\x00' + // reserved
+                    string32(format31012.length + 16) + // length
+                    '\x00\x00\x00\x00' + // language
+                    string32(format31012.length / 12); // nGroups
+    }
+
+    return cmap + '\x00\x04' + // format
+                  string16(format314.length + 4) + // length
+                  format314 + header31012 + format31012;
+  }
+
+  function validateOS2Table(os2) {
+    var stream = new Stream(os2.data);
+    var version = stream.getUint16();
+    // TODO verify all OS/2 tables fields, but currently we validate only those
+    // that give us issues
+    stream.getBytes(60); // skipping type, misc sizes, panose, unicode ranges
+    var selection = stream.getUint16();
+    if (version < 4 && (selection & 0x0300)) {
+      return false;
+    }
+    var firstChar = stream.getUint16();
+    var lastChar = stream.getUint16();
+    if (firstChar > lastChar) {
+      return false;
+    }
+    stream.getBytes(6); // skipping sTypoAscender/Descender/LineGap
+    var usWinAscent = stream.getUint16();
+    if (usWinAscent === 0) { // makes font unreadable by windows
+      return false;
+    }
+
+    // OS/2 appears to be valid, resetting some fields
+    os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0
+    return true;
+  }
+
+  function createOS2Table(properties, charstrings, override) {
+    override = override || {
+      unitsPerEm: 0,
+      yMax: 0,
+      yMin: 0,
+      ascent: 0,
+      descent: 0
+    };
+
+    var ulUnicodeRange1 = 0;
+    var ulUnicodeRange2 = 0;
+    var ulUnicodeRange3 = 0;
+    var ulUnicodeRange4 = 0;
+
+    var firstCharIndex = null;
+    var lastCharIndex = 0;
+
+    if (charstrings) {
+      for (var code in charstrings) {
+        code |= 0;
+        if (firstCharIndex > code || !firstCharIndex) {
+          firstCharIndex = code;
+        }
+        if (lastCharIndex < code) {
+          lastCharIndex = code;
+        }
+
+        var position = getUnicodeRangeFor(code);
+        if (position < 32) {
+          ulUnicodeRange1 |= 1 << position;
+        } else if (position < 64) {
+          ulUnicodeRange2 |= 1 << position - 32;
+        } else if (position < 96) {
+          ulUnicodeRange3 |= 1 << position - 64;
+        } else if (position < 123) {
+          ulUnicodeRange4 |= 1 << position - 96;
+        } else {
+          error('Unicode ranges Bits > 123 are reserved for internal usage');
+        }
+      }
+    } else {
+      // TODO
+      firstCharIndex = 0;
+      lastCharIndex = 255;
+    }
+
+    var bbox = properties.bbox || [0, 0, 0, 0];
+    var unitsPerEm = (override.unitsPerEm ||
+                      1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0]);
+
+    // if the font units differ to the PDF glyph space units
+    // then scale up the values
+    var scale = (properties.ascentScaled ? 1.0 :
+                 unitsPerEm / PDF_GLYPH_SPACE_UNITS);
+
+    var typoAscent = (override.ascent ||
+                      Math.round(scale * (properties.ascent || bbox[3])));
+    var typoDescent = (override.descent ||
+                       Math.round(scale * (properties.descent || bbox[1])));
+    if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {
+      typoDescent = -typoDescent; // fixing incorrect descent
+    }
+    var winAscent = override.yMax || typoAscent;
+    var winDescent = -override.yMin || -typoDescent;
+
+    return '\x00\x03' + // version
+           '\x02\x24' + // xAvgCharWidth
+           '\x01\xF4' + // usWeightClass
+           '\x00\x05' + // usWidthClass
+           '\x00\x00' + // fstype (0 to let the font loads via font-face on IE)
+           '\x02\x8A' + // ySubscriptXSize
+           '\x02\xBB' + // ySubscriptYSize
+           '\x00\x00' + // ySubscriptXOffset
+           '\x00\x8C' + // ySubscriptYOffset
+           '\x02\x8A' + // ySuperScriptXSize
+           '\x02\xBB' + // ySuperScriptYSize
+           '\x00\x00' + // ySuperScriptXOffset
+           '\x01\xDF' + // ySuperScriptYOffset
+           '\x00\x31' + // yStrikeOutSize
+           '\x01\x02' + // yStrikeOutPosition
+           '\x00\x00' + // sFamilyClass
+           '\x00\x00\x06' +
+           String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +
+           '\x00\x00\x00\x00\x00\x00' + // Panose
+           string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)
+           string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)
+           string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)
+           string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)
+           '\x2A\x32\x31\x2A' + // achVendID
+           string16(properties.italicAngle ? 1 : 0) + // fsSelection
+           string16(firstCharIndex ||
+                    properties.firstChar) + // usFirstCharIndex
+           string16(lastCharIndex || properties.lastChar) +  // usLastCharIndex
+           string16(typoAscent) + // sTypoAscender
+           string16(typoDescent) + // sTypoDescender
+           '\x00\x64' + // sTypoLineGap (7%-10% of the unitsPerEM value)
+           string16(winAscent) + // usWinAscent
+           string16(winDescent) + // usWinDescent
+           '\x00\x00\x00\x00' + // ulCodePageRange1 (Bits 0-31)
+           '\x00\x00\x00\x00' + // ulCodePageRange2 (Bits 32-63)
+           string16(properties.xHeight) + // sxHeight
+           string16(properties.capHeight) + // sCapHeight
+           string16(0) + // usDefaultChar
+           string16(firstCharIndex || properties.firstChar) + // usBreakChar
+           '\x00\x03';  // usMaxContext
+  }
+
+  function createPostTable(properties) {
+    var angle = Math.floor(properties.italicAngle * (Math.pow(2, 16)));
+    return ('\x00\x03\x00\x00' + // Version number
+            string32(angle) + // italicAngle
+            '\x00\x00' + // underlinePosition
+            '\x00\x00' + // underlineThickness
+            string32(properties.fixedPitch) + // isFixedPitch
+            '\x00\x00\x00\x00' + // minMemType42
+            '\x00\x00\x00\x00' + // maxMemType42
+            '\x00\x00\x00\x00' + // minMemType1
+            '\x00\x00\x00\x00');  // maxMemType1
+  }
+
+  function createNameTable(name, proto) {
+    if (!proto) {
+      proto = [[], []]; // no strings and unicode strings
+    }
+
+    var strings = [
+      proto[0][0] || 'Original licence',  // 0.Copyright
+      proto[0][1] || name,                // 1.Font family
+      proto[0][2] || 'Unknown',           // 2.Font subfamily (font weight)
+      proto[0][3] || 'uniqueID',          // 3.Unique ID
+      proto[0][4] || name,                // 4.Full font name
+      proto[0][5] || 'Version 0.11',      // 5.Version
+      proto[0][6] || '',                  // 6.Postscript name
+      proto[0][7] || 'Unknown',           // 7.Trademark
+      proto[0][8] || 'Unknown',           // 8.Manufacturer
+      proto[0][9] || 'Unknown'            // 9.Designer
+    ];
+
+    // Mac want 1-byte per character strings while Windows want
+    // 2-bytes per character, so duplicate the names table
+    var stringsUnicode = [];
+    var i, ii, j, jj, str;
+    for (i = 0, ii = strings.length; i < ii; i++) {
+      str = proto[1][i] || strings[i];
+
+      var strBufUnicode = [];
+      for (j = 0, jj = str.length; j < jj; j++) {
+        strBufUnicode.push(string16(str.charCodeAt(j)));
+      }
+      stringsUnicode.push(strBufUnicode.join(''));
+    }
+
+    var names = [strings, stringsUnicode];
+    var platforms = ['\x00\x01', '\x00\x03'];
+    var encodings = ['\x00\x00', '\x00\x01'];
+    var languages = ['\x00\x00', '\x04\x09'];
+
+    var namesRecordCount = strings.length * platforms.length;
+    var nameTable =
+      '\x00\x00' +                           // format
+      string16(namesRecordCount) +           // Number of names Record
+      string16(namesRecordCount * 12 + 6);   // Storage
+
+    // Build the name records field
+    var strOffset = 0;
+    for (i = 0, ii = platforms.length; i < ii; i++) {
+      var strs = names[i];
+      for (j = 0, jj = strs.length; j < jj; j++) {
+        str = strs[j];
+        var nameRecord =
+          platforms[i] + // platform ID
+          encodings[i] + // encoding ID
+          languages[i] + // language ID
+          string16(j) + // name ID
+          string16(str.length) +
+          string16(strOffset);
+        nameTable += nameRecord;
+        strOffset += str.length;
+      }
+    }
+
+    nameTable += strings.join('') + stringsUnicode.join('');
+    return nameTable;
+  }
+
+  Font.prototype = {
+    name: null,
+    font: null,
+    mimetype: null,
+    encoding: null,
+    get renderer() {
+      var renderer = FontRendererFactory.create(this);
+      return shadow(this, 'renderer', renderer);
+    },
+
+    exportData: function Font_exportData() {
+      var data = {};
+      for (var i in this) {
+        if (this.hasOwnProperty(i)) {
+          data[i] = this[i];
+        }
+      }
+      return data;
+    },
+
+    checkAndRepair: function Font_checkAndRepair(name, font, properties) {
+      function readTableEntry(file) {
+        var tag = bytesToString(file.getBytes(4));
+
+        var checksum = file.getInt32();
+        var offset = file.getInt32() >>> 0;
+        var length = file.getInt32() >>> 0;
+
+        // Read the table associated data
+        var previousPosition = file.pos;
+        file.pos = file.start ? file.start : 0;
+        file.skip(offset);
+        var data = file.getBytes(length);
+        file.pos = previousPosition;
+
+        if (tag === 'head') {
+          // clearing checksum adjustment
+          data[8] = data[9] = data[10] = data[11] = 0;
+          data[17] |= 0x20; //Set font optimized for cleartype flag
+        }
+
+        return {
+          tag: tag,
+          checksum: checksum,
+          length: length,
+          offset: offset,
+          data: data
+        };
+      }
+
+      function readOpenTypeHeader(ttf) {
+        return {
+          version: bytesToString(ttf.getBytes(4)),
+          numTables: ttf.getUint16(),
+          searchRange: ttf.getUint16(),
+          entrySelector: ttf.getUint16(),
+          rangeShift: ttf.getUint16()
+        };
+      }
+
+      /**
+       * Read the appropriate subtable from the cmap according to 9.6.6.4 from
+       * PDF spec
+       */
+      function readCmapTable(cmap, font, isSymbolicFont) {
+        var segment;
+        var start = (font.start ? font.start : 0) + cmap.offset;
+        font.pos = start;
+
+        var version = font.getUint16();
+        var numTables = font.getUint16();
+
+        var potentialTable;
+        var canBreak = false;
+        // There's an order of preference in terms of which cmap subtable to
+        // use:
+        // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table
+        // - symbolic fonts the preference is a 3,0 table then a 1,0 table
+        // The following takes advantage of the fact that the tables are sorted
+        // to work.
+        for (var i = 0; i < numTables; i++) {
+          var platformId = font.getUint16();
+          var encodingId = font.getUint16();
+          var offset = font.getInt32() >>> 0;
+          var useTable = false;
+
+          if (platformId === 0 && encodingId === 0) {
+            useTable = true;
+            // Continue the loop since there still may be a higher priority
+            // table.
+          } else if (platformId === 1 && encodingId === 0) {
+            useTable = true;
+            // Continue the loop since there still may be a higher priority
+            // table.
+          } else if (platformId === 3 && encodingId === 1 &&
+                     (!isSymbolicFont || !potentialTable)) {
+            useTable = true;
+            if (!isSymbolicFont) {
+              canBreak = true;
+            }
+          } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {
+            useTable = true;
+            canBreak = true;
+          }
+
+          if (useTable) {
+            potentialTable = {
+              platformId: platformId,
+              encodingId: encodingId,
+              offset: offset
+            };
+          }
+          if (canBreak) {
+            break;
+          }
+        }
+
+        if (!potentialTable) {
+          warn('Could not find a preferred cmap table.');
+          return {
+            platformId: -1,
+            encodingId: -1,
+            mappings: [],
+            hasShortCmap: false
+          };
+        }
+
+        font.pos = start + potentialTable.offset;
+        var format = font.getUint16();
+        var length = font.getUint16();
+        var language = font.getUint16();
+
+        var hasShortCmap = false;
+        var mappings = [];
+        var j, glyphId;
+
+        // TODO(mack): refactor this cmap subtable reading logic out
+        if (format === 0) {
+          for (j = 0; j < 256; j++) {
+            var index = font.getByte();
+            if (!index) {
+              continue;
+            }
+            mappings.push({
+              charCode: j,
+              glyphId: index
+            });
+          }
+          hasShortCmap = true;
+        } else if (format === 4) {
+          // re-creating the table in format 4 since the encoding
+          // might be changed
+          var segCount = (font.getUint16() >> 1);
+          font.getBytes(6); // skipping range fields
+          var segIndex, segments = [];
+          for (segIndex = 0; segIndex < segCount; segIndex++) {
+            segments.push({ end: font.getUint16() });
+          }
+          font.getUint16();
+          for (segIndex = 0; segIndex < segCount; segIndex++) {
+            segments[segIndex].start = font.getUint16();
+          }
+
+          for (segIndex = 0; segIndex < segCount; segIndex++) {
+            segments[segIndex].delta = font.getUint16();
+          }
+
+          var offsetsCount = 0;
+          for (segIndex = 0; segIndex < segCount; segIndex++) {
+            segment = segments[segIndex];
+            var rangeOffset = font.getUint16();
+            if (!rangeOffset) {
+              segment.offsetIndex = -1;
+              continue;
+            }
+
+            var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);
+            segment.offsetIndex = offsetIndex;
+            offsetsCount = Math.max(offsetsCount, offsetIndex +
+                                    segment.end - segment.start + 1);
+          }
+
+          var offsets = [];
+          for (j = 0; j < offsetsCount; j++) {
+            offsets.push(font.getUint16());
+          }
+
+          for (segIndex = 0; segIndex < segCount; segIndex++) {
+            segment = segments[segIndex];
+            start = segment.start;
+            var end = segment.end;
+            var delta = segment.delta;
+            offsetIndex = segment.offsetIndex;
+
+            for (j = start; j <= end; j++) {
+              if (j === 0xFFFF) {
+                continue;
+              }
+
+              glyphId = (offsetIndex < 0 ?
+                         j : offsets[offsetIndex + j - start]);
+              glyphId = (glyphId + delta) & 0xFFFF;
+              if (glyphId === 0) {
+                continue;
+              }
+              mappings.push({
+                charCode: j,
+                glyphId: glyphId
+              });
+            }
+          }
+        } else if (format === 6) {
+          // Format 6 is a 2-bytes dense mapping, which means the font data
+          // lives glue together even if they are pretty far in the unicode
+          // table. (This looks weird, so I can have missed something), this
+          // works on Linux but seems to fails on Mac so let's rewrite the
+          // cmap table to a 3-1-4 style
+          var firstCode = font.getUint16();
+          var entryCount = font.getUint16();
+
+          for (j = 0; j < entryCount; j++) {
+            glyphId = font.getUint16();
+            var charCode = firstCode + j;
+
+            mappings.push({
+              charCode: charCode,
+              glyphId: glyphId
+            });
+          }
+        } else {
+          error('cmap table has unsupported format: ' + format);
+        }
+
+        // removing duplicate entries
+        mappings.sort(function (a, b) {
+          return a.charCode - b.charCode;
+        });
+        for (i = 1; i < mappings.length; i++) {
+          if (mappings[i - 1].charCode === mappings[i].charCode) {
+            mappings.splice(i, 1);
+            i--;
+          }
+        }
+
+        return {
+          platformId: potentialTable.platformId,
+          encodingId: potentialTable.encodingId,
+          mappings: mappings,
+          hasShortCmap: hasShortCmap
+        };
+      }
+
+      function sanitizeMetrics(font, header, metrics, numGlyphs) {
+        if (!header) {
+          if (metrics) {
+            metrics.data = null;
+          }
+          return;
+        }
+
+        font.pos = (font.start ? font.start : 0) + header.offset;
+        font.pos += header.length - 2;
+        var numOfMetrics = font.getUint16();
+
+        if (numOfMetrics > numGlyphs) {
+          info('The numOfMetrics (' + numOfMetrics + ') should not be ' +
+               'greater than the numGlyphs (' + numGlyphs + ')');
+          // Reduce numOfMetrics if it is greater than numGlyphs
+          numOfMetrics = numGlyphs;
+          header.data[34] = (numOfMetrics & 0xff00) >> 8;
+          header.data[35] = numOfMetrics & 0x00ff;
+        }
+
+        var numOfSidebearings = numGlyphs - numOfMetrics;
+        var numMissing = numOfSidebearings -
+          ((metrics.length - numOfMetrics * 4) >> 1);
+
+        if (numMissing > 0) {
+          // For each missing glyph, we set both the width and lsb to 0 (zero).
+          // Since we need to add two properties for each glyph, this explains
+          // the use of |numMissing * 2| when initializing the typed array.
+          var entries = new Uint8Array(metrics.length + numMissing * 2);
+          entries.set(metrics.data);
+          metrics.data = entries;
+        }
+      }
+
+      function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart,
+                             hintsValid) {
+        if (sourceEnd - sourceStart <= 12) {
+          // glyph with data less than 12 is invalid one
+          return 0;
+        }
+        var glyf = source.subarray(sourceStart, sourceEnd);
+        var contoursCount = (glyf[0] << 8) | glyf[1];
+        if (contoursCount & 0x8000) {
+          // complex glyph, writing as is
+          dest.set(glyf, destStart);
+          return glyf.length;
+        }
+
+        var i, j = 10, flagsCount = 0;
+        for (i = 0; i < contoursCount; i++) {
+          var endPoint = (glyf[j] << 8) | glyf[j + 1];
+          flagsCount = endPoint + 1;
+          j += 2;
+        }
+        // skipping instructions
+        var instructionsStart = j;
+        var instructionsLength = (glyf[j] << 8) | glyf[j + 1];
+        j += 2 + instructionsLength;
+        var instructionsEnd = j;
+        // validating flags
+        var coordinatesLength = 0;
+        for (i = 0; i < flagsCount; i++) {
+          var flag = glyf[j++];
+          if (flag & 0xC0) {
+            // reserved flags must be zero, cleaning up
+            glyf[j - 1] = flag & 0x3F;
+          }
+          var xyLength = ((flag & 2) ? 1 : (flag & 16) ? 0 : 2) +
+                         ((flag & 4) ? 1 : (flag & 32) ? 0 : 2);
+          coordinatesLength += xyLength;
+          if (flag & 8) {
+            var repeat = glyf[j++];
+            i += repeat;
+            coordinatesLength += repeat * xyLength;
+          }
+        }
+        // glyph without coordinates will be rejected
+        if (coordinatesLength === 0) {
+          return 0;
+        }
+        var glyphDataLength = j + coordinatesLength;
+        if (glyphDataLength > glyf.length) {
+          // not enough data for coordinates
+          return 0;
+        }
+        if (!hintsValid && instructionsLength > 0) {
+          dest.set(glyf.subarray(0, instructionsStart), destStart);
+          dest.set([0, 0], destStart + instructionsStart);
+          dest.set(glyf.subarray(instructionsEnd, glyphDataLength),
+                   destStart + instructionsStart + 2);
+          glyphDataLength -= instructionsLength;
+          if (glyf.length - glyphDataLength > 3) {
+            glyphDataLength = (glyphDataLength + 3) & ~3;
+          }
+          return glyphDataLength;
+        }
+        if (glyf.length - glyphDataLength > 3) {
+          // truncating and aligning to 4 bytes the long glyph data
+          glyphDataLength = (glyphDataLength + 3) & ~3;
+          dest.set(glyf.subarray(0, glyphDataLength), destStart);
+          return glyphDataLength;
+        }
+        // glyph data is fine
+        dest.set(glyf, destStart);
+        return glyf.length;
+      }
+
+      function sanitizeHead(head, numGlyphs, locaLength) {
+        var data = head.data;
+
+        // Validate version:
+        // Should always be 0x00010000
+        var version = int32(data[0], data[1], data[2], data[3]);
+        if (version >> 16 !== 1) {
+          info('Attempting to fix invalid version in head table: ' + version);
+          data[0] = 0;
+          data[1] = 1;
+          data[2] = 0;
+          data[3] = 0;
+        }
+
+        var indexToLocFormat = int16(data[50], data[51]);
+        if (indexToLocFormat < 0 || indexToLocFormat > 1) {
+          info('Attempting to fix invalid indexToLocFormat in head table: ' +
+               indexToLocFormat);
+
+          // The value of indexToLocFormat should be 0 if the loca table
+          // consists of short offsets, and should be 1 if the loca table
+          // consists of long offsets.
+          //
+          // The number of entries in the loca table should be numGlyphs + 1.
+          //
+          // Using this information, we can work backwards to deduce if the
+          // size of each offset in the loca table, and thus figure out the
+          // appropriate value for indexToLocFormat.
+
+          var numGlyphsPlusOne = numGlyphs + 1;
+          if (locaLength === numGlyphsPlusOne << 1) {
+            // 0x0000 indicates the loca table consists of short offsets
+            data[50] = 0;
+            data[51] = 0;
+          } else if (locaLength === numGlyphsPlusOne << 2) {
+            // 0x0001 indicates the loca table consists of long offsets
+            data[50] = 0;
+            data[51] = 1;
+          } else {
+            warn('Could not fix indexToLocFormat: ' + indexToLocFormat);
+          }
+        }
+      }
+
+      function sanitizeGlyphLocations(loca, glyf, numGlyphs,
+                                      isGlyphLocationsLong, hintsValid,
+                                      dupFirstEntry) {
+        var itemSize, itemDecode, itemEncode;
+        if (isGlyphLocationsLong) {
+          itemSize = 4;
+          itemDecode = function fontItemDecodeLong(data, offset) {
+            return (data[offset] << 24) | (data[offset + 1] << 16) |
+                   (data[offset + 2] << 8) | data[offset + 3];
+          };
+          itemEncode = function fontItemEncodeLong(data, offset, value) {
+            data[offset] = (value >>> 24) & 0xFF;
+            data[offset + 1] = (value >> 16) & 0xFF;
+            data[offset + 2] = (value >> 8) & 0xFF;
+            data[offset + 3] = value & 0xFF;
+          };
+        } else {
+          itemSize = 2;
+          itemDecode = function fontItemDecode(data, offset) {
+            return (data[offset] << 9) | (data[offset + 1] << 1);
+          };
+          itemEncode = function fontItemEncode(data, offset, value) {
+            data[offset] = (value >> 9) & 0xFF;
+            data[offset + 1] = (value >> 1) & 0xFF;
+          };
+        }
+        var locaData = loca.data;
+        var locaDataSize = itemSize * (1 + numGlyphs);
+        // is loca.data too short or long?
+        if (locaData.length !== locaDataSize) {
+          locaData = new Uint8Array(locaDataSize);
+          locaData.set(loca.data.subarray(0, locaDataSize));
+          loca.data = locaData;
+        }
+        // removing the invalid glyphs
+        var oldGlyfData = glyf.data;
+        var oldGlyfDataLength = oldGlyfData.length;
+        var newGlyfData = new Uint8Array(oldGlyfDataLength);
+        var startOffset = itemDecode(locaData, 0);
+        var writeOffset = 0;
+        var missingGlyphData = {};
+        itemEncode(locaData, 0, writeOffset);
+        var i, j;
+        for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
+          var endOffset = itemDecode(locaData, j);
+          if (endOffset > oldGlyfDataLength &&
+              ((oldGlyfDataLength + 3) & ~3) === endOffset) {
+            // Aspose breaks fonts by aligning the glyphs to the qword, but not
+            // the glyf table size, which makes last glyph out of range.
+            endOffset = oldGlyfDataLength;
+          }
+          if (endOffset > oldGlyfDataLength) {
+            // glyph end offset points outside glyf data, rejecting the glyph
+            itemEncode(locaData, j, writeOffset);
+            startOffset = endOffset;
+            continue;
+          }
+
+          if (startOffset === endOffset) {
+            missingGlyphData[i] = true;
+          }
+
+          var newLength = sanitizeGlyph(oldGlyfData, startOffset, endOffset,
+                                        newGlyfData, writeOffset, hintsValid);
+          writeOffset += newLength;
+          itemEncode(locaData, j, writeOffset);
+          startOffset = endOffset;
+        }
+
+        if (writeOffset === 0) {
+          // glyf table cannot be empty -- redoing the glyf and loca tables
+          // to have single glyph with one point
+          var simpleGlyph = new Uint8Array(
+            [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);
+          for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
+            itemEncode(locaData, j, simpleGlyph.length);
+          }
+          glyf.data = simpleGlyph;
+          return missingGlyphData;
+        }
+
+        if (dupFirstEntry) {
+          var firstEntryLength = itemDecode(locaData, itemSize);
+          if (newGlyfData.length > firstEntryLength + writeOffset) {
+            glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);
+          } else {
+            glyf.data = new Uint8Array(firstEntryLength + writeOffset);
+            glyf.data.set(newGlyfData.subarray(0, writeOffset));
+          }
+          glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);
+          itemEncode(loca.data, locaData.length - itemSize,
+                     writeOffset + firstEntryLength);
+        } else {
+          glyf.data = newGlyfData.subarray(0, writeOffset);
+        }
+        return missingGlyphData;
+      }
+
+      function readPostScriptTable(post, properties, maxpNumGlyphs) {
+        var start = (font.start ? font.start : 0) + post.offset;
+        font.pos = start;
+
+        var length = post.length, end = start + length;
+        var version = font.getInt32();
+        // skip rest to the tables
+        font.getBytes(28);
+
+        var glyphNames;
+        var valid = true;
+        var i;
+
+        switch (version) {
+          case 0x00010000:
+            glyphNames = MacStandardGlyphOrdering;
+            break;
+          case 0x00020000:
+            var numGlyphs = font.getUint16();
+            if (numGlyphs !== maxpNumGlyphs) {
+              valid = false;
+              break;
+            }
+            var glyphNameIndexes = [];
+            for (i = 0; i < numGlyphs; ++i) {
+              var index = font.getUint16();
+              if (index >= 32768) {
+                valid = false;
+                break;
+              }
+              glyphNameIndexes.push(index);
+            }
+            if (!valid) {
+              break;
+            }
+            var customNames = [];
+            var strBuf = [];
+            while (font.pos < end) {
+              var stringLength = font.getByte();
+              strBuf.length = stringLength;
+              for (i = 0; i < stringLength; ++i) {
+                strBuf[i] = String.fromCharCode(font.getByte());
+              }
+              customNames.push(strBuf.join(''));
+            }
+            glyphNames = [];
+            for (i = 0; i < numGlyphs; ++i) {
+              var j = glyphNameIndexes[i];
+              if (j < 258) {
+                glyphNames.push(MacStandardGlyphOrdering[j]);
+                continue;
+              }
+              glyphNames.push(customNames[j - 258]);
+            }
+            break;
+          case 0x00030000:
+            break;
+          default:
+            warn('Unknown/unsupported post table version ' + version);
+            valid = false;
+            break;
+        }
+        properties.glyphNames = glyphNames;
+        return valid;
+      }
+
+      function readNameTable(nameTable) {
+        var start = (font.start ? font.start : 0) + nameTable.offset;
+        font.pos = start;
+
+        var names = [[], []];
+        var length = nameTable.length, end = start + length;
+        var format = font.getUint16();
+        var FORMAT_0_HEADER_LENGTH = 6;
+        if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {
+          // unsupported name table format or table "too" small
+          return names;
+        }
+        var numRecords = font.getUint16();
+        var stringsStart = font.getUint16();
+        var records = [];
+        var NAME_RECORD_LENGTH = 12;
+        var i, ii;
+
+        for (i = 0; i < numRecords &&
+                        font.pos + NAME_RECORD_LENGTH <= end; i++) {
+          var r = {
+            platform: font.getUint16(),
+            encoding: font.getUint16(),
+            language: font.getUint16(),
+            name: font.getUint16(),
+            length: font.getUint16(),
+            offset: font.getUint16()
+          };
+          // using only Macintosh and Windows platform/encoding names
+          if ((r.platform === 1 && r.encoding === 0 && r.language === 0) ||
+              (r.platform === 3 && r.encoding === 1 && r.language === 0x409)) {
+            records.push(r);
+          }
+        }
+        for (i = 0, ii = records.length; i < ii; i++) {
+          var record = records[i];
+          var pos = start + stringsStart + record.offset;
+          if (pos + record.length > end) {
+            continue; // outside of name table, ignoring
+          }
+          font.pos = pos;
+          var nameIndex = record.name;
+          if (record.encoding) {
+            // unicode
+            var str = '';
+            for (var j = 0, jj = record.length; j < jj; j += 2) {
+              str += String.fromCharCode(font.getUint16());
+            }
+            names[1][nameIndex] = str;
+          } else {
+            names[0][nameIndex] = bytesToString(font.getBytes(record.length));
+          }
+        }
+        return names;
+      }
+
+      var TTOpsStackDeltas = [
+        0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,
+        -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,
+        1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,
+        0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,
+        0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,
+        -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,
+        -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,
+        -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];
+        // 0xC0-DF == -1 and 0xE0-FF == -2
+
+      function sanitizeTTProgram(table, ttContext) {
+        var data = table.data;
+        var i = 0, j, n, b, funcId, pc, lastEndf = 0, lastDeff = 0;
+        var stack = [];
+        var callstack = [];
+        var functionsCalled = [];
+        var tooComplexToFollowFunctions =
+          ttContext.tooComplexToFollowFunctions;
+        var inFDEF = false, ifLevel = 0, inELSE = 0;
+        for (var ii = data.length; i < ii;) {
+          var op = data[i++];
+          // The TrueType instruction set docs can be found at
+          // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html
+          if (op === 0x40) { // NPUSHB - pushes n bytes
+            n = data[i++];
+            if (inFDEF || inELSE) {
+              i += n;
+            } else {
+              for (j = 0; j < n; j++) {
+                stack.push(data[i++]);
+              }
+            }
+          } else if (op === 0x41) { // NPUSHW - pushes n words
+            n = data[i++];
+            if (inFDEF || inELSE) {
+              i += n * 2;
+            } else {
+              for (j = 0; j < n; j++) {
+                b = data[i++];
+                stack.push((b << 8) | data[i++]);
+              }
+            }
+          } else if ((op & 0xF8) === 0xB0) { // PUSHB - pushes bytes
+            n = op - 0xB0 + 1;
+            if (inFDEF || inELSE) {
+              i += n;
+            } else {
+              for (j = 0; j < n; j++) {
+                stack.push(data[i++]);
+              }
+            }
+          } else if ((op & 0xF8) === 0xB8) { // PUSHW - pushes words
+            n = op - 0xB8 + 1;
+            if (inFDEF || inELSE) {
+              i += n * 2;
+            } else {
+              for (j = 0; j < n; j++) {
+                b = data[i++];
+                stack.push((b << 8) | data[i++]);
+              }
+            }
+          } else if (op === 0x2B && !tooComplexToFollowFunctions) { // CALL
+            if (!inFDEF && !inELSE) {
+              // collecting inforamtion about which functions are used
+              funcId = stack[stack.length - 1];
+              ttContext.functionsUsed[funcId] = true;
+              if (funcId in ttContext.functionsStackDeltas) {
+                stack.length += ttContext.functionsStackDeltas[funcId];
+              } else if (funcId in ttContext.functionsDefined &&
+                         functionsCalled.indexOf(funcId) < 0) {
+                callstack.push({data: data, i: i, stackTop: stack.length - 1});
+                functionsCalled.push(funcId);
+                pc = ttContext.functionsDefined[funcId];
+                if (!pc) {
+                  warn('TT: CALL non-existent function');
+                  ttContext.hintsValid = false;
+                  return;
+                }
+                data = pc.data;
+                i = pc.i;
+              }
+            }
+          } else if (op === 0x2C && !tooComplexToFollowFunctions) { // FDEF
+            if (inFDEF || inELSE) {
+              warn('TT: nested FDEFs not allowed');
+              tooComplexToFollowFunctions = true;
+            }
+            inFDEF = true;
+            // collecting inforamtion about which functions are defined
+            lastDeff = i;
+            funcId = stack.pop();
+            ttContext.functionsDefined[funcId] = {data: data, i: i};
+          } else if (op === 0x2D) { // ENDF - end of function
+            if (inFDEF) {
+              inFDEF = false;
+              lastEndf = i;
+            } else {
+              pc = callstack.pop();
+              if (!pc) {
+                warn('TT: ENDF bad stack');
+                ttContext.hintsValid = false;
+                return;
+              }
+              funcId = functionsCalled.pop();
+              data = pc.data;
+              i = pc.i;
+              ttContext.functionsStackDeltas[funcId] =
+                stack.length - pc.stackTop;
+            }
+          } else if (op === 0x89) { // IDEF - instruction definition
+            if (inFDEF || inELSE) {
+              warn('TT: nested IDEFs not allowed');
+              tooComplexToFollowFunctions = true;
+            }
+            inFDEF = true;
+            // recording it as a function to track ENDF
+            lastDeff = i;
+          } else if (op === 0x58) { // IF
+            ++ifLevel;
+          } else if (op === 0x1B) { // ELSE
+            inELSE = ifLevel;
+          } else if (op === 0x59) { // EIF
+            if (inELSE === ifLevel) {
+              inELSE = 0;
+            }
+            --ifLevel;
+          } else if (op === 0x1C) { // JMPR
+            if (!inFDEF && !inELSE) {
+              var offset = stack[stack.length - 1];
+              // only jumping forward to prevent infinite loop
+              if (offset > 0) {
+                i += offset - 1;
+              }
+            }
+          }
+          // Adjusting stack not extactly, but just enough to get function id
+          if (!inFDEF && !inELSE) {
+            var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] :
+              op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0;
+            if (op >= 0x71 && op <= 0x75) {
+              n = stack.pop();
+              if (n === n) {
+                stackDelta = -n * 2;
+              }
+            }
+            while (stackDelta < 0 && stack.length > 0) {
+              stack.pop();
+              stackDelta++;
+            }
+            while (stackDelta > 0) {
+              stack.push(NaN); // pushing any number into stack
+              stackDelta--;
+            }
+          }
+        }
+        ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;
+        var content = [data];
+        if (i > data.length) {
+          content.push(new Uint8Array(i - data.length));
+        }
+        if (lastDeff > lastEndf) {
+          warn('TT: complementing a missing function tail');
+          // new function definition started, but not finished
+          // complete function by [CLEAR, ENDF]
+          content.push(new Uint8Array([0x22, 0x2D]));
+        }
+        foldTTTable(table, content);
+      }
+
+      function checkInvalidFunctions(ttContext, maxFunctionDefs) {
+        if (ttContext.tooComplexToFollowFunctions) {
+          return;
+        }
+        if (ttContext.functionsDefined.length > maxFunctionDefs) {
+          warn('TT: more functions defined than expected');
+          ttContext.hintsValid = false;
+          return;
+        }
+        for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {
+          if (j > maxFunctionDefs) {
+            warn('TT: invalid function id: ' + j);
+            ttContext.hintsValid = false;
+            return;
+          }
+          if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {
+            warn('TT: undefined function: ' + j);
+            ttContext.hintsValid = false;
+            return;
+          }
+        }
+      }
+
+      function foldTTTable(table, content) {
+        if (content.length > 1) {
+          // concatenating the content items
+          var newLength = 0;
+          var j, jj;
+          for (j = 0, jj = content.length; j < jj; j++) {
+            newLength += content[j].length;
+          }
+          newLength = (newLength + 3) & ~3;
+          var result = new Uint8Array(newLength);
+          var pos = 0;
+          for (j = 0, jj = content.length; j < jj; j++) {
+            result.set(content[j], pos);
+            pos += content[j].length;
+          }
+          table.data = result;
+          table.length = newLength;
+        }
+      }
+
+      function sanitizeTTPrograms(fpgm, prep, cvt) {
+        var ttContext = {
+          functionsDefined: [],
+          functionsUsed: [],
+          functionsStackDeltas: [],
+          tooComplexToFollowFunctions: false,
+          hintsValid: true
+        };
+        if (fpgm) {
+          sanitizeTTProgram(fpgm, ttContext);
+        }
+        if (prep) {
+          sanitizeTTProgram(prep, ttContext);
+        }
+        if (fpgm) {
+          checkInvalidFunctions(ttContext, maxFunctionDefs);
+        }
+        if (cvt && (cvt.length & 1)) {
+          var cvtData = new Uint8Array(cvt.length + 1);
+          cvtData.set(cvt.data);
+          cvt.data = cvtData;
+        }
+        return ttContext.hintsValid;
+      }
+
+      // The following steps modify the original font data, making copy
+      font = new Stream(new Uint8Array(font.getBytes()));
+
+      var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp',
+        'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF '];
+
+      var header = readOpenTypeHeader(font);
+      var numTables = header.numTables;
+      var cff, cffFile;
+
+      var tables = { 'OS/2': null, cmap: null, head: null, hhea: null,
+                     hmtx: null, maxp: null, name: null, post: null };
+      var table;
+      for (var i = 0; i < numTables; i++) {
+        table = readTableEntry(font);
+        if (VALID_TABLES.indexOf(table.tag) < 0) {
+          continue; // skipping table if it's not a required or optional table
+        }
+        if (table.length === 0) {
+          continue; // skipping empty tables
+        }
+        tables[table.tag] = table;
+      }
+
+      var isTrueType = !tables['CFF '];
+      if (!isTrueType) {
+        // OpenType font
+        if (header.version === 'OTTO' ||
+            !tables.head || !tables.hhea || !tables.maxp || !tables.post) {
+          // no major tables: throwing everything at CFFFont
+          cffFile = new Stream(tables['CFF '].data);
+          cff = new CFFFont(cffFile, properties);
+
+          return this.convert(name, cff, properties);
+        }
+
+        delete tables.glyf;
+        delete tables.loca;
+        delete tables.fpgm;
+        delete tables.prep;
+        delete tables['cvt '];
+        this.isOpenType = true;
+      } else {
+        if (!tables.glyf || !tables.loca) {
+          error('Required "glyf" or "loca" tables are not found');
+        }
+        this.isOpenType = false;
+      }
+
+      if (!tables.maxp) {
+        error('Required "maxp" table is not found');
+      }
+
+      font.pos = (font.start || 0) + tables.maxp.offset;
+      var version = font.getInt32();
+      var numGlyphs = font.getUint16();
+      var maxFunctionDefs = 0;
+      if (version >= 0x00010000 && tables.maxp.length >= 22) {
+        // maxZones can be invalid
+        font.pos += 8;
+        var maxZones = font.getUint16();
+        if (maxZones > 2) { // reset to 2 if font has invalid maxZones
+          tables.maxp.data[14] = 0;
+          tables.maxp.data[15] = 2;
+        }
+        font.pos += 4;
+        maxFunctionDefs = font.getUint16();
+      }
+
+      var dupFirstEntry = false;
+      if (properties.type === 'CIDFontType2' && properties.toUnicode &&
+          properties.toUnicode.get(0) > '\u0000') {
+        // oracle's defect (see 3427), duplicating first entry
+        dupFirstEntry = true;
+        numGlyphs++;
+        tables.maxp.data[4] = numGlyphs >> 8;
+        tables.maxp.data[5] = numGlyphs & 255;
+      }
+
+      var hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep,
+                                          tables['cvt '], maxFunctionDefs);
+      if (!hintsValid) {
+        delete tables.fpgm;
+        delete tables.prep;
+        delete tables['cvt '];
+      }
+
+      // Ensure the hmtx table contains the advance width and
+      // sidebearings information for numGlyphs in the maxp table
+      sanitizeMetrics(font, tables.hhea, tables.hmtx, numGlyphs);
+
+      if (!tables.head) {
+        error('Required "head" table is not found');
+      }
+
+      sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);
+
+      var missingGlyphs = {};
+      if (isTrueType) {
+        var isGlyphLocationsLong = int16(tables.head.data[50],
+                                         tables.head.data[51]);
+        missingGlyphs = sanitizeGlyphLocations(tables.loca, tables.glyf,
+                                               numGlyphs, isGlyphLocationsLong,
+                                               hintsValid, dupFirstEntry);
+      }
+
+      if (!tables.hhea) {
+        error('Required "hhea" table is not found');
+      }
+
+      // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth
+      // Sometimes it's 0. That needs to be fixed
+      if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {
+        tables.hhea.data[10] = 0xFF;
+        tables.hhea.data[11] = 0xFF;
+      }
+
+      // The 'post' table has glyphs names.
+      if (tables.post) {
+        var valid = readPostScriptTable(tables.post, properties, numGlyphs);
+        if (!valid) {
+          tables.post = null;
+        }
+      }
+
+      var charCodeToGlyphId = [], charCode, toUnicode = properties.toUnicode;
+
+      function hasGlyph(glyphId, charCode) {
+        if (!missingGlyphs[glyphId]) {
+          return true;
+        }
+        if (charCode >= 0 && toUnicode.has(charCode)) {
+          return true;
+        }
+        return false;
+      }
+
+      if (properties.type === 'CIDFontType2') {
+        var cidToGidMap = properties.cidToGidMap || [];
+        var isCidToGidMapEmpty = cidToGidMap.length === 0;
+
+        properties.cMap.forEach(function(charCode, cid) {
+          assert(cid <= 0xffff, 'Max size of CID is 65,535');
+          var glyphId = -1;
+          if (isCidToGidMapEmpty) {
+            glyphId = charCode;
+          } else if (cidToGidMap[cid] !== undefined) {
+            glyphId = cidToGidMap[cid];
+          }
+
+          if (glyphId >= 0 && glyphId < numGlyphs &&
+              hasGlyph(glyphId, charCode)) {
+            charCodeToGlyphId[charCode] = glyphId;
+          }
+        });
+        if (dupFirstEntry) {
+          charCodeToGlyphId[0] = numGlyphs - 1;
+        }
+      } else {
+        // Most of the following logic in this code branch is based on the
+        // 9.6.6.4 of the PDF spec.
+        var cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont);
+        var cmapPlatformId = cmapTable.platformId;
+        var cmapEncodingId = cmapTable.encodingId;
+        var cmapMappings = cmapTable.mappings;
+        var cmapMappingsLength = cmapMappings.length;
+        var hasEncoding = properties.differences.length ||
+                          !!properties.baseEncodingName;
+
+        // The spec seems to imply that if the font is symbolic the encoding
+        // should be ignored, this doesn't appear to work for 'preistabelle.pdf'
+        // where the the font is symbolic and it has an encoding.
+        if (hasEncoding &&
+            (cmapPlatformId === 3 && cmapEncodingId === 1 ||
+             cmapPlatformId === 1 && cmapEncodingId === 0) ||
+            (cmapPlatformId === -1 && cmapEncodingId === -1 && // Temporary hack
+             !!Encodings[properties.baseEncodingName])) {      // Temporary hack
+          // When no preferred cmap table was found and |baseEncodingName| is
+          // one of the predefined encodings, we seem to obtain a better
+          // |charCodeToGlyphId| map from the code below (fixes bug 1057544).
+          // TODO: Note that this is a hack which should be removed as soon as
+          //       we have proper support for more exotic cmap tables.
+
+          var baseEncoding = [];
+          if (properties.baseEncodingName === 'MacRomanEncoding' ||
+              properties.baseEncodingName === 'WinAnsiEncoding') {
+            baseEncoding = Encodings[properties.baseEncodingName];
+          }
+          for (charCode = 0; charCode < 256; charCode++) {
+            var glyphName;
+            if (this.differences && charCode in this.differences) {
+              glyphName = this.differences[charCode];
+            } else if (charCode in baseEncoding &&
+                       baseEncoding[charCode] !== '') {
+              glyphName = baseEncoding[charCode];
+            } else {
+              glyphName = Encodings.StandardEncoding[charCode];
+            }
+            if (!glyphName) {
+              continue;
+            }
+            var unicodeOrCharCode;
+            if (cmapPlatformId === 3 && cmapEncodingId === 1) {
+              unicodeOrCharCode = GlyphsUnicode[glyphName];
+            } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {
+              // TODO: the encoding needs to be updated with mac os table.
+              unicodeOrCharCode = Encodings.MacRomanEncoding.indexOf(glyphName);
+            }
+
+            var found = false;
+            for (i = 0; i < cmapMappingsLength; ++i) {
+              if (cmapMappings[i].charCode === unicodeOrCharCode &&
+                  hasGlyph(cmapMappings[i].glyphId, unicodeOrCharCode)) {
+                charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
+                found = true;
+                break;
+              }
+            }
+            if (!found && properties.glyphNames) {
+              // Try to map using the post table. There are currently no known
+              // pdfs that this fixes.
+              var glyphId = properties.glyphNames.indexOf(glyphName);
+              if (glyphId > 0 && hasGlyph(glyphId, -1)) {
+                charCodeToGlyphId[charCode] = glyphId;
+              }
+            }
+          }
+        } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {
+          // Default Unicode semantics, use the charcodes as is.
+          for (i = 0; i < cmapMappingsLength; ++i) {
+            charCodeToGlyphId[cmapMappings[i].charCode] =
+              cmapMappings[i].glyphId;
+          }
+        } else {
+          // For (3, 0) cmap tables:
+          // The charcode key being stored in charCodeToGlyphId is the lower
+          // byte of the two-byte charcodes of the cmap table since according to
+          // the spec: 'each byte from the string shall be prepended with the
+          // high byte of the range [of charcodes in the cmap table], to form
+          // a two-byte character, which shall be used to select the
+          // associated glyph description from the subtable'.
+          //
+          // For (1, 0) cmap tables:
+          // 'single bytes from the string shall be used to look up the
+          // associated glyph descriptions from the subtable'. This means
+          // charcodes in the cmap will be single bytes, so no-op since
+          // glyph.charCode & 0xFF === glyph.charCode
+          for (i = 0; i < cmapMappingsLength; ++i) {
+            charCode = cmapMappings[i].charCode & 0xFF;
+            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
+          }
+        }
+      }
+
+      if (charCodeToGlyphId.length === 0) {
+        // defines at least one glyph
+        charCodeToGlyphId[0] = 0;
+      }
+
+      // Converting glyphs and ids into font's cmap table
+      var newMapping = adjustMapping(charCodeToGlyphId, properties);
+      this.toFontChar = newMapping.toFontChar;
+      tables.cmap = {
+        tag: 'cmap',
+        data: createCmapTable(newMapping.charCodeToGlyphId)
+      };
+
+      if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) {
+        // extract some more font properties from the OpenType head and
+        // hhea tables; yMin and descent value are always negative
+        var override = {
+          unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),
+          yMax: int16(tables.head.data[42], tables.head.data[43]),
+          yMin: int16(tables.head.data[38], tables.head.data[39]) - 0x10000,
+          ascent: int16(tables.hhea.data[4], tables.hhea.data[5]),
+          descent: int16(tables.hhea.data[6], tables.hhea.data[7]) - 0x10000
+        };
+
+        tables['OS/2'] = {
+          tag: 'OS/2',
+          data: createOS2Table(properties, newMapping.charCodeToGlyphId,
+                               override)
+        };
+      }
+
+      // Rewrite the 'post' table if needed
+      if (!tables.post) {
+        tables.post = {
+          tag: 'post',
+          data: createPostTable(properties)
+        };
+      }
+
+      if (!isTrueType) {
+        try {
+          // Trying to repair CFF file
+          cffFile = new Stream(tables['CFF '].data);
+          var parser = new CFFParser(cffFile, properties);
+          cff = parser.parse();
+          var compiler = new CFFCompiler(cff);
+          tables['CFF '].data = compiler.compile();
+        } catch (e) {
+          warn('Failed to compile font ' + properties.loadedName);
+        }
+      }
+
+      // Re-creating 'name' table
+      if (!tables.name) {
+        tables.name = {
+          tag: 'name',
+          data: createNameTable(this.name)
+        };
+      } else {
+        // ... using existing 'name' table as prototype
+        var namePrototype = readNameTable(tables.name);
+        tables.name.data = createNameTable(name, namePrototype);
+      }
+
+      var builder = new OpenTypeFileBuilder(header.version);
+      for (var tableTag in tables) {
+        builder.addTable(tableTag, tables[tableTag].data);
+      }
+      return builder.toArray();
+    },
+
+    convert: function Font_convert(fontName, font, properties) {
+      // TODO: Check the charstring widths to determine this.
+      properties.fixedPitch = false;
+
+      var mapping = font.getGlyphMapping(properties);
+      var newMapping = adjustMapping(mapping, properties);
+      this.toFontChar = newMapping.toFontChar;
+      var numGlyphs = font.numGlyphs;
+
+      function getCharCodes(charCodeToGlyphId, glyphId) {
+        var charCodes = null;
+        for (var charCode in charCodeToGlyphId) {
+          if (glyphId === charCodeToGlyphId[charCode]) {
+            if (!charCodes) {
+              charCodes = [];
+            }
+            charCodes.push(charCode | 0);
+          }
+        }
+        return charCodes;
+      }
+
+      function createCharCode(charCodeToGlyphId, glyphId) {
+        for (var charCode in charCodeToGlyphId) {
+          if (glyphId === charCodeToGlyphId[charCode]) {
+            return charCode | 0;
+          }
+        }
+        newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =
+            glyphId;
+        return newMapping.nextAvailableFontCharCode++;
+      }
+
+      var seacs = font.seacs;
+      if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {
+        var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;
+        var charset = font.getCharset();
+        var seacMap = Object.create(null);
+        for (var glyphId in seacs) {
+          glyphId |= 0;
+          var seac = seacs[glyphId];
+          var baseGlyphName = Encodings.StandardEncoding[seac[2]];
+          var accentGlyphName = Encodings.StandardEncoding[seac[3]];
+          var baseGlyphId = charset.indexOf(baseGlyphName);
+          var accentGlyphId = charset.indexOf(accentGlyphName);
+          if (baseGlyphId < 0 || accentGlyphId < 0) {
+            continue;
+          }
+          var accentOffset = {
+            x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],
+            y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]
+          };
+
+          var charCodes = getCharCodes(mapping, glyphId);
+          if (!charCodes) {
+            // There's no point in mapping it if the char code was never mapped
+            // to begin with.
+            continue;
+          }
+          for (var i = 0, ii = charCodes.length; i < ii; i++) {
+            var charCode = charCodes[i];
+            // Find a fontCharCode that maps to the base and accent glyphs.
+            // If one doesn't exists, create it.
+            var charCodeToGlyphId = newMapping.charCodeToGlyphId;
+            var baseFontCharCode = createCharCode(charCodeToGlyphId,
+                                                  baseGlyphId);
+            var accentFontCharCode = createCharCode(charCodeToGlyphId,
+                                                    accentGlyphId);
+            seacMap[charCode] = {
+              baseFontCharCode: baseFontCharCode,
+              accentFontCharCode: accentFontCharCode,
+              accentOffset: accentOffset
+            };
+          }
+        }
+        properties.seacMap = seacMap;
+      }
+
+      var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];
+
+      var builder = new OpenTypeFileBuilder('\x4F\x54\x54\x4F');
+      // PostScript Font Program
+      builder.addTable('CFF ', font.data);
+      // OS/2 and Windows Specific metrics
+      builder.addTable('OS/2', createOS2Table(properties,
+                                              newMapping.charCodeToGlyphId));
+      // Character to glyphs mapping
+      builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId));
+      // Font header
+      builder.addTable('head',
+            '\x00\x01\x00\x00' + // Version number
+            '\x00\x00\x10\x00' + // fontRevision
+            '\x00\x00\x00\x00' + // checksumAdjustement
+            '\x5F\x0F\x3C\xF5' + // magicNumber
+            '\x00\x00' + // Flags
+            safeString16(unitsPerEm) + // unitsPerEM
+            '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // creation date
+            '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // modifification date
+            '\x00\x00' + // xMin
+            safeString16(properties.descent) + // yMin
+            '\x0F\xFF' + // xMax
+            safeString16(properties.ascent) + // yMax
+            string16(properties.italicAngle ? 2 : 0) + // macStyle
+            '\x00\x11' + // lowestRecPPEM
+            '\x00\x00' + // fontDirectionHint
+            '\x00\x00' + // indexToLocFormat
+            '\x00\x00');  // glyphDataFormat
+
+      // Horizontal header
+      builder.addTable('hhea',
+            '\x00\x01\x00\x00' + // Version number
+            safeString16(properties.ascent) + // Typographic Ascent
+            safeString16(properties.descent) + // Typographic Descent
+            '\x00\x00' + // Line Gap
+            '\xFF\xFF' + // advanceWidthMax
+            '\x00\x00' + // minLeftSidebearing
+            '\x00\x00' + // minRightSidebearing
+            '\x00\x00' + // xMaxExtent
+            safeString16(properties.capHeight) + // caretSlopeRise
+            safeString16(Math.tan(properties.italicAngle) *
+                         properties.xHeight) + // caretSlopeRun
+            '\x00\x00' + // caretOffset
+            '\x00\x00' + // -reserved-
+            '\x00\x00' + // -reserved-
+            '\x00\x00' + // -reserved-
+            '\x00\x00' + // -reserved-
+            '\x00\x00' + // metricDataFormat
+            string16(numGlyphs)); // Number of HMetrics
+
+      // Horizontal metrics
+      builder.addTable('hmtx', (function fontFieldsHmtx() {
+          var charstrings = font.charstrings;
+          var cffWidths = font.cff ? font.cff.widths : null;
+          var hmtx = '\x00\x00\x00\x00'; // Fake .notdef
+          for (var i = 1, ii = numGlyphs; i < ii; i++) {
+            var width = 0;
+            if (charstrings) {
+              var charstring = charstrings[i - 1];
+              width = 'width' in charstring ? charstring.width : 0;
+            } else if (cffWidths) {
+              width = Math.ceil(cffWidths[i] || 0);
+            }
+            hmtx += string16(width) + string16(0);
+          }
+          return hmtx;
+        })());
+
+      // Maximum profile
+      builder.addTable('maxp',
+            '\x00\x00\x50\x00' + // Version number
+            string16(numGlyphs)); // Num of glyphs
+
+      // Naming tables
+      builder.addTable('name', createNameTable(fontName));
+
+      // PostScript informations
+      builder.addTable('post', createPostTable(properties));
+
+      return builder.toArray();
+    },
+
+    /**
+     * Builds a char code to unicode map based on section 9.10 of the spec.
+     * @param {Object} properties Font properties object.
+     * @return {Object} A ToUnicodeMap object.
+     */
+    buildToUnicode: function Font_buildToUnicode(properties) {
+      // Section 9.10.2 Mapping Character Codes to Unicode Values
+      if (properties.toUnicode && properties.toUnicode.length !== 0) {
+        return properties.toUnicode;
+      }
+      // According to the spec if the font is a simple font we should only map
+      // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or
+      // the differences array only contains adobe standard or symbol set names,
+      // in pratice it seems better to always try to create a toUnicode
+      // map based of the default encoding.
+      var toUnicode, charcode;
+      if (!properties.composite /* is simple font */) {
+        toUnicode = [];
+        var encoding = properties.defaultEncoding.slice();
+        var baseEncodingName = properties.baseEncodingName;
+        // Merge in the differences array.
+        var differences = properties.differences;
+        for (charcode in differences) {
+          encoding[charcode] = differences[charcode];
+        }
+        for (charcode in encoding) {
+          // a) Map the character code to a character name.
+          var glyphName = encoding[charcode];
+          // b) Look up the character name in the Adobe Glyph List (see the
+          //    Bibliography) to obtain the corresponding Unicode value.
+          if (glyphName === '') {
+            continue;
+          } else if (GlyphsUnicode[glyphName] === undefined) {
+            // (undocumented) c) Few heuristics to recognize unknown glyphs
+            // NOTE: Adobe Reader does not do this step, but OSX Preview does
+            var code = 0;
+            switch (glyphName[0]) {
+              case 'G': // Gxx glyph
+                if (glyphName.length === 3) {
+                  code = parseInt(glyphName.substr(1), 16);
+                }
+                break;
+              case 'g': // g00xx glyph
+                if (glyphName.length === 5) {
+                  code = parseInt(glyphName.substr(1), 16);
+                }
+                break;
+              case 'C': // Cddd glyph
+              case 'c': // cddd glyph
+                if (glyphName.length >= 3) {
+                  code = +glyphName.substr(1);
+                }
+                break;
+            }
+            if (code) {
+              // If |baseEncodingName| is one the predefined encodings,
+              // and |code| equals |charcode|, using the glyph defined in the
+              // baseEncoding seems to yield a better |toUnicode| mapping
+              // (fixes issue 5070).
+              if (baseEncodingName && code === +charcode) {
+                var baseEncoding = Encodings[baseEncodingName];
+                if (baseEncoding && (glyphName = baseEncoding[charcode])) {
+                  toUnicode[charcode] =
+                    String.fromCharCode(GlyphsUnicode[glyphName]);
+                  continue;
+                }
+              }
+              toUnicode[charcode] = String.fromCharCode(code);
+            }
+            continue;
+          }
+          toUnicode[charcode] = String.fromCharCode(GlyphsUnicode[glyphName]);
+        }
+        return new ToUnicodeMap(toUnicode);
+      }
+      // If the font is a composite font that uses one of the predefined CMaps
+      // listed in Table 118 (except Identity–H and Identity–V) or whose
+      // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or
+      // Adobe-Korea1 character collection:
+      if (properties.composite && (
+           (properties.cMap.builtInCMap &&
+            !(properties.cMap instanceof IdentityCMap)) ||
+           (properties.cidSystemInfo.registry === 'Adobe' &&
+             (properties.cidSystemInfo.ordering === 'GB1' ||
+              properties.cidSystemInfo.ordering === 'CNS1' ||
+              properties.cidSystemInfo.ordering === 'Japan1' ||
+              properties.cidSystemInfo.ordering === 'Korea1')))) {
+        // Then:
+        // a) Map the character code to a character identifier (CID) according
+        // to the font’s CMap.
+        // b) Obtain the registry and ordering of the character collection used
+        // by the font’s CMap (for example, Adobe and Japan1) from its
+        // CIDSystemInfo dictionary.
+        var registry = properties.cidSystemInfo.registry;
+        var ordering = properties.cidSystemInfo.ordering;
+        // c) Construct a second CMap name by concatenating the registry and
+        // ordering obtained in step (b) in the format registry–ordering–UCS2
+        // (for example, Adobe–Japan1–UCS2).
+        var ucs2CMapName = new Name(registry + '-' + ordering + '-UCS2');
+        // d) Obtain the CMap with the name constructed in step (c) (available
+        // from the ASN Web site; see the Bibliography).
+        var ucs2CMap = CMapFactory.create(ucs2CMapName,
+          { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null);
+        var cMap = properties.cMap;
+        toUnicode = [];
+        cMap.forEach(function(charcode, cid) {
+          assert(cid <= 0xffff, 'Max size of CID is 65,535');
+          // e) Map the CID obtained in step (a) according to the CMap obtained
+          // in step (d), producing a Unicode value.
+          var ucs2 = ucs2CMap.lookup(cid);
+          if (ucs2) {
+            toUnicode[charcode] =
+              String.fromCharCode((ucs2.charCodeAt(0) << 8) +
+                                  ucs2.charCodeAt(1));
+          }
+        });
+        return new ToUnicodeMap(toUnicode);
+      }
+
+      // The viewer's choice, just use an identity map.
+      return new IdentityToUnicodeMap(properties.firstChar,
+                                      properties.lastChar);
+    },
+
+    get spaceWidth() {
+      if ('_shadowWidth' in this) {
+        return this._shadowWidth;
+      }
+
+      // trying to estimate space character width
+      var possibleSpaceReplacements = ['space', 'minus', 'one', 'i'];
+      var width;
+      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {
+        var glyphName = possibleSpaceReplacements[i];
+        // if possible, getting width by glyph name
+        if (glyphName in this.widths) {
+          width = this.widths[glyphName];
+          break;
+        }
+        var glyphUnicode = GlyphsUnicode[glyphName];
+        // finding the charcode via unicodeToCID map
+        var charcode = 0;
+        if (this.composite) {
+          if (this.cMap.contains(glyphUnicode)) {
+            charcode = this.cMap.lookup(glyphUnicode);
+          }
+        }
+        // ... via toUnicode map
+        if (!charcode && 'toUnicode' in this) {
+          charcode = this.toUnicode.charCodeOf(glyphUnicode);
+        }
+        // setting it to unicode if negative or undefined
+        if (charcode <= 0) {
+          charcode = glyphUnicode;
+        }
+        // trying to get width via charcode
+        width = this.widths[charcode];
+        if (width) {
+          break; // the non-zero width found
+        }
+      }
+      width = width || this.defaultWidth;
+      // Do not shadow the property here. See discussion:
+      // https://github.com/mozilla/pdf.js/pull/2127#discussion_r1662280
+      this._shadowWidth = width;
+      return width;
+    },
+
+    charToGlyph: function Font_charToGlyph(charcode) {
+      var fontCharCode, width, operatorListId;
+
+      var widthCode = charcode;
+      if (this.cMap && this.cMap.contains(charcode)) {
+        widthCode = this.cMap.lookup(charcode);
+      }
+      width = this.widths[widthCode];
+      width = isNum(width) ? width : this.defaultWidth;
+      var vmetric = this.vmetrics && this.vmetrics[widthCode];
+
+      var unicode = this.toUnicode.get(charcode) || charcode;
+      if (typeof unicode === 'number') {
+        unicode = String.fromCharCode(unicode);
+      }
+
+      // First try the toFontChar map, if it's not there then try falling
+      // back to the char code.
+      fontCharCode = this.toFontChar[charcode] || charcode;
+      if (this.missingFile) {
+        fontCharCode = mapSpecialUnicodeValues(fontCharCode);
+      }
+
+      if (this.isType3Font) {
+        // Font char code in this case is actually a glyph name.
+        operatorListId = fontCharCode;
+      }
+
+      var accent = null;
+      if (this.seacMap && this.seacMap[charcode]) {
+        var seac = this.seacMap[charcode];
+        fontCharCode = seac.baseFontCharCode;
+        accent = {
+          fontChar: String.fromCharCode(seac.accentFontCharCode),
+          offset: seac.accentOffset
+        };
+      }
+
+      var fontChar = String.fromCharCode(fontCharCode);
+
+      var glyph = this.glyphCache[charcode];
+      if (!glyph ||
+          !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric,
+                                 operatorListId)) {
+        glyph = new Glyph(fontChar, unicode, accent, width, vmetric,
+                          operatorListId);
+        this.glyphCache[charcode] = glyph;
+      }
+      return glyph;
+    },
+
+    charsToGlyphs: function Font_charsToGlyphs(chars) {
+      var charsCache = this.charsCache;
+      var glyphs, glyph, charcode;
+
+      // if we translated this string before, just grab it from the cache
+      if (charsCache) {
+        glyphs = charsCache[chars];
+        if (glyphs) {
+          return glyphs;
+        }
+      }
+
+      // lazily create the translation cache
+      if (!charsCache) {
+        charsCache = this.charsCache = Object.create(null);
+      }
+
+      glyphs = [];
+      var charsCacheKey = chars;
+      var i = 0, ii;
+
+      if (this.cMap) {
+        // composite fonts have multi-byte strings convert the string from
+        // single-byte to multi-byte
+        var c = {};
+        while (i < chars.length) {
+          this.cMap.readCharCode(chars, i, c);
+          charcode = c.charcode;
+          var length = c.length;
+          i += length;
+          glyph = this.charToGlyph(charcode);
+          glyphs.push(glyph);
+          // placing null after each word break charcode (ASCII SPACE)
+          // Ignore occurences of 0x20 in multiple-byte codes.
+          if (length === 1 && chars.charCodeAt(i - 1) === 0x20) {
+            glyphs.push(null);
+          }
+        }
+      } else {
+        for (i = 0, ii = chars.length; i < ii; ++i) {
+          charcode = chars.charCodeAt(i);
+          glyph = this.charToGlyph(charcode);
+          glyphs.push(glyph);
+          if (charcode === 0x20) {
+            glyphs.push(null);
+          }
+        }
+      }
+
+      // Enter the translated string into the cache
+      return (charsCache[charsCacheKey] = glyphs);
+    }
+  };
+
+  return Font;
+})();
+
+var ErrorFont = (function ErrorFontClosure() {
+  function ErrorFont(error) {
+    this.error = error;
+    this.loadedName = 'g_font_error';
+    this.loading = false;
+  }
+
+  ErrorFont.prototype = {
+    charsToGlyphs: function ErrorFont_charsToGlyphs() {
+      return [];
+    },
+    exportData: function ErrorFont_exportData() {
+      return {error: this.error};
+    }
+  };
+
+  return ErrorFont;
+})();
+
+/**
+ * Shared logic for building a char code to glyph id mapping for Type1 and
+ * simple CFF fonts. See section 9.6.6.2 of the spec.
+ * @param {Object} properties Font properties object.
+ * @param {Object} builtInEncoding The encoding contained within the actual font
+ * data.
+ * @param {Array} Array of glyph names where the index is the glyph ID.
+ * @returns {Object} A char code to glyph ID map.
+ */
+function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {
+  var charCodeToGlyphId = Object.create(null);
+  var glyphId, charCode, baseEncoding;
+
+  if (properties.baseEncodingName) {
+    // If a valid base encoding name was used, the mapping is initialized with
+    // that.
+    baseEncoding = Encodings[properties.baseEncodingName];
+    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
+      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
+      if (glyphId >= 0) {
+        charCodeToGlyphId[charCode] = glyphId;
+      } else {
+        charCodeToGlyphId[charCode] = 0; // notdef
+      }
+    }
+  } else if (!!(properties.flags & FontFlags.Symbolic)) {
+    // For a symbolic font the encoding should be the fonts built-in
+    // encoding.
+    for (charCode in builtInEncoding) {
+      charCodeToGlyphId[charCode] = builtInEncoding[charCode];
+    }
+  } else {
+    // For non-symbolic fonts that don't have a base encoding the standard
+    // encoding should be used.
+    baseEncoding = Encodings.StandardEncoding;
+    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
+      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
+      if (glyphId >= 0) {
+        charCodeToGlyphId[charCode] = glyphId;
+      } else {
+        charCodeToGlyphId[charCode] = 0; // notdef
+      }
+    }
+  }
+
+  // Lastly, merge in the differences.
+  var differences = properties.differences;
+  if (differences) {
+    for (charCode in differences) {
+      var glyphName = differences[charCode];
+      glyphId = glyphNames.indexOf(glyphName);
+      if (glyphId >= 0) {
+        charCodeToGlyphId[charCode] = glyphId;
+      } else {
+        charCodeToGlyphId[charCode] = 0; // notdef
+      }
+    }
+  }
+  return charCodeToGlyphId;
+}
+
+/*
+ * CharStrings are encoded following the the CharString Encoding sequence
+ * describe in Chapter 6 of the "Adobe Type1 Font Format" specification.
+ * The value in a byte indicates a command, a number, or subsequent bytes
+ * that are to be interpreted in a special way.
+ *
+ * CharString Number Encoding:
+ *  A CharString byte containing the values from 32 through 255 inclusive
+ *  indicate an integer. These values are decoded in four ranges.
+ *
+ * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,
+ * indicate the integer v - 139. Thus, the integer values from -107 through
+ * 107 inclusive may be encoded in single byte.
+ *
+ * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,
+ * indicates an integer involving the next byte, w, according to the formula:
+ * [(v - 247) x 256] + w + 108
+ *
+ * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,
+ * indicates an integer involving the next byte, w, according to the formula:
+ * -[(v - 251) * 256] - w - 108
+ *
+ * 4. A CharString containing the value 255 indicates that the next 4 bytes
+ * are a two complement signed integer. The first of these bytes contains the
+ * highest order bits, the second byte contains the next higher order bits
+ * and the fourth byte contain the lowest order bits.
+ *
+ *
+ * CharString Command Encoding:
+ *  CharStrings commands are encoded in 1 or 2 bytes.
+ *
+ *  Single byte commands are encoded in 1 byte that contains a value between
+ *  0 and 31 inclusive.
+ *  If a command byte contains the value 12, then the value in the next byte
+ *  indicates a command. This "escape" mechanism allows many extra commands
+ * to be encoded and this encoding technique helps to minimize the length of
+ * the charStrings.
+ */
+var Type1CharString = (function Type1CharStringClosure() {
+  var COMMAND_MAP = {
+    'hstem': [1],
+    'vstem': [3],
+    'vmoveto': [4],
+    'rlineto': [5],
+    'hlineto': [6],
+    'vlineto': [7],
+    'rrcurveto': [8],
+    'callsubr': [10],
+    'flex': [12, 35],
+    'drop' : [12, 18],
+    'endchar': [14],
+    'rmoveto': [21],
+    'hmoveto': [22],
+    'vhcurveto': [30],
+    'hvcurveto': [31]
+  };
+
+  function Type1CharString() {
+    this.width = 0;
+    this.lsb = 0;
+    this.flexing = false;
+    this.output = [];
+    this.stack = [];
+  }
+
+  Type1CharString.prototype = {
+    convert: function Type1CharString_convert(encoded, subrs) {
+      var count = encoded.length;
+      var error = false;
+      var wx, sbx, subrNumber;
+      for (var i = 0; i < count; i++) {
+        var value = encoded[i];
+        if (value < 32) {
+          if (value === 12) {
+            value = (value << 8) + encoded[++i];
+          }
+          switch (value) {
+            case 1: // hstem
+              if (!HINTING_ENABLED) {
+                this.stack = [];
+                break;
+              }
+              error = this.executeCommand(2, COMMAND_MAP.hstem);
+              break;
+            case 3: // vstem
+              if (!HINTING_ENABLED) {
+                this.stack = [];
+                break;
+              }
+              error = this.executeCommand(2, COMMAND_MAP.vstem);
+              break;
+            case 4: // vmoveto
+              if (this.flexing) {
+                if (this.stack.length < 1) {
+                  error = true;
+                  break;
+                }
+                // Add the dx for flex and but also swap the values so they are
+                // the right order.
+                var dy = this.stack.pop();
+                this.stack.push(0, dy);
+                break;
+              }
+              error = this.executeCommand(1, COMMAND_MAP.vmoveto);
+              break;
+            case 5: // rlineto
+              error = this.executeCommand(2, COMMAND_MAP.rlineto);
+              break;
+            case 6: // hlineto
+              error = this.executeCommand(1, COMMAND_MAP.hlineto);
+              break;
+            case 7: // vlineto
+              error = this.executeCommand(1, COMMAND_MAP.vlineto);
+              break;
+            case 8: // rrcurveto
+              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);
+              break;
+            case 9: // closepath
+              // closepath is a Type1 command that does not take argument and is
+              // useless in Type2 and it can simply be ignored.
+              this.stack = [];
+              break;
+            case 10: // callsubr
+              if (this.stack.length < 1) {
+                error = true;
+                break;
+              }
+              subrNumber = this.stack.pop();
+              error = this.convert(subrs[subrNumber], subrs);
+              break;
+            case 11: // return
+              return error;
+            case 13: // hsbw
+              if (this.stack.length < 2) {
+                error = true;
+                break;
+              }
+              // To convert to type2 we have to move the width value to the
+              // first part of the charstring and then use hmoveto with lsb.
+              wx = this.stack.pop();
+              sbx = this.stack.pop();
+              this.lsb = sbx;
+              this.width = wx;
+              this.stack.push(wx, sbx);
+              error = this.executeCommand(2, COMMAND_MAP.hmoveto);
+              break;
+            case 14: // endchar
+              this.output.push(COMMAND_MAP.endchar[0]);
+              break;
+            case 21: // rmoveto
+              if (this.flexing) {
+                break;
+              }
+              error = this.executeCommand(2, COMMAND_MAP.rmoveto);
+              break;
+            case 22: // hmoveto
+              if (this.flexing) {
+                // Add the dy for flex.
+                this.stack.push(0);
+                break;
+              }
+              error = this.executeCommand(1, COMMAND_MAP.hmoveto);
+              break;
+            case 30: // vhcurveto
+              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);
+              break;
+            case 31: // hvcurveto
+              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);
+              break;
+            case (12 << 8) + 0: // dotsection
+              // dotsection is a Type1 command to specify some hinting feature
+              // for dots that do not take a parameter and it can safely be
+              // ignored for Type2.
+              this.stack = [];
+              break;
+            case (12 << 8) + 1: // vstem3
+              if (!HINTING_ENABLED) {
+                this.stack = [];
+                break;
+              }
+              // [vh]stem3 are Type1 only and Type2 supports [vh]stem with
+              // multiple parameters, so instead of returning [vh]stem3 take a
+              // shortcut and return [vhstem] instead.
+              error = this.executeCommand(2, COMMAND_MAP.vstem);
+              break;
+            case (12 << 8) + 2: // hstem3
+              if (!HINTING_ENABLED) {
+                 this.stack = [];
+                break;
+              }
+              // See vstem3.
+              error = this.executeCommand(2, COMMAND_MAP.hstem);
+              break;
+            case (12 << 8) + 6: // seac
+              // seac is like type 2's special endchar but it doesn't use the
+              // first argument asb, so remove it.
+              if (SEAC_ANALYSIS_ENABLED) {
+                this.seac = this.stack.splice(-4, 4);
+                error = this.executeCommand(0, COMMAND_MAP.endchar);
+              } else {
+                error = this.executeCommand(4, COMMAND_MAP.endchar);
+              }
+              break;
+            case (12 << 8) + 7: // sbw
+              if (this.stack.length < 4) {
+                error = true;
+                break;
+              }
+              // To convert to type2 we have to move the width value to the
+              // first part of the charstring and then use rmoveto with
+              // (dx, dy). The height argument will not be used for vmtx and
+              // vhea tables reconstruction -- ignoring it.
+              var wy = this.stack.pop();
+              wx = this.stack.pop();
+              var sby = this.stack.pop();
+              sbx = this.stack.pop();
+              this.lsb = sbx;
+              this.width = wx;
+              this.stack.push(wx, sbx, sby);
+              error = this.executeCommand(3, COMMAND_MAP.rmoveto);
+              break;
+            case (12 << 8) + 12: // div
+              if (this.stack.length < 2) {
+                error = true;
+                break;
+              }
+              var num2 = this.stack.pop();
+              var num1 = this.stack.pop();
+              this.stack.push(num1 / num2);
+              break;
+            case (12 << 8) + 16: // callothersubr
+              if (this.stack.length < 2) {
+                error = true;
+                break;
+              }
+              subrNumber = this.stack.pop();
+              var numArgs = this.stack.pop();
+              if (subrNumber === 0 && numArgs === 3) {
+                var flexArgs = this.stack.splice(this.stack.length - 17, 17);
+                this.stack.push(
+                  flexArgs[2] + flexArgs[0], // bcp1x + rpx
+                  flexArgs[3] + flexArgs[1], // bcp1y + rpy
+                  flexArgs[4], // bcp2x
+                  flexArgs[5], // bcp2y
+                  flexArgs[6], // p2x
+                  flexArgs[7], // p2y
+                  flexArgs[8], // bcp3x
+                  flexArgs[9], // bcp3y
+                  flexArgs[10], // bcp4x
+                  flexArgs[11], // bcp4y
+                  flexArgs[12], // p3x
+                  flexArgs[13], // p3y
+                  flexArgs[14] // flexDepth
+                  // 15 = finalx unused by flex
+                  // 16 = finaly unused by flex
+                );
+                error = this.executeCommand(13, COMMAND_MAP.flex, true);
+                this.flexing = false;
+                this.stack.push(flexArgs[15], flexArgs[16]);
+              } else if (subrNumber === 1 && numArgs === 0) {
+                this.flexing = true;
+              }
+              break;
+            case (12 << 8) + 17: // pop
+              // Ignore this since it is only used with othersubr.
+              break;
+            case (12 << 8) + 33: // setcurrentpoint
+              // Ignore for now.
+              this.stack = [];
+              break;
+            default:
+              warn('Unknown type 1 charstring command of "' + value + '"');
+              break;
+          }
+          if (error) {
+            break;
+          }
+          continue;
+        } else if (value <= 246) {
+          value = value - 139;
+        } else if (value <= 250) {
+          value = ((value - 247) * 256) + encoded[++i] + 108;
+        } else if (value <= 254) {
+          value = -((value - 251) * 256) - encoded[++i] - 108;
+        } else {
+          value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 |
+                  (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;
+        }
+        this.stack.push(value);
+      }
+      return error;
+    },
+
+    executeCommand: function(howManyArgs, command, keepStack) {
+      var stackLength = this.stack.length;
+      if (howManyArgs > stackLength) {
+        return true;
+      }
+      var start = stackLength - howManyArgs;
+      for (var i = start; i < stackLength; i++) {
+        var value = this.stack[i];
+        if (value === (value | 0)) { // int
+          this.output.push(28, (value >> 8) & 0xff, value & 0xff);
+        } else { // fixed point
+          value = (65536 * value) | 0;
+          this.output.push(255,
+                           (value >> 24) & 0xFF,
+                           (value >> 16) & 0xFF,
+                           (value >> 8) & 0xFF,
+                           value & 0xFF);
+        }
+      }
+      this.output.push.apply(this.output, command);
+      if (keepStack) {
+        this.stack.splice(start, howManyArgs);
+      } else {
+        this.stack.length = 0;
+      }
+      return false;
+    }
+  };
+
+  return Type1CharString;
+})();
+
+/*
+ * Type1Parser encapsulate the needed code for parsing a Type1 font
+ * program. Some of its logic depends on the Type2 charstrings
+ * structure.
+ * Note: this doesn't really parse the font since that would require evaluation
+ * of PostScript, but it is possible in most cases to extract what we need
+ * without a full parse.
+ */
+var Type1Parser = (function Type1ParserClosure() {
+  /*
+   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence
+   * of Plaintext Bytes. The function took a key as a parameter which can be
+   * for decrypting the eexec block of for decoding charStrings.
+   */
+  var EEXEC_ENCRYPT_KEY = 55665;
+  var CHAR_STRS_ENCRYPT_KEY = 4330;
+
+  function isHexDigit(code) {
+    return code >= 48 && code <= 57 || // '0'-'9'
+           code >= 65 && code <= 70 || // 'A'-'F'
+           code >= 97 && code <= 102;  // 'a'-'f'
+  }
+
+  function decrypt(data, key, discardNumber) {
+    var r = key | 0, c1 = 52845, c2 = 22719;
+    var count = data.length;
+    var decrypted = new Uint8Array(count);
+    for (var i = 0; i < count; i++) {
+      var value = data[i];
+      decrypted[i] = value ^ (r >> 8);
+      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);
+    }
+    return Array.prototype.slice.call(decrypted, discardNumber);
+  }
+
+  function decryptAscii(data, key, discardNumber) {
+    var r = key | 0, c1 = 52845, c2 = 22719;
+    var count = data.length, maybeLength = count >>> 1;
+    var decrypted = new Uint8Array(maybeLength);
+    var i, j;
+    for (i = 0, j = 0; i < count; i++) {
+      var digit1 = data[i];
+      if (!isHexDigit(digit1)) {
+        continue;
+      }
+      i++;
+      var digit2;
+      while (i < count && !isHexDigit(digit2 = data[i])) {
+        i++;
+      }
+      if (i < count) {
+        var value = parseInt(String.fromCharCode(digit1, digit2), 16);
+        decrypted[j++] = value ^ (r >> 8);
+        r = ((value + r) * c1 + c2) & ((1 << 16) - 1);
+      }
+    }
+    return Array.prototype.slice.call(decrypted, discardNumber, j);
+  }
+
+  function isSpecial(c) {
+    return c === 0x2F || // '/'
+           c === 0x5B || c === 0x5D || // '[', ']'
+           c === 0x7B || c === 0x7D || // '{', '}'
+           c === 0x28 || c === 0x29; // '(', ')'
+  }
+
+  function Type1Parser(stream, encrypted) {
+    if (encrypted) {
+      var data = stream.getBytes();
+      var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) &&
+                       isHexDigit(data[2]) && isHexDigit(data[3]));
+      stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) :
+                          decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));
+    }
+    this.stream = stream;
+    this.nextChar();
+  }
+
+  Type1Parser.prototype = {
+    readNumberArray: function Type1Parser_readNumberArray() {
+      this.getToken(); // read '[' or '{' (arrays can start with either)
+      var array = [];
+      while (true) {
+        var token = this.getToken();
+        if (token === null || token === ']' || token === '}') {
+          break;
+        }
+        array.push(parseFloat(token || 0));
+      }
+      return array;
+    },
+
+    readNumber: function Type1Parser_readNumber() {
+      var token = this.getToken();
+      return parseFloat(token || 0);
+    },
+
+    readInt: function Type1Parser_readInt() {
+      // Use '| 0' to prevent setting a double into length such as the double
+      // does not flow into the loop variable.
+      var token = this.getToken();
+      return parseInt(token || 0, 10) | 0;
+    },
+
+    readBoolean: function Type1Parser_readBoolean() {
+      var token = this.getToken();
+
+      // Use 1 and 0 since that's what type2 charstrings use.
+      return token === 'true' ? 1 : 0;
+    },
+
+    nextChar : function Type1_nextChar() {
+      return (this.currentChar = this.stream.getByte());
+    },
+
+    getToken: function Type1Parser_getToken() {
+      // Eat whitespace and comments.
+      var comment = false;
+      var ch = this.currentChar;
+      while (true) {
+        if (ch === -1) {
+          return null;
+        }
+
+        if (comment) {
+          if (ch === 0x0A || ch === 0x0D) {
+            comment = false;
+          }
+        } else if (ch === 0x25) { // '%'
+          comment = true;
+        } else if (!Lexer.isSpace(ch)) {
+          break;
+        }
+        ch = this.nextChar();
+      }
+      if (isSpecial(ch)) {
+        this.nextChar();
+        return String.fromCharCode(ch);
+      }
+      var token = '';
+      do {
+        token += String.fromCharCode(ch);
+        ch = this.nextChar();
+      } while (ch >= 0 && !Lexer.isSpace(ch) && !isSpecial(ch));
+      return token;
+    },
+
+    /*
+     * Returns an object containing a Subrs array and a CharStrings
+     * array extracted from and eexec encrypted block of data
+     */
+    extractFontProgram: function Type1Parser_extractFontProgram() {
+      var stream = this.stream;
+
+      var subrs = [], charstrings = [];
+      var program = {
+        subrs: [],
+        charstrings: [],
+        properties: {
+          'privateData': {
+            'lenIV': 4
+          }
+        }
+      };
+      var token, length, data, lenIV, encoded;
+      while ((token = this.getToken()) !== null) {
+        if (token !== '/') {
+          continue;
+        }
+        token = this.getToken();
+        switch (token) {
+          case 'CharStrings':
+            // The number immediately following CharStrings must be greater or
+            // equal to the number of CharStrings.
+            this.getToken();
+            this.getToken(); // read in 'dict'
+            this.getToken(); // read in 'dup'
+            this.getToken(); // read in 'begin'
+            while(true) {
+              token = this.getToken();
+              if (token === null || token === 'end') {
+                break;
+              }
+
+              if (token !== '/') {
+                continue;
+              }
+              var glyph = this.getToken();
+              length = this.readInt();
+              this.getToken(); // read in 'RD' or '-|'
+              data = stream.makeSubStream(stream.pos, length);
+              lenIV = program.properties.privateData['lenIV'];
+              encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV);
+              // Skip past the required space and binary data.
+              stream.skip(length);
+              this.nextChar();
+              token = this.getToken(); // read in 'ND' or '|-'
+              if (token === 'noaccess') {
+                this.getToken(); // read in 'def'
+              }
+              charstrings.push({
+                glyph: glyph,
+                encoded: encoded
+              });
+            }
+            break;
+          case 'Subrs':
+            var num = this.readInt();
+            this.getToken(); // read in 'array'
+            while ((token = this.getToken()) === 'dup') {
+              var index = this.readInt();
+              length = this.readInt();
+              this.getToken(); // read in 'RD' or '-|'
+              data = stream.makeSubStream(stream.pos, length);
+              lenIV = program.properties.privateData['lenIV'];
+              encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV);
+              // Skip past the required space and binary data.
+              stream.skip(length);
+              this.nextChar();
+              token = this.getToken(); // read in 'NP' or '|'
+              if (token === 'noaccess') {
+                this.getToken(); // read in 'put'
+              }
+              subrs[index] = encoded;
+            }
+            break;
+          case 'BlueValues':
+          case 'OtherBlues':
+          case 'FamilyBlues':
+          case 'FamilyOtherBlues':
+            var blueArray = this.readNumberArray();
+            // *Blue* values may contain invalid data: disables reading of
+            // those values when hinting is disabled.
+            if (blueArray.length > 0 && (blueArray.length % 2) === 0 &&
+                HINTING_ENABLED) {
+              program.properties.privateData[token] = blueArray;
+            }
+            break;
+          case 'StemSnapH':
+          case 'StemSnapV':
+            program.properties.privateData[token] = this.readNumberArray();
+            break;
+          case 'StdHW':
+          case 'StdVW':
+            program.properties.privateData[token] =
+              this.readNumberArray()[0];
+            break;
+          case 'BlueShift':
+          case 'lenIV':
+          case 'BlueFuzz':
+          case 'BlueScale':
+          case 'LanguageGroup':
+          case 'ExpansionFactor':
+            program.properties.privateData[token] = this.readNumber();
+            break;
+          case 'ForceBold':
+            program.properties.privateData[token] = this.readBoolean();
+            break;
+        }
+      }
+
+      for (var i = 0; i < charstrings.length; i++) {
+        glyph = charstrings[i].glyph;
+        encoded = charstrings[i].encoded;
+        var charString = new Type1CharString();
+        var error = charString.convert(encoded, subrs);
+        var output = charString.output;
+        if (error) {
+          // It seems when FreeType encounters an error while evaluating a glyph
+          // that it completely ignores the glyph so we'll mimic that behaviour
+          // here and put an endchar to make the validator happy.
+          output = [14];
+        }
+        program.charstrings.push({
+          glyphName: glyph,
+          charstring: output,
+          width: charString.width,
+          lsb: charString.lsb,
+          seac: charString.seac
+        });
+      }
+
+      return program;
+    },
+
+    extractFontHeader: function Type1Parser_extractFontHeader(properties) {
+      var token;
+      while ((token = this.getToken()) !== null) {
+        if (token !== '/') {
+          continue;
+        }
+        token = this.getToken();
+        switch (token) {
+          case 'FontMatrix':
+            var matrix = this.readNumberArray();
+            properties.fontMatrix = matrix;
+            break;
+          case 'Encoding':
+            var encodingArg = this.getToken();
+            var encoding;
+            if (!/^\d+$/.test(encodingArg)) {
+              // encoding name is specified
+              encoding = Encodings[encodingArg];
+            } else {
+              encoding = [];
+              var size = parseInt(encodingArg, 10) | 0;
+              this.getToken(); // read in 'array'
+
+              for (var j = 0; j < size; j++) {
+                token = this.getToken();
+                // skipping till first dup or def (e.g. ignoring for statement)
+                while (token !== 'dup' && token !== 'def') {
+                  token = this.getToken();
+                  if (token === null) {
+                    return; // invalid header
+                  }
+                }
+                if (token === 'def') {
+                  break; // read all array data
+                }
+                var index = this.readInt();
+                this.getToken(); // read in '/'
+                var glyph = this.getToken();
+                encoding[index] = glyph;
+                this.getToken(); // read the in 'put'
+              }
+            }
+            properties.builtInEncoding = encoding;
+            break;
+          case 'FontBBox':
+            var fontBBox = this.readNumberArray();
+            // adjusting ascent/descent
+            properties.ascent = fontBBox[3];
+            properties.descent = fontBBox[1];
+            properties.ascentScaled = true;
+            break;
+        }
+      }
+    }
+  };
+
+  return Type1Parser;
+})();
+
+/**
+ * The CFF class takes a Type1 file and wrap it into a
+ * 'Compact Font Format' which itself embed Type2 charstrings.
+ */
+var CFFStandardStrings = [
+  '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
+  'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',
+  'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',
+  'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',
+  'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
+  'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+  'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum',
+  'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
+  'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
+  'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',
+  'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
+  'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
+  'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',
+  'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase',
+  'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown',
+  'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent',
+  'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash',
+  'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae',
+  'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior',
+  'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn',
+  'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters',
+  'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior',
+  'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring',
+  'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave',
+  'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute',
+  'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute',
+  'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron',
+  'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde',
+  'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute',
+  'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex',
+  'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex',
+  'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall',
+  'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall',
+  'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',
+  'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle',
+  'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle',
+  'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior',
+  'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior',
+  'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior',
+  'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
+  'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior',
+  'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall',
+  'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',
+  'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',
+  'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',
+  'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',
+  'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',
+  'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall',
+  'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior',
+  'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth',
+  'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds',
+  'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',
+  'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior',
+  'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior',
+  'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior',
+  'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior',
+  'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall',
+  'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall',
+  'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall',
+  'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall',
+  'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall',
+  'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall',
+  'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall',
+  'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003',
+  'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'
+];
+
+// Type1Font is also a CIDFontType0.
+var Type1Font = function Type1Font(name, file, properties) {
+  // Some bad generators embed pfb file as is, we have to strip 6-byte headers.
+  // Also, length1 and length2 might be off by 6 bytes as well.
+  // http://www.math.ubc.ca/~cass/piscript/type1.pdf
+  var PFB_HEADER_SIZE = 6;
+  var headerBlockLength = properties.length1;
+  var eexecBlockLength = properties.length2;
+  var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);
+  var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;
+  if (pfbHeaderPresent) {
+    file.skip(PFB_HEADER_SIZE);
+    headerBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) |
+                        (pfbHeader[3] << 8) | pfbHeader[2];
+  }
+
+  // Get the data block containing glyphs and subrs informations
+  var headerBlock = new Stream(file.getBytes(headerBlockLength));
+  var headerBlockParser = new Type1Parser(headerBlock);
+  headerBlockParser.extractFontHeader(properties);
+
+  if (pfbHeaderPresent) {
+    pfbHeader = file.getBytes(PFB_HEADER_SIZE);
+    eexecBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) |
+                       (pfbHeader[3] << 8) | pfbHeader[2];
+  }
+
+  // Decrypt the data blocks and retrieve it's content
+  var eexecBlock = new Stream(file.getBytes(eexecBlockLength));
+  var eexecBlockParser = new Type1Parser(eexecBlock, true);
+  var data = eexecBlockParser.extractFontProgram();
+  for (var info in data.properties) {
+    properties[info] = data.properties[info];
+  }
+
+  var charstrings = data.charstrings;
+  var type2Charstrings = this.getType2Charstrings(charstrings);
+  var subrs = this.getType2Subrs(data.subrs);
+
+  this.charstrings = charstrings;
+  this.data = this.wrap(name, type2Charstrings, this.charstrings,
+                        subrs, properties);
+  this.seacs = this.getSeacs(data.charstrings);
+};
+
+Type1Font.prototype = {
+  get numGlyphs() {
+    return this.charstrings.length + 1;
+  },
+
+  getCharset: function Type1Font_getCharset() {
+    var charset = ['.notdef'];
+    var charstrings = this.charstrings;
+    for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {
+      charset.push(charstrings[glyphId].glyphName);
+    }
+    return charset;
+  },
+
+  getGlyphMapping: function Type1Font_getGlyphMapping(properties) {
+    var charstrings = this.charstrings;
+    var glyphNames = ['.notdef'], glyphId;
+    for (glyphId = 0; glyphId < charstrings.length; glyphId++) {
+      glyphNames.push(charstrings[glyphId].glyphName);
+    }
+    var encoding = properties.builtInEncoding;
+    if (encoding) {
+      var builtInEncoding = {};
+      for (var charCode in encoding) {
+        glyphId = glyphNames.indexOf(encoding[charCode]);
+        if (glyphId >= 0) {
+          builtInEncoding[charCode] = glyphId;
+        }
+      }
+    }
+
+    return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);
+  },
+
+  getSeacs: function Type1Font_getSeacs(charstrings) {
+    var i, ii;
+    var seacMap = [];
+    for (i = 0, ii = charstrings.length; i < ii; i++) {
+      var charstring = charstrings[i];
+      if (charstring.seac) {
+        // Offset by 1 for .notdef
+        seacMap[i + 1] = charstring.seac;
+      }
+    }
+    return seacMap;
+  },
+
+  getType2Charstrings: function Type1Font_getType2Charstrings(
+                                  type1Charstrings) {
+    var type2Charstrings = [];
+    for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {
+      type2Charstrings.push(type1Charstrings[i].charstring);
+    }
+    return type2Charstrings;
+  },
+
+  getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {
+    var bias = 0;
+    var count = type1Subrs.length;
+    if (count < 1133) {
+      bias = 107;
+    } else if (count < 33769) {
+      bias = 1131;
+    } else {
+      bias = 32768;
+    }
+
+    // Add a bunch of empty subrs to deal with the Type2 bias
+    var type2Subrs = [];
+    var i;
+    for (i = 0; i < bias; i++) {
+      type2Subrs.push([0x0B]);
+    }
+
+    for (i = 0; i < count; i++) {
+      type2Subrs.push(type1Subrs[i]);
+    }
+
+    return type2Subrs;
+  },
+
+  wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) {
+    var cff = new CFF();
+    cff.header = new CFFHeader(1, 0, 4, 4);
+
+    cff.names = [name];
+
+    var topDict = new CFFTopDict();
+    // CFF strings IDs 0...390 are predefined names, so refering
+    // to entries in our own String INDEX starts at SID 391.
+    topDict.setByName('version', 391);
+    topDict.setByName('Notice', 392);
+    topDict.setByName('FullName', 393);
+    topDict.setByName('FamilyName', 394);
+    topDict.setByName('Weight', 395);
+    topDict.setByName('Encoding', null); // placeholder
+    topDict.setByName('FontMatrix', properties.fontMatrix);
+    topDict.setByName('FontBBox', properties.bbox);
+    topDict.setByName('charset', null); // placeholder
+    topDict.setByName('CharStrings', null); // placeholder
+    topDict.setByName('Private', null); // placeholder
+    cff.topDict = topDict;
+
+    var strings = new CFFStrings();
+    strings.add('Version 0.11'); // Version
+    strings.add('See original notice'); // Notice
+    strings.add(name); // FullName
+    strings.add(name); // FamilyName
+    strings.add('Medium'); // Weight
+    cff.strings = strings;
+
+    cff.globalSubrIndex = new CFFIndex();
+
+    var count = glyphs.length;
+    var charsetArray = [0];
+    var i, ii;
+    for (i = 0; i < count; i++) {
+      var index = CFFStandardStrings.indexOf(charstrings[i].glyphName);
+      // TODO: Insert the string and correctly map it.  Previously it was
+      // thought mapping names that aren't in the standard strings to .notdef
+      // was fine, however in issue818 when mapping them all to .notdef the
+      // adieresis glyph no longer worked.
+      if (index === -1) {
+        index = 0;
+      }
+      charsetArray.push((index >> 8) & 0xff, index & 0xff);
+    }
+    cff.charset = new CFFCharset(false, 0, [], charsetArray);
+
+    var charStringsIndex = new CFFIndex();
+    charStringsIndex.add([0x8B, 0x0E]); // .notdef
+    for (i = 0; i < count; i++) {
+      charStringsIndex.add(glyphs[i]);
+    }
+    cff.charStrings = charStringsIndex;
+
+    var privateDict = new CFFPrivateDict();
+    privateDict.setByName('Subrs', null); // placeholder
+    var fields = [
+      'BlueValues',
+      'OtherBlues',
+      'FamilyBlues',
+      'FamilyOtherBlues',
+      'StemSnapH',
+      'StemSnapV',
+      'BlueShift',
+      'BlueFuzz',
+      'BlueScale',
+      'LanguageGroup',
+      'ExpansionFactor',
+      'ForceBold',
+      'StdHW',
+      'StdVW'
+    ];
+    for (i = 0, ii = fields.length; i < ii; i++) {
+      var field = fields[i];
+      if (!properties.privateData.hasOwnProperty(field)) {
+        continue;
+      }
+      var value = properties.privateData[field];
+      if (isArray(value)) {
+        // All of the private dictionary array data in CFF must be stored as
+        // "delta-encoded" numbers.
+        for (var j = value.length - 1; j > 0; j--) {
+          value[j] -= value[j - 1]; // ... difference from previous value
+        }
+      }
+      privateDict.setByName(field, value);
+    }
+    cff.topDict.privateDict = privateDict;
+
+    var subrIndex = new CFFIndex();
+    for (i = 0, ii = subrs.length; i < ii; i++) {
+      subrIndex.add(subrs[i]);
+    }
+    privateDict.subrsIndex = subrIndex;
+
+    var compiler = new CFFCompiler(cff);
+    return compiler.compile();
+  }
+};
+
+var CFFFont = (function CFFFontClosure() {
+  function CFFFont(file, properties) {
+    this.properties = properties;
+
+    var parser = new CFFParser(file, properties);
+    this.cff = parser.parse();
+    var compiler = new CFFCompiler(this.cff);
+    this.seacs = this.cff.seacs;
+    try {
+      this.data = compiler.compile();
+    } catch (e) {
+      warn('Failed to compile font ' + properties.loadedName);
+      // There may have just been an issue with the compiler, set the data
+      // anyway and hope the font loaded.
+      this.data = file;
+    }
+  }
+
+  CFFFont.prototype = {
+    get numGlyphs() {
+      return this.cff.charStrings.count;
+    },
+    getCharset: function CFFFont_getCharset() {
+      return this.cff.charset.charset;
+    },
+    getGlyphMapping: function CFFFont_getGlyphMapping() {
+      var cff = this.cff;
+      var properties = this.properties;
+      var charsets = cff.charset.charset;
+      var charCodeToGlyphId;
+      var glyphId;
+
+      if (properties.composite) {
+        charCodeToGlyphId = Object.create(null);
+        if (cff.isCIDFont) {
+          // If the font is actually a CID font then we should use the charset
+          // to map CIDs to GIDs.
+          for (glyphId = 0; glyphId < charsets.length; glyphId++) {
+            var cid = charsets[glyphId];
+            var charCode = properties.cMap.charCodeOf(cid);
+            charCodeToGlyphId[charCode] = glyphId;
+          }
+        } else {
+          // If it is NOT actually a CID font then CIDs should be mapped
+          // directly to GIDs.
+          for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {
+            charCodeToGlyphId[glyphId] = glyphId;
+          }
+        }
+        return charCodeToGlyphId;
+      }
+
+      var encoding = cff.encoding ? cff.encoding.encoding : null;
+      charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);
+      return charCodeToGlyphId;
+    }
+  };
+
+  return CFFFont;
+})();
+
+var CFFParser = (function CFFParserClosure() {
+  var CharstringValidationData = [
+    null,
+    { id: 'hstem', min: 2, stackClearing: true, stem: true },
+    null,
+    { id: 'vstem', min: 2, stackClearing: true, stem: true },
+    { id: 'vmoveto', min: 1, stackClearing: true },
+    { id: 'rlineto', min: 2, resetStack: true },
+    { id: 'hlineto', min: 1, resetStack: true },
+    { id: 'vlineto', min: 1, resetStack: true },
+    { id: 'rrcurveto', min: 6, resetStack: true },
+    null,
+    { id: 'callsubr', min: 1, undefStack: true },
+    { id: 'return', min: 0, undefStack: true },
+    null, // 12
+    null,
+    { id: 'endchar', min: 0, stackClearing: true },
+    null,
+    null,
+    null,
+    { id: 'hstemhm', min: 2, stackClearing: true, stem: true },
+    { id: 'hintmask', min: 0, stackClearing: true },
+    { id: 'cntrmask', min: 0, stackClearing: true },
+    { id: 'rmoveto', min: 2, stackClearing: true },
+    { id: 'hmoveto', min: 1, stackClearing: true },
+    { id: 'vstemhm', min: 2, stackClearing: true, stem: true },
+    { id: 'rcurveline', min: 8, resetStack: true },
+    { id: 'rlinecurve', min: 8, resetStack: true },
+    { id: 'vvcurveto', min: 4, resetStack: true },
+    { id: 'hhcurveto', min: 4, resetStack: true },
+    null, // shortint
+    { id: 'callgsubr', min: 1, undefStack: true },
+    { id: 'vhcurveto', min: 4, resetStack: true },
+    { id: 'hvcurveto', min: 4, resetStack: true }
+  ];
+  var CharstringValidationData12 = [
+    null,
+    null,
+    null,
+    { id: 'and', min: 2, stackDelta: -1 },
+    { id: 'or', min: 2, stackDelta: -1 },
+    { id: 'not', min: 1, stackDelta: 0 },
+    null,
+    null,
+    null,
+    { id: 'abs', min: 1, stackDelta: 0 },
+    { id: 'add', min: 2, stackDelta: -1,
+      stackFn: function stack_div(stack, index) {
+        stack[index - 2] = stack[index - 2] + stack[index - 1];
+      }
+    },
+    { id: 'sub', min: 2, stackDelta: -1,
+      stackFn: function stack_div(stack, index) {
+        stack[index - 2] = stack[index - 2] - stack[index - 1];
+      }
+    },
+    { id: 'div', min: 2, stackDelta: -1,
+      stackFn: function stack_div(stack, index) {
+        stack[index - 2] = stack[index - 2] / stack[index - 1];
+      }
+    },
+    null,
+    { id: 'neg', min: 1, stackDelta: 0,
+      stackFn: function stack_div(stack, index) {
+        stack[index - 1] = -stack[index - 1];
+      }
+    },
+    { id: 'eq', min: 2, stackDelta: -1 },
+    null,
+    null,
+    { id: 'drop', min: 1, stackDelta: -1 },
+    null,
+    { id: 'put', min: 2, stackDelta: -2 },
+    { id: 'get', min: 1, stackDelta: 0 },
+    { id: 'ifelse', min: 4, stackDelta: -3 },
+    { id: 'random', min: 0, stackDelta: 1 },
+    { id: 'mul', min: 2, stackDelta: -1,
+      stackFn: function stack_div(stack, index) {
+        stack[index - 2] = stack[index - 2] * stack[index - 1];
+      }
+    },
+    null,
+    { id: 'sqrt', min: 1, stackDelta: 0 },
+    { id: 'dup', min: 1, stackDelta: 1 },
+    { id: 'exch', min: 2, stackDelta: 0 },
+    { id: 'index', min: 2, stackDelta: 0 },
+    { id: 'roll', min: 3, stackDelta: -2 },
+    null,
+    null,
+    null,
+    { id: 'hflex', min: 7, resetStack: true },
+    { id: 'flex', min: 13, resetStack: true },
+    { id: 'hflex1', min: 9, resetStack: true },
+    { id: 'flex1', min: 11, resetStack: true }
+  ];
+
+  function CFFParser(file, properties) {
+    this.bytes = file.getBytes();
+    this.properties = properties;
+  }
+  CFFParser.prototype = {
+    parse: function CFFParser_parse() {
+      var properties = this.properties;
+      var cff = new CFF();
+      this.cff = cff;
+
+      // The first five sections must be in order, all the others are reached
+      // via offsets contained in one of the below.
+      var header = this.parseHeader();
+      var nameIndex = this.parseIndex(header.endPos);
+      var topDictIndex = this.parseIndex(nameIndex.endPos);
+      var stringIndex = this.parseIndex(topDictIndex.endPos);
+      var globalSubrIndex = this.parseIndex(stringIndex.endPos);
+
+      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));
+      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);
+
+      cff.header = header.obj;
+      cff.names = this.parseNameIndex(nameIndex.obj);
+      cff.strings = this.parseStringIndex(stringIndex.obj);
+      cff.topDict = topDict;
+      cff.globalSubrIndex = globalSubrIndex.obj;
+
+      this.parsePrivateDict(cff.topDict);
+
+      cff.isCIDFont = topDict.hasName('ROS');
+
+      var charStringOffset = topDict.getByName('CharStrings');
+      var charStringsAndSeacs = this.parseCharStrings(charStringOffset);
+      cff.charStrings = charStringsAndSeacs.charStrings;
+      cff.seacs = charStringsAndSeacs.seacs;
+      cff.widths = charStringsAndSeacs.widths;
+
+      var fontMatrix = topDict.getByName('FontMatrix');
+      if (fontMatrix) {
+        properties.fontMatrix = fontMatrix;
+      }
+
+      var fontBBox = topDict.getByName('FontBBox');
+      if (fontBBox) {
+        // adjusting ascent/descent
+        properties.ascent = fontBBox[3];
+        properties.descent = fontBBox[1];
+        properties.ascentScaled = true;
+      }
+
+      var charset, encoding;
+      if (cff.isCIDFont) {
+        var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj;
+        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {
+          var dictRaw = fdArrayIndex.get(i);
+          var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw),
+                                         cff.strings);
+          this.parsePrivateDict(fontDict);
+          cff.fdArray.push(fontDict);
+        }
+        // cid fonts don't have an encoding
+        encoding = null;
+        charset = this.parseCharsets(topDict.getByName('charset'),
+                                     cff.charStrings.count, cff.strings, true);
+        cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'),
+                                             cff.charStrings.count);
+      } else {
+        charset = this.parseCharsets(topDict.getByName('charset'),
+                                     cff.charStrings.count, cff.strings, false);
+        encoding = this.parseEncoding(topDict.getByName('Encoding'),
+                                      properties,
+                                      cff.strings, charset.charset);
+      }
+      cff.charset = charset;
+      cff.encoding = encoding;
+
+      return cff;
+    },
+    parseHeader: function CFFParser_parseHeader() {
+      var bytes = this.bytes;
+      var bytesLength = bytes.length;
+      var offset = 0;
+
+      // Prevent an infinite loop, by checking that the offset is within the
+      // bounds of the bytes array. Necessary in empty, or invalid, font files.
+      while (offset < bytesLength && bytes[offset] !== 1) {
+        ++offset;
+      }
+      if (offset >= bytesLength) {
+        error('Invalid CFF header');
+      } else if (offset !== 0) {
+        info('cff data is shifted');
+        bytes = bytes.subarray(offset);
+        this.bytes = bytes;
+      }
+      var major = bytes[0];
+      var minor = bytes[1];
+      var hdrSize = bytes[2];
+      var offSize = bytes[3];
+      var header = new CFFHeader(major, minor, hdrSize, offSize);
+      return { obj: header, endPos: hdrSize };
+    },
+    parseDict: function CFFParser_parseDict(dict) {
+      var pos = 0;
+
+      function parseOperand() {
+        var value = dict[pos++];
+        if (value === 30) {
+          return parseFloatOperand(pos);
+        } else if (value === 28) {
+          value = dict[pos++];
+          value = ((value << 24) | (dict[pos++] << 16)) >> 16;
+          return value;
+        } else if (value === 29) {
+          value = dict[pos++];
+          value = (value << 8) | dict[pos++];
+          value = (value << 8) | dict[pos++];
+          value = (value << 8) | dict[pos++];
+          return value;
+        } else if (value >= 32 && value <= 246) {
+          return value - 139;
+        } else if (value >= 247 && value <= 250) {
+          return ((value - 247) * 256) + dict[pos++] + 108;
+        } else if (value >= 251 && value <= 254) {
+          return -((value - 251) * 256) - dict[pos++] - 108;
+        } else {
+          error('255 is not a valid DICT command');
+        }
+        return -1;
+      }
+
+      function parseFloatOperand() {
+        var str = '';
+        var eof = 15;
+        var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8',
+            '9', '.', 'E', 'E-', null, '-'];
+        var length = dict.length;
+        while (pos < length) {
+          var b = dict[pos++];
+          var b1 = b >> 4;
+          var b2 = b & 15;
+
+          if (b1 === eof) {
+            break;
+          }
+          str += lookup[b1];
+
+          if (b2 === eof) {
+            break;
+          }
+          str += lookup[b2];
+        }
+        return parseFloat(str);
+      }
+
+      var operands = [];
+      var entries = [];
+
+      pos = 0;
+      var end = dict.length;
+      while (pos < end) {
+        var b = dict[pos];
+        if (b <= 21) {
+          if (b === 12) {
+            b = (b << 8) | dict[++pos];
+          }
+          entries.push([b, operands]);
+          operands = [];
+          ++pos;
+        } else {
+          operands.push(parseOperand());
+        }
+      }
+      return entries;
+    },
+    parseIndex: function CFFParser_parseIndex(pos) {
+      var cffIndex = new CFFIndex();
+      var bytes = this.bytes;
+      var count = (bytes[pos++] << 8) | bytes[pos++];
+      var offsets = [];
+      var end = pos;
+      var i, ii;
+
+      if (count !== 0) {
+        var offsetSize = bytes[pos++];
+        // add 1 for offset to determine size of last object
+        var startPos = pos + ((count + 1) * offsetSize) - 1;
+
+        for (i = 0, ii = count + 1; i < ii; ++i) {
+          var offset = 0;
+          for (var j = 0; j < offsetSize; ++j) {
+            offset <<= 8;
+            offset += bytes[pos++];
+          }
+          offsets.push(startPos + offset);
+        }
+        end = offsets[count];
+      }
+      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {
+        var offsetStart = offsets[i];
+        var offsetEnd = offsets[i + 1];
+        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));
+      }
+      return {obj: cffIndex, endPos: end};
+    },
+    parseNameIndex: function CFFParser_parseNameIndex(index) {
+      var names = [];
+      for (var i = 0, ii = index.count; i < ii; ++i) {
+        var name = index.get(i);
+        // OTS doesn't allow names to be over 127 characters.
+        var length = Math.min(name.length, 127);
+        var data = [];
+        // OTS also only permits certain characters in the name.
+        for (var j = 0; j < length; ++j) {
+          var c = name[j];
+          if (j === 0 && c === 0) {
+            data[j] = c;
+            continue;
+          }
+          if ((c < 33 || c > 126) || c === 91 /* [ */ || c === 93 /* ] */ ||
+              c === 40 /* ( */ || c === 41 /* ) */ || c === 123 /* { */ ||
+              c === 125 /* } */ || c === 60 /* < */ || c === 62 /* > */ ||
+              c === 47 /* / */ || c === 37 /* % */ || c === 35 /* # */) {
+            data[j] = 95;
+            continue;
+          }
+          data[j] = c;
+        }
+        names.push(bytesToString(data));
+      }
+      return names;
+    },
+    parseStringIndex: function CFFParser_parseStringIndex(index) {
+      var strings = new CFFStrings();
+      for (var i = 0, ii = index.count; i < ii; ++i) {
+        var data = index.get(i);
+        strings.add(bytesToString(data));
+      }
+      return strings;
+    },
+    createDict: function CFFParser_createDict(Type, dict, strings) {
+      var cffDict = new Type(strings);
+      for (var i = 0, ii = dict.length; i < ii; ++i) {
+        var pair = dict[i];
+        var key = pair[0];
+        var value = pair[1];
+        cffDict.setByKey(key, value);
+      }
+      return cffDict;
+    },
+    parseCharStrings: function CFFParser_parseCharStrings(charStringOffset) {
+      var charStrings = this.parseIndex(charStringOffset).obj;
+      var seacs = [];
+      var widths = [];
+      var count = charStrings.count;
+      for (var i = 0; i < count; i++) {
+        var charstring = charStrings.get(i);
+
+        var stackSize = 0;
+        var stack = [];
+        var undefStack = true;
+        var hints = 0;
+        var valid = true;
+        var data = charstring;
+        var length = data.length;
+        var firstStackClearing = true;
+        for (var j = 0; j < length;) {
+          var value = data[j++];
+          var validationCommand = null;
+          if (value === 12) {
+            var q = data[j++];
+            if (q === 0) {
+              // The CFF specification state that the 'dotsection' command
+              // (12, 0) is deprecated and treated as a no-op, but all Type2
+              // charstrings processors should support them. Unfortunately
+              // the font sanitizer don't. As a workaround the sequence (12, 0)
+              // is replaced by a useless (0, hmoveto).
+              data[j - 2] = 139;
+              data[j - 1] = 22;
+              stackSize = 0;
+            } else {
+              validationCommand = CharstringValidationData12[q];
+            }
+          } else if (value === 28) { // number (16 bit)
+            stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;
+            j += 2;
+            stackSize++;
+          } else if (value === 14) {
+            if (stackSize >= 4) {
+              stackSize -= 4;
+              if (SEAC_ANALYSIS_ENABLED) {
+                seacs[i] = stack.slice(stackSize, stackSize + 4);
+                valid = false;
+              }
+            }
+            validationCommand = CharstringValidationData[value];
+          } else if (value >= 32 && value <= 246) {  // number
+            stack[stackSize] = value - 139;
+            stackSize++;
+          } else if (value >= 247 && value <= 254) {  // number (+1 bytes)
+            stack[stackSize] = (value < 251 ?
+                                ((value - 247) << 8) + data[j] + 108 :
+                                -((value - 251) << 8) - data[j] - 108);
+            j++;
+            stackSize++;
+          } else if (value === 255) {  // number (32 bit)
+            stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16) |
+                                (data[j + 2] << 8) | data[j + 3]) / 65536;
+            j += 4;
+            stackSize++;
+          } else if (value === 19 || value === 20) {
+            hints += stackSize >> 1;
+            j += (hints + 7) >> 3; // skipping right amount of hints flag data
+            stackSize %= 2;
+            validationCommand = CharstringValidationData[value];
+          } else {
+            validationCommand = CharstringValidationData[value];
+          }
+          if (validationCommand) {
+            if (validationCommand.stem) {
+              hints += stackSize >> 1;
+            }
+            if ('min' in validationCommand) {
+              if (!undefStack && stackSize < validationCommand.min) {
+                warn('Not enough parameters for ' + validationCommand.id +
+                     '; actual: ' + stackSize +
+                     ', expected: ' + validationCommand.min);
+                valid = false;
+                break;
+              }
+            }
+            if (firstStackClearing && validationCommand.stackClearing) {
+              firstStackClearing = false;
+              // the optional character width can be found before the first
+              // stack-clearing command arguments
+              stackSize -= validationCommand.min;
+              if (stackSize >= 2 && validationCommand.stem) {
+                // there are even amount of arguments for stem commands
+                stackSize %= 2;
+              } else if (stackSize > 1) {
+                warn('Found too many parameters for stack-clearing command');
+              }
+              if (stackSize > 0 && stack[stackSize - 1] >= 0) {
+                widths[i] = stack[stackSize - 1];
+              }
+            }
+            if ('stackDelta' in validationCommand) {
+              if ('stackFn' in validationCommand) {
+                validationCommand.stackFn(stack, stackSize);
+              }
+              stackSize += validationCommand.stackDelta;
+            } else if (validationCommand.stackClearing) {
+              stackSize = 0;
+            } else if (validationCommand.resetStack) {
+              stackSize = 0;
+              undefStack = false;
+            } else if (validationCommand.undefStack) {
+              stackSize = 0;
+              undefStack = true;
+              firstStackClearing = false;
+            }
+          }
+        }
+        if (!valid) {
+          // resetting invalid charstring to single 'endchar'
+          charStrings.set(i, new Uint8Array([14]));
+        }
+      }
+      return { charStrings: charStrings, seacs: seacs, widths: widths };
+    },
+    emptyPrivateDictionary:
+      function CFFParser_emptyPrivateDictionary(parentDict) {
+      var privateDict = this.createDict(CFFPrivateDict, [],
+                                        parentDict.strings);
+      parentDict.setByKey(18, [0, 0]);
+      parentDict.privateDict = privateDict;
+    },
+    parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {
+      // no private dict, do nothing
+      if (!parentDict.hasName('Private')) {
+        this.emptyPrivateDictionary(parentDict);
+        return;
+      }
+      var privateOffset = parentDict.getByName('Private');
+      // make sure the params are formatted correctly
+      if (!isArray(privateOffset) || privateOffset.length !== 2) {
+        parentDict.removeByName('Private');
+        return;
+      }
+      var size = privateOffset[0];
+      var offset = privateOffset[1];
+      // remove empty dicts or ones that refer to invalid location
+      if (size === 0 || offset >= this.bytes.length) {
+        this.emptyPrivateDictionary(parentDict);
+        return;
+      }
+
+      var privateDictEnd = offset + size;
+      var dictData = this.bytes.subarray(offset, privateDictEnd);
+      var dict = this.parseDict(dictData);
+      var privateDict = this.createDict(CFFPrivateDict, dict,
+                                        parentDict.strings);
+      parentDict.privateDict = privateDict;
+
+      // Parse the Subrs index also since it's relative to the private dict.
+      if (!privateDict.getByName('Subrs')) {
+        return;
+      }
+      var subrsOffset = privateDict.getByName('Subrs');
+      var relativeOffset = offset + subrsOffset;
+      // Validate the offset.
+      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {
+        this.emptyPrivateDictionary(parentDict);
+        return;
+      }
+      var subrsIndex = this.parseIndex(relativeOffset);
+      privateDict.subrsIndex = subrsIndex.obj;
+    },
+    parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {
+      if (pos === 0) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE,
+                              ISOAdobeCharset);
+      } else if (pos === 1) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT,
+                              ExpertCharset);
+      } else if (pos === 2) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET,
+                              ExpertSubsetCharset);
+      }
+
+      var bytes = this.bytes;
+      var start = pos;
+      var format = bytes[pos++];
+      var charset = ['.notdef'];
+      var id, count, i;
+
+      // subtract 1 for the .notdef glyph
+      length -= 1;
+
+      switch (format) {
+        case 0:
+          for (i = 0; i < length; i++) {
+            id = (bytes[pos++] << 8) | bytes[pos++];
+            charset.push(cid ? id : strings.get(id));
+          }
+          break;
+        case 1:
+          while (charset.length <= length) {
+            id = (bytes[pos++] << 8) | bytes[pos++];
+            count = bytes[pos++];
+            for (i = 0; i <= count; i++) {
+              charset.push(cid ? id++ : strings.get(id++));
+            }
+          }
+          break;
+        case 2:
+          while (charset.length <= length) {
+            id = (bytes[pos++] << 8) | bytes[pos++];
+            count = (bytes[pos++] << 8) | bytes[pos++];
+            for (i = 0; i <= count; i++) {
+              charset.push(cid ? id++ : strings.get(id++));
+            }
+          }
+          break;
+        default:
+          error('Unknown charset format');
+      }
+      // Raw won't be needed if we actually compile the charset.
+      var end = pos;
+      var raw = bytes.subarray(start, end);
+
+      return new CFFCharset(false, format, charset, raw);
+    },
+    parseEncoding: function CFFParser_parseEncoding(pos,
+                                                    properties,
+                                                    strings,
+                                                    charset) {
+      var encoding = {};
+      var bytes = this.bytes;
+      var predefined = false;
+      var hasSupplement = false;
+      var format, i, ii;
+      var raw = null;
+
+      function readSupplement() {
+        var supplementsCount = bytes[pos++];
+        for (i = 0; i < supplementsCount; i++) {
+          var code = bytes[pos++];
+          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);
+          encoding[code] = charset.indexOf(strings.get(sid));
+        }
+      }
+
+      if (pos === 0 || pos === 1) {
+        predefined = true;
+        format = pos;
+        var baseEncoding = pos ? Encodings.ExpertEncoding :
+                                 Encodings.StandardEncoding;
+        for (i = 0, ii = charset.length; i < ii; i++) {
+          var index = baseEncoding.indexOf(charset[i]);
+          if (index !== -1) {
+            encoding[index] = i;
+          }
+        }
+      } else {
+        var dataStart = pos;
+        format = bytes[pos++];
+        switch (format & 0x7f) {
+          case 0:
+            var glyphsCount = bytes[pos++];
+            for (i = 1; i <= glyphsCount; i++) {
+              encoding[bytes[pos++]] = i;
+            }
+            break;
+
+          case 1:
+            var rangesCount = bytes[pos++];
+            var gid = 1;
+            for (i = 0; i < rangesCount; i++) {
+              var start = bytes[pos++];
+              var left = bytes[pos++];
+              for (var j = start; j <= start + left; j++) {
+                encoding[j] = gid++;
+              }
+            }
+            break;
+
+          default:
+            error('Unknow encoding format: ' + format + ' in CFF');
+            break;
+        }
+        var dataEnd = pos;
+        if (format & 0x80) {
+          // The font sanitizer does not support CFF encoding with a
+          // supplement, since the encoding is not really used to map
+          // between gid to glyph, let's overwrite what is declared in
+          // the top dictionary to let the sanitizer think the font use
+          // StandardEncoding, that's a lie but that's ok.
+          bytes[dataStart] &= 0x7f;
+          readSupplement();
+          hasSupplement = true;
+        }
+        raw = bytes.subarray(dataStart, dataEnd);
+      }
+      format = format & 0x7f;
+      return new CFFEncoding(predefined, format, encoding, raw);
+    },
+    parseFDSelect: function CFFParser_parseFDSelect(pos, length) {
+      var start = pos;
+      var bytes = this.bytes;
+      var format = bytes[pos++];
+      var fdSelect = [];
+      var i;
+
+      switch (format) {
+        case 0:
+          for (i = 0; i < length; ++i) {
+            var id = bytes[pos++];
+            fdSelect.push(id);
+          }
+          break;
+        case 3:
+          var rangesCount = (bytes[pos++] << 8) | bytes[pos++];
+          for (i = 0; i < rangesCount; ++i) {
+            var first = (bytes[pos++] << 8) | bytes[pos++];
+            var fdIndex = bytes[pos++];
+            var next = (bytes[pos] << 8) | bytes[pos + 1];
+            for (var j = first; j < next; ++j) {
+              fdSelect.push(fdIndex);
+            }
+          }
+          // Advance past the sentinel(next).
+          pos += 2;
+          break;
+        default:
+          error('Unknown fdselect format ' + format);
+          break;
+      }
+      var end = pos;
+      return new CFFFDSelect(fdSelect, bytes.subarray(start, end));
+    }
+  };
+  return CFFParser;
+})();
+
+// Compact Font Format
+var CFF = (function CFFClosure() {
+  function CFF() {
+    this.header = null;
+    this.names = [];
+    this.topDict = null;
+    this.strings = new CFFStrings();
+    this.globalSubrIndex = null;
+
+    // The following could really be per font, but since we only have one font
+    // store them here.
+    this.encoding = null;
+    this.charset = null;
+    this.charStrings = null;
+    this.fdArray = [];
+    this.fdSelect = null;
+
+    this.isCIDFont = false;
+  }
+  return CFF;
+})();
+
+var CFFHeader = (function CFFHeaderClosure() {
+  function CFFHeader(major, minor, hdrSize, offSize) {
+    this.major = major;
+    this.minor = minor;
+    this.hdrSize = hdrSize;
+    this.offSize = offSize;
+  }
+  return CFFHeader;
+})();
+
+var CFFStrings = (function CFFStringsClosure() {
+  function CFFStrings() {
+    this.strings = [];
+  }
+  CFFStrings.prototype = {
+    get: function CFFStrings_get(index) {
+      if (index >= 0 && index <= 390) {
+        return CFFStandardStrings[index];
+      }
+      if (index - 391 <= this.strings.length) {
+        return this.strings[index - 391];
+      }
+      return CFFStandardStrings[0];
+    },
+    add: function CFFStrings_add(value) {
+      this.strings.push(value);
+    },
+    get count() {
+      return this.strings.length;
+    }
+  };
+  return CFFStrings;
+})();
+
+var CFFIndex = (function CFFIndexClosure() {
+  function CFFIndex() {
+    this.objects = [];
+    this.length = 0;
+  }
+  CFFIndex.prototype = {
+    add: function CFFIndex_add(data) {
+      this.length += data.length;
+      this.objects.push(data);
+    },
+    set: function CFFIndex_set(index, data) {
+      this.length += data.length - this.objects[index].length;
+      this.objects[index] = data;
+    },
+    get: function CFFIndex_get(index) {
+      return this.objects[index];
+    },
+    get count() {
+      return this.objects.length;
+    }
+  };
+  return CFFIndex;
+})();
+
+var CFFDict = (function CFFDictClosure() {
+  function CFFDict(tables, strings) {
+    this.keyToNameMap = tables.keyToNameMap;
+    this.nameToKeyMap = tables.nameToKeyMap;
+    this.defaults = tables.defaults;
+    this.types = tables.types;
+    this.opcodes = tables.opcodes;
+    this.order = tables.order;
+    this.strings = strings;
+    this.values = {};
+  }
+  CFFDict.prototype = {
+    // value should always be an array
+    setByKey: function CFFDict_setByKey(key, value) {
+      if (!(key in this.keyToNameMap)) {
+        return false;
+      }
+      // ignore empty values
+      if (value.length === 0) {
+        return true;
+      }
+      var type = this.types[key];
+      // remove the array wrapping these types of values
+      if (type === 'num' || type === 'sid' || type === 'offset') {
+        value = value[0];
+      }
+      this.values[key] = value;
+      return true;
+    },
+    setByName: function CFFDict_setByName(name, value) {
+      if (!(name in this.nameToKeyMap)) {
+        error('Invalid dictionary name "' + name + '"');
+      }
+      this.values[this.nameToKeyMap[name]] = value;
+    },
+    hasName: function CFFDict_hasName(name) {
+      return this.nameToKeyMap[name] in this.values;
+    },
+    getByName: function CFFDict_getByName(name) {
+      if (!(name in this.nameToKeyMap)) {
+        error('Invalid dictionary name "' + name + '"');
+      }
+      var key = this.nameToKeyMap[name];
+      if (!(key in this.values)) {
+        return this.defaults[key];
+      }
+      return this.values[key];
+    },
+    removeByName: function CFFDict_removeByName(name) {
+      delete this.values[this.nameToKeyMap[name]];
+    }
+  };
+  CFFDict.createTables = function CFFDict_createTables(layout) {
+    var tables = {
+      keyToNameMap: {},
+      nameToKeyMap: {},
+      defaults: {},
+      types: {},
+      opcodes: {},
+      order: []
+    };
+    for (var i = 0, ii = layout.length; i < ii; ++i) {
+      var entry = layout[i];
+      var key = isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];
+      tables.keyToNameMap[key] = entry[1];
+      tables.nameToKeyMap[entry[1]] = key;
+      tables.types[key] = entry[2];
+      tables.defaults[key] = entry[3];
+      tables.opcodes[key] = isArray(entry[0]) ? entry[0] : [entry[0]];
+      tables.order.push(key);
+    }
+    return tables;
+  };
+  return CFFDict;
+})();
+
+var CFFTopDict = (function CFFTopDictClosure() {
+  var layout = [
+    [[12, 30], 'ROS', ['sid', 'sid', 'num'], null],
+    [[12, 20], 'SyntheticBase', 'num', null],
+    [0, 'version', 'sid', null],
+    [1, 'Notice', 'sid', null],
+    [[12, 0], 'Copyright', 'sid', null],
+    [2, 'FullName', 'sid', null],
+    [3, 'FamilyName', 'sid', null],
+    [4, 'Weight', 'sid', null],
+    [[12, 1], 'isFixedPitch', 'num', 0],
+    [[12, 2], 'ItalicAngle', 'num', 0],
+    [[12, 3], 'UnderlinePosition', 'num', -100],
+    [[12, 4], 'UnderlineThickness', 'num', 50],
+    [[12, 5], 'PaintType', 'num', 0],
+    [[12, 6], 'CharstringType', 'num', 2],
+    [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'],
+                            [0.001, 0, 0, 0.001, 0, 0]],
+    [13, 'UniqueID', 'num', null],
+    [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]],
+    [[12, 8], 'StrokeWidth', 'num', 0],
+    [14, 'XUID', 'array', null],
+    [15, 'charset', 'offset', 0],
+    [16, 'Encoding', 'offset', 0],
+    [17, 'CharStrings', 'offset', 0],
+    [18, 'Private', ['offset', 'offset'], null],
+    [[12, 21], 'PostScript', 'sid', null],
+    [[12, 22], 'BaseFontName', 'sid', null],
+    [[12, 23], 'BaseFontBlend', 'delta', null],
+    [[12, 31], 'CIDFontVersion', 'num', 0],
+    [[12, 32], 'CIDFontRevision', 'num', 0],
+    [[12, 33], 'CIDFontType', 'num', 0],
+    [[12, 34], 'CIDCount', 'num', 8720],
+    [[12, 35], 'UIDBase', 'num', null],
+    // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes
+    // before FDArray.
+    [[12, 37], 'FDSelect', 'offset', null],
+    [[12, 36], 'FDArray', 'offset', null],
+    [[12, 38], 'FontName', 'sid', null]
+  ];
+  var tables = null;
+  function CFFTopDict(strings) {
+    if (tables === null) {
+      tables = CFFDict.createTables(layout);
+    }
+    CFFDict.call(this, tables, strings);
+    this.privateDict = null;
+  }
+  CFFTopDict.prototype = Object.create(CFFDict.prototype);
+  return CFFTopDict;
+})();
+
+var CFFPrivateDict = (function CFFPrivateDictClosure() {
+  var layout = [
+    [6, 'BlueValues', 'delta', null],
+    [7, 'OtherBlues', 'delta', null],
+    [8, 'FamilyBlues', 'delta', null],
+    [9, 'FamilyOtherBlues', 'delta', null],
+    [[12, 9], 'BlueScale', 'num', 0.039625],
+    [[12, 10], 'BlueShift', 'num', 7],
+    [[12, 11], 'BlueFuzz', 'num', 1],
+    [10, 'StdHW', 'num', null],
+    [11, 'StdVW', 'num', null],
+    [[12, 12], 'StemSnapH', 'delta', null],
+    [[12, 13], 'StemSnapV', 'delta', null],
+    [[12, 14], 'ForceBold', 'num', 0],
+    [[12, 17], 'LanguageGroup', 'num', 0],
+    [[12, 18], 'ExpansionFactor', 'num', 0.06],
+    [[12, 19], 'initialRandomSeed', 'num', 0],
+    [20, 'defaultWidthX', 'num', 0],
+    [21, 'nominalWidthX', 'num', 0],
+    [19, 'Subrs', 'offset', null]
+  ];
+  var tables = null;
+  function CFFPrivateDict(strings) {
+    if (tables === null) {
+      tables = CFFDict.createTables(layout);
+    }
+    CFFDict.call(this, tables, strings);
+    this.subrsIndex = null;
+  }
+  CFFPrivateDict.prototype = Object.create(CFFDict.prototype);
+  return CFFPrivateDict;
+})();
+
+var CFFCharsetPredefinedTypes = {
+  ISO_ADOBE: 0,
+  EXPERT: 1,
+  EXPERT_SUBSET: 2
+};
+var CFFCharset = (function CFFCharsetClosure() {
+  function CFFCharset(predefined, format, charset, raw) {
+    this.predefined = predefined;
+    this.format = format;
+    this.charset = charset;
+    this.raw = raw;
+  }
+  return CFFCharset;
+})();
+
+var CFFEncoding = (function CFFEncodingClosure() {
+  function CFFEncoding(predefined, format, encoding, raw) {
+    this.predefined = predefined;
+    this.format = format;
+    this.encoding = encoding;
+    this.raw = raw;
+  }
+  return CFFEncoding;
+})();
+
+var CFFFDSelect = (function CFFFDSelectClosure() {
+  function CFFFDSelect(fdSelect, raw) {
+    this.fdSelect = fdSelect;
+    this.raw = raw;
+  }
+  return CFFFDSelect;
+})();
+
+// Helper class to keep track of where an offset is within the data and helps
+// filling in that offset once it's known.
+var CFFOffsetTracker = (function CFFOffsetTrackerClosure() {
+  function CFFOffsetTracker() {
+    this.offsets = {};
+  }
+  CFFOffsetTracker.prototype = {
+    isTracking: function CFFOffsetTracker_isTracking(key) {
+      return key in this.offsets;
+    },
+    track: function CFFOffsetTracker_track(key, location) {
+      if (key in this.offsets) {
+        error('Already tracking location of ' + key);
+      }
+      this.offsets[key] = location;
+    },
+    offset: function CFFOffsetTracker_offset(value) {
+      for (var key in this.offsets) {
+        this.offsets[key] += value;
+      }
+    },
+    setEntryLocation: function CFFOffsetTracker_setEntryLocation(key,
+                                                                 values,
+                                                                 output) {
+      if (!(key in this.offsets)) {
+        error('Not tracking location of ' + key);
+      }
+      var data = output.data;
+      var dataOffset = this.offsets[key];
+      var size = 5;
+      for (var i = 0, ii = values.length; i < ii; ++i) {
+        var offset0 = i * size + dataOffset;
+        var offset1 = offset0 + 1;
+        var offset2 = offset0 + 2;
+        var offset3 = offset0 + 3;
+        var offset4 = offset0 + 4;
+        // It's easy to screw up offsets so perform this sanity check.
+        if (data[offset0] !== 0x1d || data[offset1] !== 0 ||
+            data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {
+          error('writing to an offset that is not empty');
+        }
+        var value = values[i];
+        data[offset0] = 0x1d;
+        data[offset1] = (value >> 24) & 0xFF;
+        data[offset2] = (value >> 16) & 0xFF;
+        data[offset3] = (value >> 8) & 0xFF;
+        data[offset4] = value & 0xFF;
+      }
+    }
+  };
+  return CFFOffsetTracker;
+})();
+
+// Takes a CFF and converts it to the binary representation.
+var CFFCompiler = (function CFFCompilerClosure() {
+  function CFFCompiler(cff) {
+    this.cff = cff;
+  }
+  CFFCompiler.prototype = {
+    compile: function CFFCompiler_compile() {
+      var cff = this.cff;
+      var output = {
+        data: [],
+        length: 0,
+        add: function CFFCompiler_add(data) {
+          this.data = this.data.concat(data);
+          this.length = this.data.length;
+        }
+      };
+
+      // Compile the five entries that must be in order.
+      var header = this.compileHeader(cff.header);
+      output.add(header);
+
+      var nameIndex = this.compileNameIndex(cff.names);
+      output.add(nameIndex);
+
+      if (cff.isCIDFont) {
+        // The spec is unclear on how font matrices should relate to each other
+        // when there is one in the main top dict and the sub top dicts.
+        // Windows handles this differently than linux and osx so we have to
+        // normalize to work on all.
+        // Rules based off of some mailing list discussions:
+        // - If main font has a matrix and subfont doesn't, use the main matrix.
+        // - If no main font matrix and there is a subfont matrix, use the
+        //   subfont matrix.
+        // - If both have matrices, concat together.
+        // - If neither have matrices, use default.
+        // To make this work on all platforms we move the top matrix into each
+        // sub top dict and concat if necessary.
+        if (cff.topDict.hasName('FontMatrix')) {
+          var base = cff.topDict.getByName('FontMatrix');
+          cff.topDict.removeByName('FontMatrix');
+          for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {
+            var subDict = cff.fdArray[i];
+            var matrix = base.slice(0);
+            if (subDict.hasName('FontMatrix')) {
+              matrix = Util.transform(matrix, subDict.getByName('FontMatrix'));
+            }
+            subDict.setByName('FontMatrix', matrix);
+          }
+        }
+      }
+
+      var compiled = this.compileTopDicts([cff.topDict],
+                                          output.length,
+                                          cff.isCIDFont);
+      output.add(compiled.output);
+      var topDictTracker = compiled.trackers[0];
+
+      var stringIndex = this.compileStringIndex(cff.strings.strings);
+      output.add(stringIndex);
+
+      var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);
+      output.add(globalSubrIndex);
+
+      // Now start on the other entries that have no specfic order.
+      if (cff.encoding && cff.topDict.hasName('Encoding')) {
+        if (cff.encoding.predefined) {
+          topDictTracker.setEntryLocation('Encoding', [cff.encoding.format],
+                                          output);
+        } else {
+          var encoding = this.compileEncoding(cff.encoding);
+          topDictTracker.setEntryLocation('Encoding', [output.length], output);
+          output.add(encoding);
+        }
+      }
+
+      if (cff.charset && cff.topDict.hasName('charset')) {
+        if (cff.charset.predefined) {
+          topDictTracker.setEntryLocation('charset', [cff.charset.format],
+                                          output);
+        } else {
+          var charset = this.compileCharset(cff.charset);
+          topDictTracker.setEntryLocation('charset', [output.length], output);
+          output.add(charset);
+        }
+      }
+
+      var charStrings = this.compileCharStrings(cff.charStrings);
+      topDictTracker.setEntryLocation('CharStrings', [output.length], output);
+      output.add(charStrings);
+
+      if (cff.isCIDFont) {
+        // For some reason FDSelect must be in front of FDArray on windows. OSX
+        // and linux don't seem to care.
+        topDictTracker.setEntryLocation('FDSelect', [output.length], output);
+        var fdSelect = this.compileFDSelect(cff.fdSelect.raw);
+        output.add(fdSelect);
+        // It is unclear if the sub font dictionary can have CID related
+        // dictionary keys, but the sanitizer doesn't like them so remove them.
+        compiled = this.compileTopDicts(cff.fdArray, output.length, true);
+        topDictTracker.setEntryLocation('FDArray', [output.length], output);
+        output.add(compiled.output);
+        var fontDictTrackers = compiled.trackers;
+
+        this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);
+      }
+
+      this.compilePrivateDicts([cff.topDict], [topDictTracker], output);
+
+      // If the font data ends with INDEX whose object data is zero-length,
+      // the sanitizer will bail out. Add a dummy byte to avoid that.
+      output.add([0]);
+
+      return output.data;
+    },
+    encodeNumber: function CFFCompiler_encodeNumber(value) {
+      if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) { // isInt
+        return this.encodeInteger(value);
+      } else {
+        return this.encodeFloat(value);
+      }
+    },
+    encodeFloat: function CFFCompiler_encodeFloat(num) {
+      var value = num.toString();
+
+      // rounding inaccurate doubles
+      var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value);
+      if (m) {
+        var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));
+        value = (Math.round(num * epsilon) / epsilon).toString();
+      }
+
+      var nibbles = '';
+      var i, ii;
+      for (i = 0, ii = value.length; i < ii; ++i) {
+        var a = value[i];
+        if (a === 'e') {
+          nibbles += value[++i] === '-' ? 'c' : 'b';
+        } else if (a === '.') {
+          nibbles += 'a';
+        } else if (a === '-') {
+          nibbles += 'e';
+        } else {
+          nibbles += a;
+        }
+      }
+      nibbles += (nibbles.length & 1) ? 'f' : 'ff';
+      var out = [30];
+      for (i = 0, ii = nibbles.length; i < ii; i += 2) {
+        out.push(parseInt(nibbles.substr(i, 2), 16));
+      }
+      return out;
+    },
+    encodeInteger: function CFFCompiler_encodeInteger(value) {
+      var code;
+      if (value >= -107 && value <= 107) {
+        code = [value + 139];
+      } else if (value >= 108 && value <= 1131) {
+        value = [value - 108];
+        code = [(value >> 8) + 247, value & 0xFF];
+      } else if (value >= -1131 && value <= -108) {
+        value = -value - 108;
+        code = [(value >> 8) + 251, value & 0xFF];
+      } else if (value >= -32768 && value <= 32767) {
+        code = [0x1c, (value >> 8) & 0xFF, value & 0xFF];
+      } else {
+        code = [0x1d,
+                (value >> 24) & 0xFF,
+                (value >> 16) & 0xFF,
+                (value >> 8) & 0xFF,
+                 value & 0xFF];
+      }
+      return code;
+    },
+    compileHeader: function CFFCompiler_compileHeader(header) {
+      return [
+        header.major,
+        header.minor,
+        header.hdrSize,
+        header.offSize
+      ];
+    },
+    compileNameIndex: function CFFCompiler_compileNameIndex(names) {
+      var nameIndex = new CFFIndex();
+      for (var i = 0, ii = names.length; i < ii; ++i) {
+        nameIndex.add(stringToBytes(names[i]));
+      }
+      return this.compileIndex(nameIndex);
+    },
+    compileTopDicts: function CFFCompiler_compileTopDicts(dicts,
+                                                          length,
+                                                          removeCidKeys) {
+      var fontDictTrackers = [];
+      var fdArrayIndex = new CFFIndex();
+      for (var i = 0, ii = dicts.length; i < ii; ++i) {
+        var fontDict = dicts[i];
+        if (removeCidKeys) {
+          fontDict.removeByName('CIDFontVersion');
+          fontDict.removeByName('CIDFontRevision');
+          fontDict.removeByName('CIDFontType');
+          fontDict.removeByName('CIDCount');
+          fontDict.removeByName('UIDBase');
+        }
+        var fontDictTracker = new CFFOffsetTracker();
+        var fontDictData = this.compileDict(fontDict, fontDictTracker);
+        fontDictTrackers.push(fontDictTracker);
+        fdArrayIndex.add(fontDictData);
+        fontDictTracker.offset(length);
+      }
+      fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);
+      return {
+        trackers: fontDictTrackers,
+        output: fdArrayIndex
+      };
+    },
+    compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts,
+                                                                  trackers,
+                                                                  output) {
+      for (var i = 0, ii = dicts.length; i < ii; ++i) {
+        var fontDict = dicts[i];
+        assert(fontDict.privateDict && fontDict.hasName('Private'),
+               'There must be an private dictionary.');
+        var privateDict = fontDict.privateDict;
+        var privateDictTracker = new CFFOffsetTracker();
+        var privateDictData = this.compileDict(privateDict, privateDictTracker);
+
+        var outputLength = output.length;
+        privateDictTracker.offset(outputLength);
+        if (!privateDictData.length) {
+          // The private dictionary was empty, set the output length to zero to
+          // ensure the offset length isn't out of bounds in the eyes of the
+          // sanitizer.
+          outputLength = 0;
+        }
+
+        trackers[i].setEntryLocation('Private',
+                                     [privateDictData.length, outputLength],
+                                     output);
+        output.add(privateDictData);
+
+        if (privateDict.subrsIndex && privateDict.hasName('Subrs')) {
+          var subrs = this.compileIndex(privateDict.subrsIndex);
+          privateDictTracker.setEntryLocation('Subrs', [privateDictData.length],
+                                              output);
+          output.add(subrs);
+        }
+      }
+    },
+    compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {
+      var out = [];
+      // The dictionary keys must be in a certain order.
+      var order = dict.order;
+      for (var i = 0; i < order.length; ++i) {
+        var key = order[i];
+        if (!(key in dict.values)) {
+          continue;
+        }
+        var values = dict.values[key];
+        var types = dict.types[key];
+        if (!isArray(types)) {
+          types = [types];
+        }
+        if (!isArray(values)) {
+          values = [values];
+        }
+
+        // Remove any empty dict values.
+        if (values.length === 0) {
+          continue;
+        }
+
+        for (var j = 0, jj = types.length; j < jj; ++j) {
+          var type = types[j];
+          var value = values[j];
+          switch (type) {
+            case 'num':
+            case 'sid':
+              out = out.concat(this.encodeNumber(value));
+              break;
+            case 'offset':
+              // For offsets we just insert a 32bit integer so we don't have to
+              // deal with figuring out the length of the offset when it gets
+              // replaced later on by the compiler.
+              var name = dict.keyToNameMap[key];
+              // Some offsets have the offset and the length, so just record the
+              // position of the first one.
+              if (!offsetTracker.isTracking(name)) {
+                offsetTracker.track(name, out.length);
+              }
+              out = out.concat([0x1d, 0, 0, 0, 0]);
+              break;
+            case 'array':
+            case 'delta':
+              out = out.concat(this.encodeNumber(value));
+              for (var k = 1, kk = values.length; k < kk; ++k) {
+                out = out.concat(this.encodeNumber(values[k]));
+              }
+              break;
+            default:
+              error('Unknown data type of ' + type);
+              break;
+          }
+        }
+        out = out.concat(dict.opcodes[key]);
+      }
+      return out;
+    },
+    compileStringIndex: function CFFCompiler_compileStringIndex(strings) {
+      var stringIndex = new CFFIndex();
+      for (var i = 0, ii = strings.length; i < ii; ++i) {
+        stringIndex.add(stringToBytes(strings[i]));
+      }
+      return this.compileIndex(stringIndex);
+    },
+    compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {
+      var globalSubrIndex = this.cff.globalSubrIndex;
+      this.out.writeByteArray(this.compileIndex(globalSubrIndex));
+    },
+    compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {
+      return this.compileIndex(charStrings);
+    },
+    compileCharset: function CFFCompiler_compileCharset(charset) {
+      return this.compileTypedArray(charset.raw);
+    },
+    compileEncoding: function CFFCompiler_compileEncoding(encoding) {
+      return this.compileTypedArray(encoding.raw);
+    },
+    compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {
+      return this.compileTypedArray(fdSelect);
+    },
+    compileTypedArray: function CFFCompiler_compileTypedArray(data) {
+      var out = [];
+      for (var i = 0, ii = data.length; i < ii; ++i) {
+        out[i] = data[i];
+      }
+      return out;
+    },
+    compileIndex: function CFFCompiler_compileIndex(index, trackers) {
+      trackers = trackers || [];
+      var objects = index.objects;
+      // First 2 bytes contains the number of objects contained into this index
+      var count = objects.length;
+
+      // If there is no object, just create an index. This technically
+      // should just be [0, 0] but OTS has an issue with that.
+      if (count === 0) {
+        return [0, 0, 0];
+      }
+
+      var data = [(count >> 8) & 0xFF, count & 0xff];
+
+      var lastOffset = 1, i;
+      for (i = 0; i < count; ++i) {
+        lastOffset += objects[i].length;
+      }
+
+      var offsetSize;
+      if (lastOffset < 0x100) {
+        offsetSize = 1;
+      } else if (lastOffset < 0x10000) {
+        offsetSize = 2;
+      } else if (lastOffset < 0x1000000) {
+        offsetSize = 3;
+      } else {
+        offsetSize = 4;
+      }
+
+      // Next byte contains the offset size use to reference object in the file
+      data.push(offsetSize);
+
+      // Add another offset after this one because we need a new offset
+      var relativeOffset = 1;
+      for (i = 0; i < count + 1; i++) {
+        if (offsetSize === 1) {
+          data.push(relativeOffset & 0xFF);
+        } else if (offsetSize === 2) {
+          data.push((relativeOffset >> 8) & 0xFF,
+                     relativeOffset & 0xFF);
+        } else if (offsetSize === 3) {
+          data.push((relativeOffset >> 16) & 0xFF,
+                    (relativeOffset >> 8) & 0xFF,
+                     relativeOffset & 0xFF);
+        } else {
+          data.push((relativeOffset >>> 24) & 0xFF,
+                    (relativeOffset >> 16) & 0xFF,
+                    (relativeOffset >> 8) & 0xFF,
+                     relativeOffset & 0xFF);
+        }
+
+        if (objects[i]) {
+          relativeOffset += objects[i].length;
+        }
+      }
+
+      for (i = 0; i < count; i++) {
+        // Notify the tracker where the object will be offset in the data.
+        if (trackers[i]) {
+          trackers[i].offset(data.length);
+        }
+        for (var j = 0, jj = objects[i].length; j < jj; j++) {
+          data.push(objects[i][j]);
+        }
+      }
+      return data;
+    }
+  };
+  return CFFCompiler;
+})();
+
+// Workaround for seac on Windows.
+(function checkSeacSupport() {
+  if (/Windows/.test(navigator.userAgent)) {
+    SEAC_ANALYSIS_ENABLED = true;
+  }
+})();
+
+// Workaround for Private Use Area characters in Chrome on Windows
+// http://code.google.com/p/chromium/issues/detail?id=122465
+// https://github.com/mozilla/pdf.js/issues/1689
+(function checkChromeWindows() {
+  if (/Windows.*Chrome/.test(navigator.userAgent)) {
+    SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = true;
+  }
+})();
+
+
+var FontRendererFactory = (function FontRendererFactoryClosure() {
+  function getLong(data, offset) {
+    return (data[offset] << 24) | (data[offset + 1] << 16) |
+           (data[offset + 2] << 8) | data[offset + 3];
+  }
+
+  function getUshort(data, offset) {
+    return (data[offset] << 8) | data[offset + 1];
+  }
+
+  function parseCmap(data, start, end) {
+    var offset = (getUshort(data, start + 2) === 1 ?
+                  getLong(data, start + 8) : getLong(data, start + 16));
+    var format = getUshort(data, start + offset);
+    var length, ranges, p, i;
+    if (format === 4) {
+      length = getUshort(data, start + offset + 2);
+      var segCount = getUshort(data, start + offset + 6) >> 1;
+      p = start + offset + 14;
+      ranges = [];
+      for (i = 0; i < segCount; i++, p += 2) {
+        ranges[i] = {end: getUshort(data, p)};
+      }
+      p += 2;
+      for (i = 0; i < segCount; i++, p += 2) {
+        ranges[i].start = getUshort(data, p);
+      }
+      for (i = 0; i < segCount; i++, p += 2) {
+        ranges[i].idDelta = getUshort(data, p);
+      }
+      for (i = 0; i < segCount; i++, p += 2) {
+        var idOffset = getUshort(data, p);
+        if (idOffset === 0) {
+          continue;
+        }
+        ranges[i].ids = [];
+        for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {
+          ranges[i].ids[j] = getUshort(data, p + idOffset);
+          idOffset += 2;
+        }
+      }
+      return ranges;
+    } else if (format === 12) {
+      length = getLong(data, start + offset + 4);
+      var groups = getLong(data, start + offset + 12);
+      p = start + offset + 16;
+      ranges = [];
+      for (i = 0; i < groups; i++) {
+        ranges.push({
+          start: getLong(data, p),
+          end: getLong(data, p + 4),
+          idDelta: getLong(data, p + 8) - getLong(data, p)
+        });
+        p += 12;
+      }
+      return ranges;
+    }
+    error('not supported cmap: ' + format);
+  }
+
+  function parseCff(data, start, end) {
+    var properties = {};
+    var parser = new CFFParser(new Stream(data, start, end - start),
+                               properties);
+    var cff = parser.parse();
+    return {
+      glyphs: cff.charStrings.objects,
+      subrs: (cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex &&
+              cff.topDict.privateDict.subrsIndex.objects),
+      gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects
+    };
+  }
+
+  function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {
+    var itemSize, itemDecode;
+    if (isGlyphLocationsLong) {
+      itemSize = 4;
+      itemDecode = function fontItemDecodeLong(data, offset) {
+        return (data[offset] << 24) | (data[offset + 1] << 16) |
+               (data[offset + 2] << 8) | data[offset + 3];
+      };
+    } else {
+      itemSize = 2;
+      itemDecode = function fontItemDecode(data, offset) {
+        return (data[offset] << 9) | (data[offset + 1] << 1);
+      };
+    }
+    var glyphs = [];
+    var startOffset = itemDecode(loca, 0);
+    for (var j = itemSize; j < loca.length; j += itemSize) {
+      var endOffset = itemDecode(loca, j);
+      glyphs.push(glyf.subarray(startOffset, endOffset));
+      startOffset = endOffset;
+    }
+    return glyphs;
+  }
+
+  function lookupCmap(ranges, unicode) {
+    var code = unicode.charCodeAt(0);
+    var l = 0, r = ranges.length - 1;
+    while (l < r) {
+      var c = (l + r + 1) >> 1;
+      if (code < ranges[c].start) {
+        r = c - 1;
+      } else {
+        l = c;
+      }
+    }
+    if (ranges[l].start <= code && code <= ranges[l].end) {
+      return (ranges[l].idDelta + (ranges[l].ids ?
+        ranges[l].ids[code - ranges[l].start] : code)) & 0xFFFF;
+    }
+    return 0;
+  }
+
+  function compileGlyf(code, js, font) {
+    function moveTo(x, y) {
+      js.push('c.moveTo(' + x + ',' + y + ');');
+    }
+    function lineTo(x, y) {
+      js.push('c.lineTo(' + x + ',' + y + ');');
+    }
+    function quadraticCurveTo(xa, ya, x, y) {
+      js.push('c.quadraticCurveTo(' + xa + ',' + ya + ',' +
+                                   x + ',' + y + ');');
+    }
+
+    var i = 0;
+    var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;
+    var flags;
+    var x = 0, y = 0;
+    i += 10;
+    if (numberOfContours < 0) {
+      // composite glyph
+      do {
+        flags = (code[i] << 8) | code[i + 1];
+        var glyphIndex = (code[i + 2] << 8) | code[i + 3];
+        i += 4;
+        var arg1, arg2;
+        if ((flags & 0x01)) {
+          arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;
+          arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;
+          i += 4;
+        } else {
+          arg1 = code[i++]; arg2 = code[i++];
+        }
+        if ((flags & 0x02)) {
+           x = arg1;
+           y = arg2;
+        } else {
+           x = 0; y = 0; // TODO "they are points" ?
+        }
+        var scaleX = 1, scaleY = 1, scale01 = 0, scale10 = 0;
+        if ((flags & 0x08)) {
+          scaleX =
+          scaleY = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;
+          i += 2;
+        } else if ((flags & 0x40)) {
+          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;
+          scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;
+          i += 4;
+        } else if ((flags & 0x80)) {
+          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;
+          scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;
+          scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;
+          scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;
+          i += 8;
+        }
+        var subglyph = font.glyphs[glyphIndex];
+        if (subglyph) {
+          js.push('c.save();');
+          js.push('c.transform(' + scaleX + ',' + scale01 + ',' +
+                  scale10 + ',' + scaleY + ',' + x + ',' + y + ');');
+          compileGlyf(subglyph, js, font);
+          js.push('c.restore();');
+        }
+      } while ((flags & 0x20));
+    } else {
+      // simple glyph
+      var endPtsOfContours = [];
+      var j, jj;
+      for (j = 0; j < numberOfContours; j++) {
+        endPtsOfContours.push((code[i] << 8) | code[i + 1]);
+        i += 2;
+      }
+      var instructionLength = (code[i] << 8) | code[i + 1];
+      i += 2 + instructionLength; // skipping the instructions
+      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;
+      var points = [];
+      while (points.length < numberOfPoints) {
+        flags = code[i++];
+        var repeat = 1;
+        if ((flags & 0x08)) {
+          repeat += code[i++];
+        }
+        while (repeat-- > 0) {
+          points.push({flags: flags});
+        }
+      }
+      for (j = 0; j < numberOfPoints; j++) {
+        switch (points[j].flags & 0x12) {
+          case 0x00:
+            x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;
+            i += 2;
+            break;
+          case 0x02:
+            x -= code[i++];
+            break;
+          case 0x12:
+            x += code[i++];
+            break;
+        }
+        points[j].x = x;
+      }
+      for (j = 0; j < numberOfPoints; j++) {
+        switch (points[j].flags & 0x24) {
+          case 0x00:
+            y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;
+            i += 2;
+            break;
+          case 0x04:
+            y -= code[i++];
+            break;
+          case 0x24:
+            y += code[i++];
+            break;
+        }
+        points[j].y = y;
+      }
+
+      var startPoint = 0;
+      for (i = 0; i < numberOfContours; i++) {
+        var endPoint = endPtsOfContours[i];
+        // contours might have implicit points, which is located in the middle
+        // between two neighboring off-curve points
+        var contour = points.slice(startPoint, endPoint + 1);
+        if ((contour[0].flags & 1)) {
+          contour.push(contour[0]); // using start point at the contour end
+        } else if ((contour[contour.length - 1].flags & 1)) {
+          // first is off-curve point, trying to use one from the end
+          contour.unshift(contour[contour.length - 1]);
+        } else {
+          // start and end are off-curve points, creating implicit one
+          var p = {
+            flags: 1,
+            x: (contour[0].x + contour[contour.length - 1].x) / 2,
+            y: (contour[0].y + contour[contour.length - 1].y) / 2
+          };
+          contour.unshift(p);
+          contour.push(p);
+        }
+        moveTo(contour[0].x, contour[0].y);
+        for (j = 1, jj = contour.length; j < jj; j++) {
+          if ((contour[j].flags & 1)) {
+            lineTo(contour[j].x, contour[j].y);
+          } else if ((contour[j + 1].flags & 1)){
+            quadraticCurveTo(contour[j].x, contour[j].y,
+                             contour[j + 1].x, contour[j + 1].y);
+            j++;
+          } else {
+            quadraticCurveTo(contour[j].x, contour[j].y,
+              (contour[j].x + contour[j + 1].x) / 2,
+              (contour[j].y + contour[j + 1].y) / 2);
+          }
+        }
+        startPoint = endPoint + 1;
+      }
+    }
+  }
+
+  function compileCharString(code, js, font) {
+    var stack = [];
+    var x = 0, y = 0;
+    var stems = 0;
+
+    function moveTo(x, y) {
+      js.push('c.moveTo(' + x + ',' + y + ');');
+    }
+    function lineTo(x, y) {
+      js.push('c.lineTo(' + x + ',' + y + ');');
+    }
+    function bezierCurveTo(x1, y1, x2, y2, x, y) {
+      js.push('c.bezierCurveTo(' + x1 + ',' + y1 + ',' + x2 + ',' + y2 + ',' +
+                                   x + ',' + y + ');');
+    }
+
+    function parse(code) {
+      var i = 0;
+      while (i < code.length) {
+        var stackClean = false;
+        var v = code[i++];
+        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;
+        switch (v) {
+          case 1: // hstem
+            stems += stack.length >> 1;
+            stackClean = true;
+            break;
+          case 3: // vstem
+            stems += stack.length >> 1;
+            stackClean = true;
+            break;
+          case 4: // vmoveto
+            y += stack.pop();
+            moveTo(x, y);
+            stackClean = true;
+            break;
+          case 5: // rlineto
+            while (stack.length > 0) {
+              x += stack.shift();
+              y += stack.shift();
+              lineTo(x, y);
+            }
+            break;
+          case 6: // hlineto
+            while (stack.length > 0) {
+              x += stack.shift();
+              lineTo(x, y);
+              if (stack.length === 0) {
+                break;
+              }
+              y += stack.shift();
+              lineTo(x, y);
+            }
+            break;
+          case 7: // vlineto
+            while (stack.length > 0) {
+              y += stack.shift();
+              lineTo(x, y);
+              if (stack.length === 0) {
+                break;
+              }
+              x += stack.shift();
+              lineTo(x, y);
+            }
+            break;
+          case 8: // rrcurveto
+            while (stack.length > 0) {
+              xa = x + stack.shift(); ya = y + stack.shift();
+              xb = xa + stack.shift(); yb = ya + stack.shift();
+              x = xb + stack.shift(); y = yb + stack.shift();
+              bezierCurveTo(xa, ya, xb, yb, x, y);
+            }
+            break;
+          case 10: // callsubr
+            n = stack.pop() + font.subrsBias;
+            subrCode = font.subrs[n];
+            if (subrCode) {
+              parse(subrCode);
+            }
+            break;
+          case 11: // return
+            return;
+          case 12:
+            v = code[i++];
+            switch (v) {
+              case 34: // flex
+                xa = x + stack.shift();
+                xb = xa + stack.shift(); y1 = y + stack.shift();
+                x = xb + stack.shift();
+                bezierCurveTo(xa, y, xb, y1, x, y1);
+                xa = x + stack.shift();
+                xb = xa + stack.shift();
+                x = xb + stack.shift();
+                bezierCurveTo(xa, y1, xb, y, x, y);
+                break;
+              case 35: // flex
+                xa = x + stack.shift(); ya = y + stack.shift();
+                xb = xa + stack.shift(); yb = ya + stack.shift();
+                x = xb + stack.shift(); y = yb + stack.shift();
+                bezierCurveTo(xa, ya, xb, yb, x, y);
+                xa = x + stack.shift(); ya = y + stack.shift();
+                xb = xa + stack.shift(); yb = ya + stack.shift();
+                x = xb + stack.shift(); y = yb + stack.shift();
+                bezierCurveTo(xa, ya, xb, yb, x, y);
+                stack.pop(); // fd
+                break;
+              case 36: // hflex1
+                xa = x + stack.shift(); y1 = y + stack.shift();
+                xb = xa + stack.shift(); y2 = y1 + stack.shift();
+                x = xb + stack.shift();
+                bezierCurveTo(xa, y1, xb, y2, x, y2);
+                xa = x + stack.shift();
+                xb = xa + stack.shift(); y3 = y2 + stack.shift();
+                x = xb + stack.shift();
+                bezierCurveTo(xa, y2, xb, y3, x, y);
+                break;
+              case 37: // flex1
+                var x0 = x, y0 = y;
+                xa = x + stack.shift(); ya = y + stack.shift();
+                xb = xa + stack.shift(); yb = ya + stack.shift();
+                x = xb + stack.shift(); y = yb + stack.shift();
+                bezierCurveTo(xa, ya, xb, yb, x, y);
+                xa = x + stack.shift(); ya = y + stack.shift();
+                xb = xa + stack.shift(); yb = ya + stack.shift();
+                x = xb; y = yb;
+                if (Math.abs(x - x0) > Math.abs(y - y0)) {
+                  x += stack.shift();
+                } else  {
+                  y += stack.shift();
+                }
+                bezierCurveTo(xa, ya, xb, yb, x, y);
+                break;
+              default:
+                error('unknown operator: 12 ' + v);
+            }
+            break;
+          case 14: // endchar
+            if (stack.length >= 4) {
+              var achar = stack.pop();
+              var bchar = stack.pop();
+              y = stack.pop();
+              x = stack.pop();
+              js.push('c.save();');
+              js.push('c.translate('+ x + ',' + y + ');');
+              var gid = lookupCmap(font.cmap, String.fromCharCode(
+                font.glyphNameMap[Encodings.StandardEncoding[achar]]));
+              compileCharString(font.glyphs[gid], js, font);
+              js.push('c.restore();');
+
+              gid = lookupCmap(font.cmap, String.fromCharCode(
+                font.glyphNameMap[Encodings.StandardEncoding[bchar]]));
+              compileCharString(font.glyphs[gid], js, font);
+            }
+            return;
+          case 18: // hstemhm
+            stems += stack.length >> 1;
+            stackClean = true;
+            break;
+          case 19: // hintmask
+            stems += stack.length >> 1;
+            i += (stems + 7) >> 3;
+            stackClean = true;
+            break;
+          case 20: // cntrmask
+            stems += stack.length >> 1;
+            i += (stems + 7) >> 3;
+            stackClean = true;
+            break;
+          case 21: // rmoveto
+            y += stack.pop();
+            x += stack.pop();
+            moveTo(x, y);
+            stackClean = true;
+            break;
+          case 22: // hmoveto
+            x += stack.pop();
+            moveTo(x, y);
+            stackClean = true;
+            break;
+          case 23: // vstemhm
+            stems += stack.length >> 1;
+            stackClean = true;
+            break;
+          case 24: // rcurveline
+            while (stack.length > 2) {
+              xa = x + stack.shift(); ya = y + stack.shift();
+              xb = xa + stack.shift(); yb = ya + stack.shift();
+              x = xb + stack.shift(); y = yb + stack.shift();
+              bezierCurveTo(xa, ya, xb, yb, x, y);
+            }
+            x += stack.shift();
+            y += stack.shift();
+            lineTo(x, y);
+            break;
+          case 25: // rlinecurve
+            while (stack.length > 6) {
+              x += stack.shift();
+              y += stack.shift();
+              lineTo(x, y);
+            }
+            xa = x + stack.shift(); ya = y + stack.shift();
+            xb = xa + stack.shift(); yb = ya + stack.shift();
+            x = xb + stack.shift(); y = yb + stack.shift();
+            bezierCurveTo(xa, ya, xb, yb, x, y);
+            break;
+          case 26: // vvcurveto
+            if (stack.length % 2) {
+              x += stack.shift();
+            }
+            while (stack.length > 0) {
+              xa = x; ya = y + stack.shift();
+              xb = xa + stack.shift(); yb = ya + stack.shift();
+              x = xb; y = yb + stack.shift();
+              bezierCurveTo(xa, ya, xb, yb, x, y);
+            }
+            break;
+          case 27: // hhcurveto
+            if (stack.length % 2) {
+              y += stack.shift();
+            }
+            while (stack.length > 0) {
+              xa = x + stack.shift(); ya = y;
+              xb = xa + stack.shift(); yb = ya + stack.shift();
+              x = xb + stack.shift(); y = yb;
+              bezierCurveTo(xa, ya, xb, yb, x, y);
+            }
+            break;
+          case 28:
+            stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);
+            i += 2;
+            break;
+          case 29: // callgsubr
+            n = stack.pop() + font.gsubrsBias;
+            subrCode = font.gsubrs[n];
+            if (subrCode) {
+              parse(subrCode);
+            }
+            break;
+          case 30: // vhcurveto
+            while (stack.length > 0) {
+              xa = x; ya = y + stack.shift();
+              xb = xa + stack.shift(); yb = ya + stack.shift();
+              x = xb + stack.shift();
+              y = yb + (stack.length === 1 ? stack.shift() : 0);
+              bezierCurveTo(xa, ya, xb, yb, x, y);
+              if (stack.length === 0) {
+                break;
+              }
+
+              xa = x + stack.shift(); ya = y;
+              xb = xa + stack.shift(); yb = ya + stack.shift();
+              y = yb + stack.shift();
+              x = xb + (stack.length === 1 ? stack.shift() : 0);
+              bezierCurveTo(xa, ya, xb, yb, x, y);
+            }
+            break;
+          case 31: // hvcurveto
+            while (stack.length > 0) {
+              xa = x + stack.shift(); ya = y;
+              xb = xa + stack.shift(); yb = ya + stack.shift();
+              y = yb + stack.shift();
+              x = xb + (stack.length === 1 ? stack.shift() : 0);
+              bezierCurveTo(xa, ya, xb, yb, x, y);
+              if (stack.length === 0) {
+                break;
+              }
+
+              xa = x; ya = y + stack.shift();
+              xb = xa + stack.shift(); yb = ya + stack.shift();
+              x = xb + stack.shift();
+              y = yb + (stack.length === 1 ? stack.shift() : 0);
+              bezierCurveTo(xa, ya, xb, yb, x, y);
+            }
+            break;
+          default:
+            if (v < 32) {
+              error('unknown operator: ' + v);
+            }
+            if (v < 247) {
+              stack.push(v - 139);
+            } else if (v < 251) {
+              stack.push((v - 247) * 256 + code[i++] + 108);
+            } else if (v < 255) {
+              stack.push(-(v - 251) * 256 - code[i++] - 108);
+            } else {
+              stack.push(((code[i] << 24) | (code[i + 1] << 16) |
+                         (code[i + 2] << 8) | code[i + 3]) / 65536);
+              i += 4;
+            }
+            break;
+        }
+        if (stackClean) {
+          stack.length = 0;
+        }
+      }
+    }
+    parse(code);
+  }
+
+  var noop = '';
+
+  function CompiledFont(fontMatrix) {
+    this.compiledGlyphs = {};
+    this.fontMatrix = fontMatrix;
+  }
+  CompiledFont.prototype = {
+    getPathJs: function (unicode) {
+      var gid = lookupCmap(this.cmap, unicode);
+      var fn = this.compiledGlyphs[gid];
+      if (!fn) {
+        this.compiledGlyphs[gid] = fn = this.compileGlyph(this.glyphs[gid]);
+      }
+      return fn;
+    },
+
+    compileGlyph: function (code) {
+      if (!code || code.length === 0 || code[0] === 14) {
+        return noop;
+      }
+
+      var js = [];
+      js.push('c.save();');
+      js.push('c.transform(' + this.fontMatrix.join(',') + ');');
+      js.push('c.scale(size, -size);');
+
+      this.compileGlyphImpl(code, js);
+
+      js.push('c.restore();');
+
+      return js.join('\n');
+    },
+
+    compileGlyphImpl: function () {
+      error('Children classes should implement this.');
+    },
+
+    hasBuiltPath: function (unicode) {
+      var gid = lookupCmap(this.cmap, unicode);
+      return gid in this.compiledGlyphs;
+    }
+  };
+
+  function TrueTypeCompiled(glyphs, cmap, fontMatrix) {
+    fontMatrix = fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0];
+    CompiledFont.call(this, fontMatrix);
+
+    this.glyphs = glyphs;
+    this.cmap = cmap;
+
+    this.compiledGlyphs = [];
+  }
+
+  Util.inherit(TrueTypeCompiled, CompiledFont, {
+    compileGlyphImpl: function (code, js) {
+      compileGlyf(code, js, this);
+    }
+  });
+
+  function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) {
+    fontMatrix = fontMatrix || [0.001, 0, 0, 0.001, 0, 0];
+    CompiledFont.call(this, fontMatrix);
+    this.glyphs = cffInfo.glyphs;
+    this.gsubrs = cffInfo.gsubrs || [];
+    this.subrs = cffInfo.subrs || [];
+    this.cmap = cmap;
+    this.glyphNameMap = glyphNameMap || GlyphsUnicode;
+
+    this.compiledGlyphs = [];
+    this.gsubrsBias = (this.gsubrs.length < 1240 ?
+                       107 : (this.gsubrs.length < 33900 ? 1131 : 32768));
+    this.subrsBias = (this.subrs.length < 1240 ?
+                      107 : (this.subrs.length < 33900 ? 1131 : 32768));
+  }
+
+  Util.inherit(Type2Compiled, CompiledFont, {
+    compileGlyphImpl: function (code, js) {
+      compileCharString(code, js, this);
+    }
+  });
+
+
+  return {
+    create: function FontRendererFactory_create(font) {
+      var data = new Uint8Array(font.data);
+      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;
+      var numTables = getUshort(data, 4);
+      for (var i = 0, p = 12; i < numTables; i++, p += 16) {
+        var tag = bytesToString(data.subarray(p, p + 4));
+        var offset = getLong(data, p + 8);
+        var length = getLong(data, p + 12);
+        switch (tag) {
+          case 'cmap':
+            cmap = parseCmap(data, offset, offset + length);
+            break;
+          case 'glyf':
+            glyf = data.subarray(offset, offset + length);
+            break;
+          case 'loca':
+            loca = data.subarray(offset, offset + length);
+            break;
+          case 'head':
+            unitsPerEm = getUshort(data, offset + 18);
+            indexToLocFormat = getUshort(data, offset + 50);
+            break;
+          case 'CFF ':
+            cff = parseCff(data, offset, offset + length);
+            break;
+        }
+      }
+
+      if (glyf) {
+        var fontMatrix = (!unitsPerEm ? font.fontMatrix :
+                          [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]);
+        return new TrueTypeCompiled(
+          parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);
+      } else {
+        return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);
+      }
+    }
+  };
+})();
+
+
+var GlyphsUnicode = {
+  A: 0x0041,
+  AE: 0x00C6,
+  AEacute: 0x01FC,
+  AEmacron: 0x01E2,
+  AEsmall: 0xF7E6,
+  Aacute: 0x00C1,
+  Aacutesmall: 0xF7E1,
+  Abreve: 0x0102,
+  Abreveacute: 0x1EAE,
+  Abrevecyrillic: 0x04D0,
+  Abrevedotbelow: 0x1EB6,
+  Abrevegrave: 0x1EB0,
+  Abrevehookabove: 0x1EB2,
+  Abrevetilde: 0x1EB4,
+  Acaron: 0x01CD,
+  Acircle: 0x24B6,
+  Acircumflex: 0x00C2,
+  Acircumflexacute: 0x1EA4,
+  Acircumflexdotbelow: 0x1EAC,
+  Acircumflexgrave: 0x1EA6,
+  Acircumflexhookabove: 0x1EA8,
+  Acircumflexsmall: 0xF7E2,
+  Acircumflextilde: 0x1EAA,
+  Acute: 0xF6C9,
+  Acutesmall: 0xF7B4,
+  Acyrillic: 0x0410,
+  Adblgrave: 0x0200,
+  Adieresis: 0x00C4,
+  Adieresiscyrillic: 0x04D2,
+  Adieresismacron: 0x01DE,
+  Adieresissmall: 0xF7E4,
+  Adotbelow: 0x1EA0,
+  Adotmacron: 0x01E0,
+  Agrave: 0x00C0,
+  Agravesmall: 0xF7E0,
+  Ahookabove: 0x1EA2,
+  Aiecyrillic: 0x04D4,
+  Ainvertedbreve: 0x0202,
+  Alpha: 0x0391,
+  Alphatonos: 0x0386,
+  Amacron: 0x0100,
+  Amonospace: 0xFF21,
+  Aogonek: 0x0104,
+  Aring: 0x00C5,
+  Aringacute: 0x01FA,
+  Aringbelow: 0x1E00,
+  Aringsmall: 0xF7E5,
+  Asmall: 0xF761,
+  Atilde: 0x00C3,
+  Atildesmall: 0xF7E3,
+  Aybarmenian: 0x0531,
+  B: 0x0042,
+  Bcircle: 0x24B7,
+  Bdotaccent: 0x1E02,
+  Bdotbelow: 0x1E04,
+  Becyrillic: 0x0411,
+  Benarmenian: 0x0532,
+  Beta: 0x0392,
+  Bhook: 0x0181,
+  Blinebelow: 0x1E06,
+  Bmonospace: 0xFF22,
+  Brevesmall: 0xF6F4,
+  Bsmall: 0xF762,
+  Btopbar: 0x0182,
+  C: 0x0043,
+  Caarmenian: 0x053E,
+  Cacute: 0x0106,
+  Caron: 0xF6CA,
+  Caronsmall: 0xF6F5,
+  Ccaron: 0x010C,
+  Ccedilla: 0x00C7,
+  Ccedillaacute: 0x1E08,
+  Ccedillasmall: 0xF7E7,
+  Ccircle: 0x24B8,
+  Ccircumflex: 0x0108,
+  Cdot: 0x010A,
+  Cdotaccent: 0x010A,
+  Cedillasmall: 0xF7B8,
+  Chaarmenian: 0x0549,
+  Cheabkhasiancyrillic: 0x04BC,
+  Checyrillic: 0x0427,
+  Chedescenderabkhasiancyrillic: 0x04BE,
+  Chedescendercyrillic: 0x04B6,
+  Chedieresiscyrillic: 0x04F4,
+  Cheharmenian: 0x0543,
+  Chekhakassiancyrillic: 0x04CB,
+  Cheverticalstrokecyrillic: 0x04B8,
+  Chi: 0x03A7,
+  Chook: 0x0187,
+  Circumflexsmall: 0xF6F6,
+  Cmonospace: 0xFF23,
+  Coarmenian: 0x0551,
+  Csmall: 0xF763,
+  D: 0x0044,
+  DZ: 0x01F1,
+  DZcaron: 0x01C4,
+  Daarmenian: 0x0534,
+  Dafrican: 0x0189,
+  Dcaron: 0x010E,
+  Dcedilla: 0x1E10,
+  Dcircle: 0x24B9,
+  Dcircumflexbelow: 0x1E12,
+  Dcroat: 0x0110,
+  Ddotaccent: 0x1E0A,
+  Ddotbelow: 0x1E0C,
+  Decyrillic: 0x0414,
+  Deicoptic: 0x03EE,
+  Delta: 0x2206,
+  Deltagreek: 0x0394,
+  Dhook: 0x018A,
+  Dieresis: 0xF6CB,
+  DieresisAcute: 0xF6CC,
+  DieresisGrave: 0xF6CD,
+  Dieresissmall: 0xF7A8,
+  Digammagreek: 0x03DC,
+  Djecyrillic: 0x0402,
+  Dlinebelow: 0x1E0E,
+  Dmonospace: 0xFF24,
+  Dotaccentsmall: 0xF6F7,
+  Dslash: 0x0110,
+  Dsmall: 0xF764,
+  Dtopbar: 0x018B,
+  Dz: 0x01F2,
+  Dzcaron: 0x01C5,
+  Dzeabkhasiancyrillic: 0x04E0,
+  Dzecyrillic: 0x0405,
+  Dzhecyrillic: 0x040F,
+  E: 0x0045,
+  Eacute: 0x00C9,
+  Eacutesmall: 0xF7E9,
+  Ebreve: 0x0114,
+  Ecaron: 0x011A,
+  Ecedillabreve: 0x1E1C,
+  Echarmenian: 0x0535,
+  Ecircle: 0x24BA,
+  Ecircumflex: 0x00CA,
+  Ecircumflexacute: 0x1EBE,
+  Ecircumflexbelow: 0x1E18,
+  Ecircumflexdotbelow: 0x1EC6,
+  Ecircumflexgrave: 0x1EC0,
+  Ecircumflexhookabove: 0x1EC2,
+  Ecircumflexsmall: 0xF7EA,
+  Ecircumflextilde: 0x1EC4,
+  Ecyrillic: 0x0404,
+  Edblgrave: 0x0204,
+  Edieresis: 0x00CB,
+  Edieresissmall: 0xF7EB,
+  Edot: 0x0116,
+  Edotaccent: 0x0116,
+  Edotbelow: 0x1EB8,
+  Efcyrillic: 0x0424,
+  Egrave: 0x00C8,
+  Egravesmall: 0xF7E8,
+  Eharmenian: 0x0537,
+  Ehookabove: 0x1EBA,
+  Eightroman: 0x2167,
+  Einvertedbreve: 0x0206,
+  Eiotifiedcyrillic: 0x0464,
+  Elcyrillic: 0x041B,
+  Elevenroman: 0x216A,
+  Emacron: 0x0112,
+  Emacronacute: 0x1E16,
+  Emacrongrave: 0x1E14,
+  Emcyrillic: 0x041C,
+  Emonospace: 0xFF25,
+  Encyrillic: 0x041D,
+  Endescendercyrillic: 0x04A2,
+  Eng: 0x014A,
+  Enghecyrillic: 0x04A4,
+  Enhookcyrillic: 0x04C7,
+  Eogonek: 0x0118,
+  Eopen: 0x0190,
+  Epsilon: 0x0395,
+  Epsilontonos: 0x0388,
+  Ercyrillic: 0x0420,
+  Ereversed: 0x018E,
+  Ereversedcyrillic: 0x042D,
+  Escyrillic: 0x0421,
+  Esdescendercyrillic: 0x04AA,
+  Esh: 0x01A9,
+  Esmall: 0xF765,
+  Eta: 0x0397,
+  Etarmenian: 0x0538,
+  Etatonos: 0x0389,
+  Eth: 0x00D0,
+  Ethsmall: 0xF7F0,
+  Etilde: 0x1EBC,
+  Etildebelow: 0x1E1A,
+  Euro: 0x20AC,
+  Ezh: 0x01B7,
+  Ezhcaron: 0x01EE,
+  Ezhreversed: 0x01B8,
+  F: 0x0046,
+  Fcircle: 0x24BB,
+  Fdotaccent: 0x1E1E,
+  Feharmenian: 0x0556,
+  Feicoptic: 0x03E4,
+  Fhook: 0x0191,
+  Fitacyrillic: 0x0472,
+  Fiveroman: 0x2164,
+  Fmonospace: 0xFF26,
+  Fourroman: 0x2163,
+  Fsmall: 0xF766,
+  G: 0x0047,
+  GBsquare: 0x3387,
+  Gacute: 0x01F4,
+  Gamma: 0x0393,
+  Gammaafrican: 0x0194,
+  Gangiacoptic: 0x03EA,
+  Gbreve: 0x011E,
+  Gcaron: 0x01E6,
+  Gcedilla: 0x0122,
+  Gcircle: 0x24BC,
+  Gcircumflex: 0x011C,
+  Gcommaaccent: 0x0122,
+  Gdot: 0x0120,
+  Gdotaccent: 0x0120,
+  Gecyrillic: 0x0413,
+  Ghadarmenian: 0x0542,
+  Ghemiddlehookcyrillic: 0x0494,
+  Ghestrokecyrillic: 0x0492,
+  Gheupturncyrillic: 0x0490,
+  Ghook: 0x0193,
+  Gimarmenian: 0x0533,
+  Gjecyrillic: 0x0403,
+  Gmacron: 0x1E20,
+  Gmonospace: 0xFF27,
+  Grave: 0xF6CE,
+  Gravesmall: 0xF760,
+  Gsmall: 0xF767,
+  Gsmallhook: 0x029B,
+  Gstroke: 0x01E4,
+  H: 0x0048,
+  H18533: 0x25CF,
+  H18543: 0x25AA,
+  H18551: 0x25AB,
+  H22073: 0x25A1,
+  HPsquare: 0x33CB,
+  Haabkhasiancyrillic: 0x04A8,
+  Hadescendercyrillic: 0x04B2,
+  Hardsigncyrillic: 0x042A,
+  Hbar: 0x0126,
+  Hbrevebelow: 0x1E2A,
+  Hcedilla: 0x1E28,
+  Hcircle: 0x24BD,
+  Hcircumflex: 0x0124,
+  Hdieresis: 0x1E26,
+  Hdotaccent: 0x1E22,
+  Hdotbelow: 0x1E24,
+  Hmonospace: 0xFF28,
+  Hoarmenian: 0x0540,
+  Horicoptic: 0x03E8,
+  Hsmall: 0xF768,
+  Hungarumlaut: 0xF6CF,
+  Hungarumlautsmall: 0xF6F8,
+  Hzsquare: 0x3390,
+  I: 0x0049,
+  IAcyrillic: 0x042F,
+  IJ: 0x0132,
+  IUcyrillic: 0x042E,
+  Iacute: 0x00CD,
+  Iacutesmall: 0xF7ED,
+  Ibreve: 0x012C,
+  Icaron: 0x01CF,
+  Icircle: 0x24BE,
+  Icircumflex: 0x00CE,
+  Icircumflexsmall: 0xF7EE,
+  Icyrillic: 0x0406,
+  Idblgrave: 0x0208,
+  Idieresis: 0x00CF,
+  Idieresisacute: 0x1E2E,
+  Idieresiscyrillic: 0x04E4,
+  Idieresissmall: 0xF7EF,
+  Idot: 0x0130,
+  Idotaccent: 0x0130,
+  Idotbelow: 0x1ECA,
+  Iebrevecyrillic: 0x04D6,
+  Iecyrillic: 0x0415,
+  Ifraktur: 0x2111,
+  Igrave: 0x00CC,
+  Igravesmall: 0xF7EC,
+  Ihookabove: 0x1EC8,
+  Iicyrillic: 0x0418,
+  Iinvertedbreve: 0x020A,
+  Iishortcyrillic: 0x0419,
+  Imacron: 0x012A,
+  Imacroncyrillic: 0x04E2,
+  Imonospace: 0xFF29,
+  Iniarmenian: 0x053B,
+  Iocyrillic: 0x0401,
+  Iogonek: 0x012E,
+  Iota: 0x0399,
+  Iotaafrican: 0x0196,
+  Iotadieresis: 0x03AA,
+  Iotatonos: 0x038A,
+  Ismall: 0xF769,
+  Istroke: 0x0197,
+  Itilde: 0x0128,
+  Itildebelow: 0x1E2C,
+  Izhitsacyrillic: 0x0474,
+  Izhitsadblgravecyrillic: 0x0476,
+  J: 0x004A,
+  Jaarmenian: 0x0541,
+  Jcircle: 0x24BF,
+  Jcircumflex: 0x0134,
+  Jecyrillic: 0x0408,
+  Jheharmenian: 0x054B,
+  Jmonospace: 0xFF2A,
+  Jsmall: 0xF76A,
+  K: 0x004B,
+  KBsquare: 0x3385,
+  KKsquare: 0x33CD,
+  Kabashkircyrillic: 0x04A0,
+  Kacute: 0x1E30,
+  Kacyrillic: 0x041A,
+  Kadescendercyrillic: 0x049A,
+  Kahookcyrillic: 0x04C3,
+  Kappa: 0x039A,
+  Kastrokecyrillic: 0x049E,
+  Kaverticalstrokecyrillic: 0x049C,
+  Kcaron: 0x01E8,
+  Kcedilla: 0x0136,
+  Kcircle: 0x24C0,
+  Kcommaaccent: 0x0136,
+  Kdotbelow: 0x1E32,
+  Keharmenian: 0x0554,
+  Kenarmenian: 0x053F,
+  Khacyrillic: 0x0425,
+  Kheicoptic: 0x03E6,
+  Khook: 0x0198,
+  Kjecyrillic: 0x040C,
+  Klinebelow: 0x1E34,
+  Kmonospace: 0xFF2B,
+  Koppacyrillic: 0x0480,
+  Koppagreek: 0x03DE,
+  Ksicyrillic: 0x046E,
+  Ksmall: 0xF76B,
+  L: 0x004C,
+  LJ: 0x01C7,
+  LL: 0xF6BF,
+  Lacute: 0x0139,
+  Lambda: 0x039B,
+  Lcaron: 0x013D,
+  Lcedilla: 0x013B,
+  Lcircle: 0x24C1,
+  Lcircumflexbelow: 0x1E3C,
+  Lcommaaccent: 0x013B,
+  Ldot: 0x013F,
+  Ldotaccent: 0x013F,
+  Ldotbelow: 0x1E36,
+  Ldotbelowmacron: 0x1E38,
+  Liwnarmenian: 0x053C,
+  Lj: 0x01C8,
+  Ljecyrillic: 0x0409,
+  Llinebelow: 0x1E3A,
+  Lmonospace: 0xFF2C,
+  Lslash: 0x0141,
+  Lslashsmall: 0xF6F9,
+  Lsmall: 0xF76C,
+  M: 0x004D,
+  MBsquare: 0x3386,
+  Macron: 0xF6D0,
+  Macronsmall: 0xF7AF,
+  Macute: 0x1E3E,
+  Mcircle: 0x24C2,
+  Mdotaccent: 0x1E40,
+  Mdotbelow: 0x1E42,
+  Menarmenian: 0x0544,
+  Mmonospace: 0xFF2D,
+  Msmall: 0xF76D,
+  Mturned: 0x019C,
+  Mu: 0x039C,
+  N: 0x004E,
+  NJ: 0x01CA,
+  Nacute: 0x0143,
+  Ncaron: 0x0147,
+  Ncedilla: 0x0145,
+  Ncircle: 0x24C3,
+  Ncircumflexbelow: 0x1E4A,
+  Ncommaaccent: 0x0145,
+  Ndotaccent: 0x1E44,
+  Ndotbelow: 0x1E46,
+  Nhookleft: 0x019D,
+  Nineroman: 0x2168,
+  Nj: 0x01CB,
+  Njecyrillic: 0x040A,
+  Nlinebelow: 0x1E48,
+  Nmonospace: 0xFF2E,
+  Nowarmenian: 0x0546,
+  Nsmall: 0xF76E,
+  Ntilde: 0x00D1,
+  Ntildesmall: 0xF7F1,
+  Nu: 0x039D,
+  O: 0x004F,
+  OE: 0x0152,
+  OEsmall: 0xF6FA,
+  Oacute: 0x00D3,
+  Oacutesmall: 0xF7F3,
+  Obarredcyrillic: 0x04E8,
+  Obarreddieresiscyrillic: 0x04EA,
+  Obreve: 0x014E,
+  Ocaron: 0x01D1,
+  Ocenteredtilde: 0x019F,
+  Ocircle: 0x24C4,
+  Ocircumflex: 0x00D4,
+  Ocircumflexacute: 0x1ED0,
+  Ocircumflexdotbelow: 0x1ED8,
+  Ocircumflexgrave: 0x1ED2,
+  Ocircumflexhookabove: 0x1ED4,
+  Ocircumflexsmall: 0xF7F4,
+  Ocircumflextilde: 0x1ED6,
+  Ocyrillic: 0x041E,
+  Odblacute: 0x0150,
+  Odblgrave: 0x020C,
+  Odieresis: 0x00D6,
+  Odieresiscyrillic: 0x04E6,
+  Odieresissmall: 0xF7F6,
+  Odotbelow: 0x1ECC,
+  Ogoneksmall: 0xF6FB,
+  Ograve: 0x00D2,
+  Ogravesmall: 0xF7F2,
+  Oharmenian: 0x0555,
+  Ohm: 0x2126,
+  Ohookabove: 0x1ECE,
+  Ohorn: 0x01A0,
+  Ohornacute: 0x1EDA,
+  Ohorndotbelow: 0x1EE2,
+  Ohorngrave: 0x1EDC,
+  Ohornhookabove: 0x1EDE,
+  Ohorntilde: 0x1EE0,
+  Ohungarumlaut: 0x0150,
+  Oi: 0x01A2,
+  Oinvertedbreve: 0x020E,
+  Omacron: 0x014C,
+  Omacronacute: 0x1E52,
+  Omacrongrave: 0x1E50,
+  Omega: 0x2126,
+  Omegacyrillic: 0x0460,
+  Omegagreek: 0x03A9,
+  Omegaroundcyrillic: 0x047A,
+  Omegatitlocyrillic: 0x047C,
+  Omegatonos: 0x038F,
+  Omicron: 0x039F,
+  Omicrontonos: 0x038C,
+  Omonospace: 0xFF2F,
+  Oneroman: 0x2160,
+  Oogonek: 0x01EA,
+  Oogonekmacron: 0x01EC,
+  Oopen: 0x0186,
+  Oslash: 0x00D8,
+  Oslashacute: 0x01FE,
+  Oslashsmall: 0xF7F8,
+  Osmall: 0xF76F,
+  Ostrokeacute: 0x01FE,
+  Otcyrillic: 0x047E,
+  Otilde: 0x00D5,
+  Otildeacute: 0x1E4C,
+  Otildedieresis: 0x1E4E,
+  Otildesmall: 0xF7F5,
+  P: 0x0050,
+  Pacute: 0x1E54,
+  Pcircle: 0x24C5,
+  Pdotaccent: 0x1E56,
+  Pecyrillic: 0x041F,
+  Peharmenian: 0x054A,
+  Pemiddlehookcyrillic: 0x04A6,
+  Phi: 0x03A6,
+  Phook: 0x01A4,
+  Pi: 0x03A0,
+  Piwrarmenian: 0x0553,
+  Pmonospace: 0xFF30,
+  Psi: 0x03A8,
+  Psicyrillic: 0x0470,
+  Psmall: 0xF770,
+  Q: 0x0051,
+  Qcircle: 0x24C6,
+  Qmonospace: 0xFF31,
+  Qsmall: 0xF771,
+  R: 0x0052,
+  Raarmenian: 0x054C,
+  Racute: 0x0154,
+  Rcaron: 0x0158,
+  Rcedilla: 0x0156,
+  Rcircle: 0x24C7,
+  Rcommaaccent: 0x0156,
+  Rdblgrave: 0x0210,
+  Rdotaccent: 0x1E58,
+  Rdotbelow: 0x1E5A,
+  Rdotbelowmacron: 0x1E5C,
+  Reharmenian: 0x0550,
+  Rfraktur: 0x211C,
+  Rho: 0x03A1,
+  Ringsmall: 0xF6FC,
+  Rinvertedbreve: 0x0212,
+  Rlinebelow: 0x1E5E,
+  Rmonospace: 0xFF32,
+  Rsmall: 0xF772,
+  Rsmallinverted: 0x0281,
+  Rsmallinvertedsuperior: 0x02B6,
+  S: 0x0053,
+  SF010000: 0x250C,
+  SF020000: 0x2514,
+  SF030000: 0x2510,
+  SF040000: 0x2518,
+  SF050000: 0x253C,
+  SF060000: 0x252C,
+  SF070000: 0x2534,
+  SF080000: 0x251C,
+  SF090000: 0x2524,
+  SF100000: 0x2500,
+  SF110000: 0x2502,
+  SF190000: 0x2561,
+  SF200000: 0x2562,
+  SF210000: 0x2556,
+  SF220000: 0x2555,
+  SF230000: 0x2563,
+  SF240000: 0x2551,
+  SF250000: 0x2557,
+  SF260000: 0x255D,
+  SF270000: 0x255C,
+  SF280000: 0x255B,
+  SF360000: 0x255E,
+  SF370000: 0x255F,
+  SF380000: 0x255A,
+  SF390000: 0x2554,
+  SF400000: 0x2569,
+  SF410000: 0x2566,
+  SF420000: 0x2560,
+  SF430000: 0x2550,
+  SF440000: 0x256C,
+  SF450000: 0x2567,
+  SF460000: 0x2568,
+  SF470000: 0x2564,
+  SF480000: 0x2565,
+  SF490000: 0x2559,
+  SF500000: 0x2558,
+  SF510000: 0x2552,
+  SF520000: 0x2553,
+  SF530000: 0x256B,
+  SF540000: 0x256A,
+  Sacute: 0x015A,
+  Sacutedotaccent: 0x1E64,
+  Sampigreek: 0x03E0,
+  Scaron: 0x0160,
+  Scarondotaccent: 0x1E66,
+  Scaronsmall: 0xF6FD,
+  Scedilla: 0x015E,
+  Schwa: 0x018F,
+  Schwacyrillic: 0x04D8,
+  Schwadieresiscyrillic: 0x04DA,
+  Scircle: 0x24C8,
+  Scircumflex: 0x015C,
+  Scommaaccent: 0x0218,
+  Sdotaccent: 0x1E60,
+  Sdotbelow: 0x1E62,
+  Sdotbelowdotaccent: 0x1E68,
+  Seharmenian: 0x054D,
+  Sevenroman: 0x2166,
+  Shaarmenian: 0x0547,
+  Shacyrillic: 0x0428,
+  Shchacyrillic: 0x0429,
+  Sheicoptic: 0x03E2,
+  Shhacyrillic: 0x04BA,
+  Shimacoptic: 0x03EC,
+  Sigma: 0x03A3,
+  Sixroman: 0x2165,
+  Smonospace: 0xFF33,
+  Softsigncyrillic: 0x042C,
+  Ssmall: 0xF773,
+  Stigmagreek: 0x03DA,
+  T: 0x0054,
+  Tau: 0x03A4,
+  Tbar: 0x0166,
+  Tcaron: 0x0164,
+  Tcedilla: 0x0162,
+  Tcircle: 0x24C9,
+  Tcircumflexbelow: 0x1E70,
+  Tcommaaccent: 0x0162,
+  Tdotaccent: 0x1E6A,
+  Tdotbelow: 0x1E6C,
+  Tecyrillic: 0x0422,
+  Tedescendercyrillic: 0x04AC,
+  Tenroman: 0x2169,
+  Tetsecyrillic: 0x04B4,
+  Theta: 0x0398,
+  Thook: 0x01AC,
+  Thorn: 0x00DE,
+  Thornsmall: 0xF7FE,
+  Threeroman: 0x2162,
+  Tildesmall: 0xF6FE,
+  Tiwnarmenian: 0x054F,
+  Tlinebelow: 0x1E6E,
+  Tmonospace: 0xFF34,
+  Toarmenian: 0x0539,
+  Tonefive: 0x01BC,
+  Tonesix: 0x0184,
+  Tonetwo: 0x01A7,
+  Tretroflexhook: 0x01AE,
+  Tsecyrillic: 0x0426,
+  Tshecyrillic: 0x040B,
+  Tsmall: 0xF774,
+  Twelveroman: 0x216B,
+  Tworoman: 0x2161,
+  U: 0x0055,
+  Uacute: 0x00DA,
+  Uacutesmall: 0xF7FA,
+  Ubreve: 0x016C,
+  Ucaron: 0x01D3,
+  Ucircle: 0x24CA,
+  Ucircumflex: 0x00DB,
+  Ucircumflexbelow: 0x1E76,
+  Ucircumflexsmall: 0xF7FB,
+  Ucyrillic: 0x0423,
+  Udblacute: 0x0170,
+  Udblgrave: 0x0214,
+  Udieresis: 0x00DC,
+  Udieresisacute: 0x01D7,
+  Udieresisbelow: 0x1E72,
+  Udieresiscaron: 0x01D9,
+  Udieresiscyrillic: 0x04F0,
+  Udieresisgrave: 0x01DB,
+  Udieresismacron: 0x01D5,
+  Udieresissmall: 0xF7FC,
+  Udotbelow: 0x1EE4,
+  Ugrave: 0x00D9,
+  Ugravesmall: 0xF7F9,
+  Uhookabove: 0x1EE6,
+  Uhorn: 0x01AF,
+  Uhornacute: 0x1EE8,
+  Uhorndotbelow: 0x1EF0,
+  Uhorngrave: 0x1EEA,
+  Uhornhookabove: 0x1EEC,
+  Uhorntilde: 0x1EEE,
+  Uhungarumlaut: 0x0170,
+  Uhungarumlautcyrillic: 0x04F2,
+  Uinvertedbreve: 0x0216,
+  Ukcyrillic: 0x0478,
+  Umacron: 0x016A,
+  Umacroncyrillic: 0x04EE,
+  Umacrondieresis: 0x1E7A,
+  Umonospace: 0xFF35,
+  Uogonek: 0x0172,
+  Upsilon: 0x03A5,
+  Upsilon1: 0x03D2,
+  Upsilonacutehooksymbolgreek: 0x03D3,
+  Upsilonafrican: 0x01B1,
+  Upsilondieresis: 0x03AB,
+  Upsilondieresishooksymbolgreek: 0x03D4,
+  Upsilonhooksymbol: 0x03D2,
+  Upsilontonos: 0x038E,
+  Uring: 0x016E,
+  Ushortcyrillic: 0x040E,
+  Usmall: 0xF775,
+  Ustraightcyrillic: 0x04AE,
+  Ustraightstrokecyrillic: 0x04B0,
+  Utilde: 0x0168,
+  Utildeacute: 0x1E78,
+  Utildebelow: 0x1E74,
+  V: 0x0056,
+  Vcircle: 0x24CB,
+  Vdotbelow: 0x1E7E,
+  Vecyrillic: 0x0412,
+  Vewarmenian: 0x054E,
+  Vhook: 0x01B2,
+  Vmonospace: 0xFF36,
+  Voarmenian: 0x0548,
+  Vsmall: 0xF776,
+  Vtilde: 0x1E7C,
+  W: 0x0057,
+  Wacute: 0x1E82,
+  Wcircle: 0x24CC,
+  Wcircumflex: 0x0174,
+  Wdieresis: 0x1E84,
+  Wdotaccent: 0x1E86,
+  Wdotbelow: 0x1E88,
+  Wgrave: 0x1E80,
+  Wmonospace: 0xFF37,
+  Wsmall: 0xF777,
+  X: 0x0058,
+  Xcircle: 0x24CD,
+  Xdieresis: 0x1E8C,
+  Xdotaccent: 0x1E8A,
+  Xeharmenian: 0x053D,
+  Xi: 0x039E,
+  Xmonospace: 0xFF38,
+  Xsmall: 0xF778,
+  Y: 0x0059,
+  Yacute: 0x00DD,
+  Yacutesmall: 0xF7FD,
+  Yatcyrillic: 0x0462,
+  Ycircle: 0x24CE,
+  Ycircumflex: 0x0176,
+  Ydieresis: 0x0178,
+  Ydieresissmall: 0xF7FF,
+  Ydotaccent: 0x1E8E,
+  Ydotbelow: 0x1EF4,
+  Yericyrillic: 0x042B,
+  Yerudieresiscyrillic: 0x04F8,
+  Ygrave: 0x1EF2,
+  Yhook: 0x01B3,
+  Yhookabove: 0x1EF6,
+  Yiarmenian: 0x0545,
+  Yicyrillic: 0x0407,
+  Yiwnarmenian: 0x0552,
+  Ymonospace: 0xFF39,
+  Ysmall: 0xF779,
+  Ytilde: 0x1EF8,
+  Yusbigcyrillic: 0x046A,
+  Yusbigiotifiedcyrillic: 0x046C,
+  Yuslittlecyrillic: 0x0466,
+  Yuslittleiotifiedcyrillic: 0x0468,
+  Z: 0x005A,
+  Zaarmenian: 0x0536,
+  Zacute: 0x0179,
+  Zcaron: 0x017D,
+  Zcaronsmall: 0xF6FF,
+  Zcircle: 0x24CF,
+  Zcircumflex: 0x1E90,
+  Zdot: 0x017B,
+  Zdotaccent: 0x017B,
+  Zdotbelow: 0x1E92,
+  Zecyrillic: 0x0417,
+  Zedescendercyrillic: 0x0498,
+  Zedieresiscyrillic: 0x04DE,
+  Zeta: 0x0396,
+  Zhearmenian: 0x053A,
+  Zhebrevecyrillic: 0x04C1,
+  Zhecyrillic: 0x0416,
+  Zhedescendercyrillic: 0x0496,
+  Zhedieresiscyrillic: 0x04DC,
+  Zlinebelow: 0x1E94,
+  Zmonospace: 0xFF3A,
+  Zsmall: 0xF77A,
+  Zstroke: 0x01B5,
+  a: 0x0061,
+  aabengali: 0x0986,
+  aacute: 0x00E1,
+  aadeva: 0x0906,
+  aagujarati: 0x0A86,
+  aagurmukhi: 0x0A06,
+  aamatragurmukhi: 0x0A3E,
+  aarusquare: 0x3303,
+  aavowelsignbengali: 0x09BE,
+  aavowelsigndeva: 0x093E,
+  aavowelsigngujarati: 0x0ABE,
+  abbreviationmarkarmenian: 0x055F,
+  abbreviationsigndeva: 0x0970,
+  abengali: 0x0985,
+  abopomofo: 0x311A,
+  abreve: 0x0103,
+  abreveacute: 0x1EAF,
+  abrevecyrillic: 0x04D1,
+  abrevedotbelow: 0x1EB7,
+  abrevegrave: 0x1EB1,
+  abrevehookabove: 0x1EB3,
+  abrevetilde: 0x1EB5,
+  acaron: 0x01CE,
+  acircle: 0x24D0,
+  acircumflex: 0x00E2,
+  acircumflexacute: 0x1EA5,
+  acircumflexdotbelow: 0x1EAD,
+  acircumflexgrave: 0x1EA7,
+  acircumflexhookabove: 0x1EA9,
+  acircumflextilde: 0x1EAB,
+  acute: 0x00B4,
+  acutebelowcmb: 0x0317,
+  acutecmb: 0x0301,
+  acutecomb: 0x0301,
+  acutedeva: 0x0954,
+  acutelowmod: 0x02CF,
+  acutetonecmb: 0x0341,
+  acyrillic: 0x0430,
+  adblgrave: 0x0201,
+  addakgurmukhi: 0x0A71,
+  adeva: 0x0905,
+  adieresis: 0x00E4,
+  adieresiscyrillic: 0x04D3,
+  adieresismacron: 0x01DF,
+  adotbelow: 0x1EA1,
+  adotmacron: 0x01E1,
+  ae: 0x00E6,
+  aeacute: 0x01FD,
+  aekorean: 0x3150,
+  aemacron: 0x01E3,
+  afii00208: 0x2015,
+  afii08941: 0x20A4,
+  afii10017: 0x0410,
+  afii10018: 0x0411,
+  afii10019: 0x0412,
+  afii10020: 0x0413,
+  afii10021: 0x0414,
+  afii10022: 0x0415,
+  afii10023: 0x0401,
+  afii10024: 0x0416,
+  afii10025: 0x0417,
+  afii10026: 0x0418,
+  afii10027: 0x0419,
+  afii10028: 0x041A,
+  afii10029: 0x041B,
+  afii10030: 0x041C,
+  afii10031: 0x041D,
+  afii10032: 0x041E,
+  afii10033: 0x041F,
+  afii10034: 0x0420,
+  afii10035: 0x0421,
+  afii10036: 0x0422,
+  afii10037: 0x0423,
+  afii10038: 0x0424,
+  afii10039: 0x0425,
+  afii10040: 0x0426,
+  afii10041: 0x0427,
+  afii10042: 0x0428,
+  afii10043: 0x0429,
+  afii10044: 0x042A,
+  afii10045: 0x042B,
+  afii10046: 0x042C,
+  afii10047: 0x042D,
+  afii10048: 0x042E,
+  afii10049: 0x042F,
+  afii10050: 0x0490,
+  afii10051: 0x0402,
+  afii10052: 0x0403,
+  afii10053: 0x0404,
+  afii10054: 0x0405,
+  afii10055: 0x0406,
+  afii10056: 0x0407,
+  afii10057: 0x0408,
+  afii10058: 0x0409,
+  afii10059: 0x040A,
+  afii10060: 0x040B,
+  afii10061: 0x040C,
+  afii10062: 0x040E,
+  afii10063: 0xF6C4,
+  afii10064: 0xF6C5,
+  afii10065: 0x0430,
+  afii10066: 0x0431,
+  afii10067: 0x0432,
+  afii10068: 0x0433,
+  afii10069: 0x0434,
+  afii10070: 0x0435,
+  afii10071: 0x0451,
+  afii10072: 0x0436,
+  afii10073: 0x0437,
+  afii10074: 0x0438,
+  afii10075: 0x0439,
+  afii10076: 0x043A,
+  afii10077: 0x043B,
+  afii10078: 0x043C,
+  afii10079: 0x043D,
+  afii10080: 0x043E,
+  afii10081: 0x043F,
+  afii10082: 0x0440,
+  afii10083: 0x0441,
+  afii10084: 0x0442,
+  afii10085: 0x0443,
+  afii10086: 0x0444,
+  afii10087: 0x0445,
+  afii10088: 0x0446,
+  afii10089: 0x0447,
+  afii10090: 0x0448,
+  afii10091: 0x0449,
+  afii10092: 0x044A,
+  afii10093: 0x044B,
+  afii10094: 0x044C,
+  afii10095: 0x044D,
+  afii10096: 0x044E,
+  afii10097: 0x044F,
+  afii10098: 0x0491,
+  afii10099: 0x0452,
+  afii10100: 0x0453,
+  afii10101: 0x0454,
+  afii10102: 0x0455,
+  afii10103: 0x0456,
+  afii10104: 0x0457,
+  afii10105: 0x0458,
+  afii10106: 0x0459,
+  afii10107: 0x045A,
+  afii10108: 0x045B,
+  afii10109: 0x045C,
+  afii10110: 0x045E,
+  afii10145: 0x040F,
+  afii10146: 0x0462,
+  afii10147: 0x0472,
+  afii10148: 0x0474,
+  afii10192: 0xF6C6,
+  afii10193: 0x045F,
+  afii10194: 0x0463,
+  afii10195: 0x0473,
+  afii10196: 0x0475,
+  afii10831: 0xF6C7,
+  afii10832: 0xF6C8,
+  afii10846: 0x04D9,
+  afii299: 0x200E,
+  afii300: 0x200F,
+  afii301: 0x200D,
+  afii57381: 0x066A,
+  afii57388: 0x060C,
+  afii57392: 0x0660,
+  afii57393: 0x0661,
+  afii57394: 0x0662,
+  afii57395: 0x0663,
+  afii57396: 0x0664,
+  afii57397: 0x0665,
+  afii57398: 0x0666,
+  afii57399: 0x0667,
+  afii57400: 0x0668,
+  afii57401: 0x0669,
+  afii57403: 0x061B,
+  afii57407: 0x061F,
+  afii57409: 0x0621,
+  afii57410: 0x0622,
+  afii57411: 0x0623,
+  afii57412: 0x0624,
+  afii57413: 0x0625,
+  afii57414: 0x0626,
+  afii57415: 0x0627,
+  afii57416: 0x0628,
+  afii57417: 0x0629,
+  afii57418: 0x062A,
+  afii57419: 0x062B,
+  afii57420: 0x062C,
+  afii57421: 0x062D,
+  afii57422: 0x062E,
+  afii57423: 0x062F,
+  afii57424: 0x0630,
+  afii57425: 0x0631,
+  afii57426: 0x0632,
+  afii57427: 0x0633,
+  afii57428: 0x0634,
+  afii57429: 0x0635,
+  afii57430: 0x0636,
+  afii57431: 0x0637,
+  afii57432: 0x0638,
+  afii57433: 0x0639,
+  afii57434: 0x063A,
+  afii57440: 0x0640,
+  afii57441: 0x0641,
+  afii57442: 0x0642,
+  afii57443: 0x0643,
+  afii57444: 0x0644,
+  afii57445: 0x0645,
+  afii57446: 0x0646,
+  afii57448: 0x0648,
+  afii57449: 0x0649,
+  afii57450: 0x064A,
+  afii57451: 0x064B,
+  afii57452: 0x064C,
+  afii57453: 0x064D,
+  afii57454: 0x064E,
+  afii57455: 0x064F,
+  afii57456: 0x0650,
+  afii57457: 0x0651,
+  afii57458: 0x0652,
+  afii57470: 0x0647,
+  afii57505: 0x06A4,
+  afii57506: 0x067E,
+  afii57507: 0x0686,
+  afii57508: 0x0698,
+  afii57509: 0x06AF,
+  afii57511: 0x0679,
+  afii57512: 0x0688,
+  afii57513: 0x0691,
+  afii57514: 0x06BA,
+  afii57519: 0x06D2,
+  afii57534: 0x06D5,
+  afii57636: 0x20AA,
+  afii57645: 0x05BE,
+  afii57658: 0x05C3,
+  afii57664: 0x05D0,
+  afii57665: 0x05D1,
+  afii57666: 0x05D2,
+  afii57667: 0x05D3,
+  afii57668: 0x05D4,
+  afii57669: 0x05D5,
+  afii57670: 0x05D6,
+  afii57671: 0x05D7,
+  afii57672: 0x05D8,
+  afii57673: 0x05D9,
+  afii57674: 0x05DA,
+  afii57675: 0x05DB,
+  afii57676: 0x05DC,
+  afii57677: 0x05DD,
+  afii57678: 0x05DE,
+  afii57679: 0x05DF,
+  afii57680: 0x05E0,
+  afii57681: 0x05E1,
+  afii57682: 0x05E2,
+  afii57683: 0x05E3,
+  afii57684: 0x05E4,
+  afii57685: 0x05E5,
+  afii57686: 0x05E6,
+  afii57687: 0x05E7,
+  afii57688: 0x05E8,
+  afii57689: 0x05E9,
+  afii57690: 0x05EA,
+  afii57694: 0xFB2A,
+  afii57695: 0xFB2B,
+  afii57700: 0xFB4B,
+  afii57705: 0xFB1F,
+  afii57716: 0x05F0,
+  afii57717: 0x05F1,
+  afii57718: 0x05F2,
+  afii57723: 0xFB35,
+  afii57793: 0x05B4,
+  afii57794: 0x05B5,
+  afii57795: 0x05B6,
+  afii57796: 0x05BB,
+  afii57797: 0x05B8,
+  afii57798: 0x05B7,
+  afii57799: 0x05B0,
+  afii57800: 0x05B2,
+  afii57801: 0x05B1,
+  afii57802: 0x05B3,
+  afii57803: 0x05C2,
+  afii57804: 0x05C1,
+  afii57806: 0x05B9,
+  afii57807: 0x05BC,
+  afii57839: 0x05BD,
+  afii57841: 0x05BF,
+  afii57842: 0x05C0,
+  afii57929: 0x02BC,
+  afii61248: 0x2105,
+  afii61289: 0x2113,
+  afii61352: 0x2116,
+  afii61573: 0x202C,
+  afii61574: 0x202D,
+  afii61575: 0x202E,
+  afii61664: 0x200C,
+  afii63167: 0x066D,
+  afii64937: 0x02BD,
+  agrave: 0x00E0,
+  agujarati: 0x0A85,
+  agurmukhi: 0x0A05,
+  ahiragana: 0x3042,
+  ahookabove: 0x1EA3,
+  aibengali: 0x0990,
+  aibopomofo: 0x311E,
+  aideva: 0x0910,
+  aiecyrillic: 0x04D5,
+  aigujarati: 0x0A90,
+  aigurmukhi: 0x0A10,
+  aimatragurmukhi: 0x0A48,
+  ainarabic: 0x0639,
+  ainfinalarabic: 0xFECA,
+  aininitialarabic: 0xFECB,
+  ainmedialarabic: 0xFECC,
+  ainvertedbreve: 0x0203,
+  aivowelsignbengali: 0x09C8,
+  aivowelsigndeva: 0x0948,
+  aivowelsigngujarati: 0x0AC8,
+  akatakana: 0x30A2,
+  akatakanahalfwidth: 0xFF71,
+  akorean: 0x314F,
+  alef: 0x05D0,
+  alefarabic: 0x0627,
+  alefdageshhebrew: 0xFB30,
+  aleffinalarabic: 0xFE8E,
+  alefhamzaabovearabic: 0x0623,
+  alefhamzaabovefinalarabic: 0xFE84,
+  alefhamzabelowarabic: 0x0625,
+  alefhamzabelowfinalarabic: 0xFE88,
+  alefhebrew: 0x05D0,
+  aleflamedhebrew: 0xFB4F,
+  alefmaddaabovearabic: 0x0622,
+  alefmaddaabovefinalarabic: 0xFE82,
+  alefmaksuraarabic: 0x0649,
+  alefmaksurafinalarabic: 0xFEF0,
+  alefmaksurainitialarabic: 0xFEF3,
+  alefmaksuramedialarabic: 0xFEF4,
+  alefpatahhebrew: 0xFB2E,
+  alefqamatshebrew: 0xFB2F,
+  aleph: 0x2135,
+  allequal: 0x224C,
+  alpha: 0x03B1,
+  alphatonos: 0x03AC,
+  amacron: 0x0101,
+  amonospace: 0xFF41,
+  ampersand: 0x0026,
+  ampersandmonospace: 0xFF06,
+  ampersandsmall: 0xF726,
+  amsquare: 0x33C2,
+  anbopomofo: 0x3122,
+  angbopomofo: 0x3124,
+  angbracketleft: 0x3008, // This glyph is missing from Adobe's original list.
+  angbracketright: 0x3009, // This glyph is missing from Adobe's original list.
+  angkhankhuthai: 0x0E5A,
+  angle: 0x2220,
+  anglebracketleft: 0x3008,
+  anglebracketleftvertical: 0xFE3F,
+  anglebracketright: 0x3009,
+  anglebracketrightvertical: 0xFE40,
+  angleleft: 0x2329,
+  angleright: 0x232A,
+  angstrom: 0x212B,
+  anoteleia: 0x0387,
+  anudattadeva: 0x0952,
+  anusvarabengali: 0x0982,
+  anusvaradeva: 0x0902,
+  anusvaragujarati: 0x0A82,
+  aogonek: 0x0105,
+  apaatosquare: 0x3300,
+  aparen: 0x249C,
+  apostrophearmenian: 0x055A,
+  apostrophemod: 0x02BC,
+  apple: 0xF8FF,
+  approaches: 0x2250,
+  approxequal: 0x2248,
+  approxequalorimage: 0x2252,
+  approximatelyequal: 0x2245,
+  araeaekorean: 0x318E,
+  araeakorean: 0x318D,
+  arc: 0x2312,
+  arighthalfring: 0x1E9A,
+  aring: 0x00E5,
+  aringacute: 0x01FB,
+  aringbelow: 0x1E01,
+  arrowboth: 0x2194,
+  arrowdashdown: 0x21E3,
+  arrowdashleft: 0x21E0,
+  arrowdashright: 0x21E2,
+  arrowdashup: 0x21E1,
+  arrowdblboth: 0x21D4,
+  arrowdbldown: 0x21D3,
+  arrowdblleft: 0x21D0,
+  arrowdblright: 0x21D2,
+  arrowdblup: 0x21D1,
+  arrowdown: 0x2193,
+  arrowdownleft: 0x2199,
+  arrowdownright: 0x2198,
+  arrowdownwhite: 0x21E9,
+  arrowheaddownmod: 0x02C5,
+  arrowheadleftmod: 0x02C2,
+  arrowheadrightmod: 0x02C3,
+  arrowheadupmod: 0x02C4,
+  arrowhorizex: 0xF8E7,
+  arrowleft: 0x2190,
+  arrowleftdbl: 0x21D0,
+  arrowleftdblstroke: 0x21CD,
+  arrowleftoverright: 0x21C6,
+  arrowleftwhite: 0x21E6,
+  arrowright: 0x2192,
+  arrowrightdblstroke: 0x21CF,
+  arrowrightheavy: 0x279E,
+  arrowrightoverleft: 0x21C4,
+  arrowrightwhite: 0x21E8,
+  arrowtableft: 0x21E4,
+  arrowtabright: 0x21E5,
+  arrowup: 0x2191,
+  arrowupdn: 0x2195,
+  arrowupdnbse: 0x21A8,
+  arrowupdownbase: 0x21A8,
+  arrowupleft: 0x2196,
+  arrowupleftofdown: 0x21C5,
+  arrowupright: 0x2197,
+  arrowupwhite: 0x21E7,
+  arrowvertex: 0xF8E6,
+  asciicircum: 0x005E,
+  asciicircummonospace: 0xFF3E,
+  asciitilde: 0x007E,
+  asciitildemonospace: 0xFF5E,
+  ascript: 0x0251,
+  ascriptturned: 0x0252,
+  asmallhiragana: 0x3041,
+  asmallkatakana: 0x30A1,
+  asmallkatakanahalfwidth: 0xFF67,
+  asterisk: 0x002A,
+  asteriskaltonearabic: 0x066D,
+  asteriskarabic: 0x066D,
+  asteriskmath: 0x2217,
+  asteriskmonospace: 0xFF0A,
+  asterisksmall: 0xFE61,
+  asterism: 0x2042,
+  asuperior: 0xF6E9,
+  asymptoticallyequal: 0x2243,
+  at: 0x0040,
+  atilde: 0x00E3,
+  atmonospace: 0xFF20,
+  atsmall: 0xFE6B,
+  aturned: 0x0250,
+  aubengali: 0x0994,
+  aubopomofo: 0x3120,
+  audeva: 0x0914,
+  augujarati: 0x0A94,
+  augurmukhi: 0x0A14,
+  aulengthmarkbengali: 0x09D7,
+  aumatragurmukhi: 0x0A4C,
+  auvowelsignbengali: 0x09CC,
+  auvowelsigndeva: 0x094C,
+  auvowelsigngujarati: 0x0ACC,
+  avagrahadeva: 0x093D,
+  aybarmenian: 0x0561,
+  ayin: 0x05E2,
+  ayinaltonehebrew: 0xFB20,
+  ayinhebrew: 0x05E2,
+  b: 0x0062,
+  babengali: 0x09AC,
+  backslash: 0x005C,
+  backslashmonospace: 0xFF3C,
+  badeva: 0x092C,
+  bagujarati: 0x0AAC,
+  bagurmukhi: 0x0A2C,
+  bahiragana: 0x3070,
+  bahtthai: 0x0E3F,
+  bakatakana: 0x30D0,
+  bar: 0x007C,
+  barmonospace: 0xFF5C,
+  bbopomofo: 0x3105,
+  bcircle: 0x24D1,
+  bdotaccent: 0x1E03,
+  bdotbelow: 0x1E05,
+  beamedsixteenthnotes: 0x266C,
+  because: 0x2235,
+  becyrillic: 0x0431,
+  beharabic: 0x0628,
+  behfinalarabic: 0xFE90,
+  behinitialarabic: 0xFE91,
+  behiragana: 0x3079,
+  behmedialarabic: 0xFE92,
+  behmeeminitialarabic: 0xFC9F,
+  behmeemisolatedarabic: 0xFC08,
+  behnoonfinalarabic: 0xFC6D,
+  bekatakana: 0x30D9,
+  benarmenian: 0x0562,
+  bet: 0x05D1,
+  beta: 0x03B2,
+  betasymbolgreek: 0x03D0,
+  betdagesh: 0xFB31,
+  betdageshhebrew: 0xFB31,
+  bethebrew: 0x05D1,
+  betrafehebrew: 0xFB4C,
+  bhabengali: 0x09AD,
+  bhadeva: 0x092D,
+  bhagujarati: 0x0AAD,
+  bhagurmukhi: 0x0A2D,
+  bhook: 0x0253,
+  bihiragana: 0x3073,
+  bikatakana: 0x30D3,
+  bilabialclick: 0x0298,
+  bindigurmukhi: 0x0A02,
+  birusquare: 0x3331,
+  blackcircle: 0x25CF,
+  blackdiamond: 0x25C6,
+  blackdownpointingtriangle: 0x25BC,
+  blackleftpointingpointer: 0x25C4,
+  blackleftpointingtriangle: 0x25C0,
+  blacklenticularbracketleft: 0x3010,
+  blacklenticularbracketleftvertical: 0xFE3B,
+  blacklenticularbracketright: 0x3011,
+  blacklenticularbracketrightvertical: 0xFE3C,
+  blacklowerlefttriangle: 0x25E3,
+  blacklowerrighttriangle: 0x25E2,
+  blackrectangle: 0x25AC,
+  blackrightpointingpointer: 0x25BA,
+  blackrightpointingtriangle: 0x25B6,
+  blacksmallsquare: 0x25AA,
+  blacksmilingface: 0x263B,
+  blacksquare: 0x25A0,
+  blackstar: 0x2605,
+  blackupperlefttriangle: 0x25E4,
+  blackupperrighttriangle: 0x25E5,
+  blackuppointingsmalltriangle: 0x25B4,
+  blackuppointingtriangle: 0x25B2,
+  blank: 0x2423,
+  blinebelow: 0x1E07,
+  block: 0x2588,
+  bmonospace: 0xFF42,
+  bobaimaithai: 0x0E1A,
+  bohiragana: 0x307C,
+  bokatakana: 0x30DC,
+  bparen: 0x249D,
+  bqsquare: 0x33C3,
+  braceex: 0xF8F4,
+  braceleft: 0x007B,
+  braceleftbt: 0xF8F3,
+  braceleftmid: 0xF8F2,
+  braceleftmonospace: 0xFF5B,
+  braceleftsmall: 0xFE5B,
+  bracelefttp: 0xF8F1,
+  braceleftvertical: 0xFE37,
+  braceright: 0x007D,
+  bracerightbt: 0xF8FE,
+  bracerightmid: 0xF8FD,
+  bracerightmonospace: 0xFF5D,
+  bracerightsmall: 0xFE5C,
+  bracerighttp: 0xF8FC,
+  bracerightvertical: 0xFE38,
+  bracketleft: 0x005B,
+  bracketleftbt: 0xF8F0,
+  bracketleftex: 0xF8EF,
+  bracketleftmonospace: 0xFF3B,
+  bracketlefttp: 0xF8EE,
+  bracketright: 0x005D,
+  bracketrightbt: 0xF8FB,
+  bracketrightex: 0xF8FA,
+  bracketrightmonospace: 0xFF3D,
+  bracketrighttp: 0xF8F9,
+  breve: 0x02D8,
+  brevebelowcmb: 0x032E,
+  brevecmb: 0x0306,
+  breveinvertedbelowcmb: 0x032F,
+  breveinvertedcmb: 0x0311,
+  breveinverteddoublecmb: 0x0361,
+  bridgebelowcmb: 0x032A,
+  bridgeinvertedbelowcmb: 0x033A,
+  brokenbar: 0x00A6,
+  bstroke: 0x0180,
+  bsuperior: 0xF6EA,
+  btopbar: 0x0183,
+  buhiragana: 0x3076,
+  bukatakana: 0x30D6,
+  bullet: 0x2022,
+  bulletinverse: 0x25D8,
+  bulletoperator: 0x2219,
+  bullseye: 0x25CE,
+  c: 0x0063,
+  caarmenian: 0x056E,
+  cabengali: 0x099A,
+  cacute: 0x0107,
+  cadeva: 0x091A,
+  cagujarati: 0x0A9A,
+  cagurmukhi: 0x0A1A,
+  calsquare: 0x3388,
+  candrabindubengali: 0x0981,
+  candrabinducmb: 0x0310,
+  candrabindudeva: 0x0901,
+  candrabindugujarati: 0x0A81,
+  capslock: 0x21EA,
+  careof: 0x2105,
+  caron: 0x02C7,
+  caronbelowcmb: 0x032C,
+  caroncmb: 0x030C,
+  carriagereturn: 0x21B5,
+  cbopomofo: 0x3118,
+  ccaron: 0x010D,
+  ccedilla: 0x00E7,
+  ccedillaacute: 0x1E09,
+  ccircle: 0x24D2,
+  ccircumflex: 0x0109,
+  ccurl: 0x0255,
+  cdot: 0x010B,
+  cdotaccent: 0x010B,
+  cdsquare: 0x33C5,
+  cedilla: 0x00B8,
+  cedillacmb: 0x0327,
+  cent: 0x00A2,
+  centigrade: 0x2103,
+  centinferior: 0xF6DF,
+  centmonospace: 0xFFE0,
+  centoldstyle: 0xF7A2,
+  centsuperior: 0xF6E0,
+  chaarmenian: 0x0579,
+  chabengali: 0x099B,
+  chadeva: 0x091B,
+  chagujarati: 0x0A9B,
+  chagurmukhi: 0x0A1B,
+  chbopomofo: 0x3114,
+  cheabkhasiancyrillic: 0x04BD,
+  checkmark: 0x2713,
+  checyrillic: 0x0447,
+  chedescenderabkhasiancyrillic: 0x04BF,
+  chedescendercyrillic: 0x04B7,
+  chedieresiscyrillic: 0x04F5,
+  cheharmenian: 0x0573,
+  chekhakassiancyrillic: 0x04CC,
+  cheverticalstrokecyrillic: 0x04B9,
+  chi: 0x03C7,
+  chieuchacirclekorean: 0x3277,
+  chieuchaparenkorean: 0x3217,
+  chieuchcirclekorean: 0x3269,
+  chieuchkorean: 0x314A,
+  chieuchparenkorean: 0x3209,
+  chochangthai: 0x0E0A,
+  chochanthai: 0x0E08,
+  chochingthai: 0x0E09,
+  chochoethai: 0x0E0C,
+  chook: 0x0188,
+  cieucacirclekorean: 0x3276,
+  cieucaparenkorean: 0x3216,
+  cieuccirclekorean: 0x3268,
+  cieuckorean: 0x3148,
+  cieucparenkorean: 0x3208,
+  cieucuparenkorean: 0x321C,
+  circle: 0x25CB,
+  circlecopyrt: 0x00A9, // This glyph is missing from Adobe's original list.
+  circlemultiply: 0x2297,
+  circleot: 0x2299,
+  circleplus: 0x2295,
+  circlepostalmark: 0x3036,
+  circlewithlefthalfblack: 0x25D0,
+  circlewithrighthalfblack: 0x25D1,
+  circumflex: 0x02C6,
+  circumflexbelowcmb: 0x032D,
+  circumflexcmb: 0x0302,
+  clear: 0x2327,
+  clickalveolar: 0x01C2,
+  clickdental: 0x01C0,
+  clicklateral: 0x01C1,
+  clickretroflex: 0x01C3,
+  club: 0x2663,
+  clubsuitblack: 0x2663,
+  clubsuitwhite: 0x2667,
+  cmcubedsquare: 0x33A4,
+  cmonospace: 0xFF43,
+  cmsquaredsquare: 0x33A0,
+  coarmenian: 0x0581,
+  colon: 0x003A,
+  colonmonetary: 0x20A1,
+  colonmonospace: 0xFF1A,
+  colonsign: 0x20A1,
+  colonsmall: 0xFE55,
+  colontriangularhalfmod: 0x02D1,
+  colontriangularmod: 0x02D0,
+  comma: 0x002C,
+  commaabovecmb: 0x0313,
+  commaaboverightcmb: 0x0315,
+  commaaccent: 0xF6C3,
+  commaarabic: 0x060C,
+  commaarmenian: 0x055D,
+  commainferior: 0xF6E1,
+  commamonospace: 0xFF0C,
+  commareversedabovecmb: 0x0314,
+  commareversedmod: 0x02BD,
+  commasmall: 0xFE50,
+  commasuperior: 0xF6E2,
+  commaturnedabovecmb: 0x0312,
+  commaturnedmod: 0x02BB,
+  compass: 0x263C,
+  congruent: 0x2245,
+  contourintegral: 0x222E,
+  control: 0x2303,
+  controlACK: 0x0006,
+  controlBEL: 0x0007,
+  controlBS: 0x0008,
+  controlCAN: 0x0018,
+  controlCR: 0x000D,
+  controlDC1: 0x0011,
+  controlDC2: 0x0012,
+  controlDC3: 0x0013,
+  controlDC4: 0x0014,
+  controlDEL: 0x007F,
+  controlDLE: 0x0010,
+  controlEM: 0x0019,
+  controlENQ: 0x0005,
+  controlEOT: 0x0004,
+  controlESC: 0x001B,
+  controlETB: 0x0017,
+  controlETX: 0x0003,
+  controlFF: 0x000C,
+  controlFS: 0x001C,
+  controlGS: 0x001D,
+  controlHT: 0x0009,
+  controlLF: 0x000A,
+  controlNAK: 0x0015,
+  controlRS: 0x001E,
+  controlSI: 0x000F,
+  controlSO: 0x000E,
+  controlSOT: 0x0002,
+  controlSTX: 0x0001,
+  controlSUB: 0x001A,
+  controlSYN: 0x0016,
+  controlUS: 0x001F,
+  controlVT: 0x000B,
+  copyright: 0x00A9,
+  copyrightsans: 0xF8E9,
+  copyrightserif: 0xF6D9,
+  cornerbracketleft: 0x300C,
+  cornerbracketlefthalfwidth: 0xFF62,
+  cornerbracketleftvertical: 0xFE41,
+  cornerbracketright: 0x300D,
+  cornerbracketrighthalfwidth: 0xFF63,
+  cornerbracketrightvertical: 0xFE42,
+  corporationsquare: 0x337F,
+  cosquare: 0x33C7,
+  coverkgsquare: 0x33C6,
+  cparen: 0x249E,
+  cruzeiro: 0x20A2,
+  cstretched: 0x0297,
+  curlyand: 0x22CF,
+  curlyor: 0x22CE,
+  currency: 0x00A4,
+  cyrBreve: 0xF6D1,
+  cyrFlex: 0xF6D2,
+  cyrbreve: 0xF6D4,
+  cyrflex: 0xF6D5,
+  d: 0x0064,
+  daarmenian: 0x0564,
+  dabengali: 0x09A6,
+  dadarabic: 0x0636,
+  dadeva: 0x0926,
+  dadfinalarabic: 0xFEBE,
+  dadinitialarabic: 0xFEBF,
+  dadmedialarabic: 0xFEC0,
+  dagesh: 0x05BC,
+  dageshhebrew: 0x05BC,
+  dagger: 0x2020,
+  daggerdbl: 0x2021,
+  dagujarati: 0x0AA6,
+  dagurmukhi: 0x0A26,
+  dahiragana: 0x3060,
+  dakatakana: 0x30C0,
+  dalarabic: 0x062F,
+  dalet: 0x05D3,
+  daletdagesh: 0xFB33,
+  daletdageshhebrew: 0xFB33,
+  dalethebrew: 0x05D3,
+  dalfinalarabic: 0xFEAA,
+  dammaarabic: 0x064F,
+  dammalowarabic: 0x064F,
+  dammatanaltonearabic: 0x064C,
+  dammatanarabic: 0x064C,
+  danda: 0x0964,
+  dargahebrew: 0x05A7,
+  dargalefthebrew: 0x05A7,
+  dasiapneumatacyrilliccmb: 0x0485,
+  dblGrave: 0xF6D3,
+  dblanglebracketleft: 0x300A,
+  dblanglebracketleftvertical: 0xFE3D,
+  dblanglebracketright: 0x300B,
+  dblanglebracketrightvertical: 0xFE3E,
+  dblarchinvertedbelowcmb: 0x032B,
+  dblarrowleft: 0x21D4,
+  dblarrowright: 0x21D2,
+  dbldanda: 0x0965,
+  dblgrave: 0xF6D6,
+  dblgravecmb: 0x030F,
+  dblintegral: 0x222C,
+  dbllowline: 0x2017,
+  dbllowlinecmb: 0x0333,
+  dbloverlinecmb: 0x033F,
+  dblprimemod: 0x02BA,
+  dblverticalbar: 0x2016,
+  dblverticallineabovecmb: 0x030E,
+  dbopomofo: 0x3109,
+  dbsquare: 0x33C8,
+  dcaron: 0x010F,
+  dcedilla: 0x1E11,
+  dcircle: 0x24D3,
+  dcircumflexbelow: 0x1E13,
+  dcroat: 0x0111,
+  ddabengali: 0x09A1,
+  ddadeva: 0x0921,
+  ddagujarati: 0x0AA1,
+  ddagurmukhi: 0x0A21,
+  ddalarabic: 0x0688,
+  ddalfinalarabic: 0xFB89,
+  dddhadeva: 0x095C,
+  ddhabengali: 0x09A2,
+  ddhadeva: 0x0922,
+  ddhagujarati: 0x0AA2,
+  ddhagurmukhi: 0x0A22,
+  ddotaccent: 0x1E0B,
+  ddotbelow: 0x1E0D,
+  decimalseparatorarabic: 0x066B,
+  decimalseparatorpersian: 0x066B,
+  decyrillic: 0x0434,
+  degree: 0x00B0,
+  dehihebrew: 0x05AD,
+  dehiragana: 0x3067,
+  deicoptic: 0x03EF,
+  dekatakana: 0x30C7,
+  deleteleft: 0x232B,
+  deleteright: 0x2326,
+  delta: 0x03B4,
+  deltaturned: 0x018D,
+  denominatorminusonenumeratorbengali: 0x09F8,
+  dezh: 0x02A4,
+  dhabengali: 0x09A7,
+  dhadeva: 0x0927,
+  dhagujarati: 0x0AA7,
+  dhagurmukhi: 0x0A27,
+  dhook: 0x0257,
+  dialytikatonos: 0x0385,
+  dialytikatonoscmb: 0x0344,
+  diamond: 0x2666,
+  diamondsuitwhite: 0x2662,
+  dieresis: 0x00A8,
+  dieresisacute: 0xF6D7,
+  dieresisbelowcmb: 0x0324,
+  dieresiscmb: 0x0308,
+  dieresisgrave: 0xF6D8,
+  dieresistonos: 0x0385,
+  dihiragana: 0x3062,
+  dikatakana: 0x30C2,
+  dittomark: 0x3003,
+  divide: 0x00F7,
+  divides: 0x2223,
+  divisionslash: 0x2215,
+  djecyrillic: 0x0452,
+  dkshade: 0x2593,
+  dlinebelow: 0x1E0F,
+  dlsquare: 0x3397,
+  dmacron: 0x0111,
+  dmonospace: 0xFF44,
+  dnblock: 0x2584,
+  dochadathai: 0x0E0E,
+  dodekthai: 0x0E14,
+  dohiragana: 0x3069,
+  dokatakana: 0x30C9,
+  dollar: 0x0024,
+  dollarinferior: 0xF6E3,
+  dollarmonospace: 0xFF04,
+  dollaroldstyle: 0xF724,
+  dollarsmall: 0xFE69,
+  dollarsuperior: 0xF6E4,
+  dong: 0x20AB,
+  dorusquare: 0x3326,
+  dotaccent: 0x02D9,
+  dotaccentcmb: 0x0307,
+  dotbelowcmb: 0x0323,
+  dotbelowcomb: 0x0323,
+  dotkatakana: 0x30FB,
+  dotlessi: 0x0131,
+  dotlessj: 0xF6BE,
+  dotlessjstrokehook: 0x0284,
+  dotmath: 0x22C5,
+  dottedcircle: 0x25CC,
+  doubleyodpatah: 0xFB1F,
+  doubleyodpatahhebrew: 0xFB1F,
+  downtackbelowcmb: 0x031E,
+  downtackmod: 0x02D5,
+  dparen: 0x249F,
+  dsuperior: 0xF6EB,
+  dtail: 0x0256,
+  dtopbar: 0x018C,
+  duhiragana: 0x3065,
+  dukatakana: 0x30C5,
+  dz: 0x01F3,
+  dzaltone: 0x02A3,
+  dzcaron: 0x01C6,
+  dzcurl: 0x02A5,
+  dzeabkhasiancyrillic: 0x04E1,
+  dzecyrillic: 0x0455,
+  dzhecyrillic: 0x045F,
+  e: 0x0065,
+  eacute: 0x00E9,
+  earth: 0x2641,
+  ebengali: 0x098F,
+  ebopomofo: 0x311C,
+  ebreve: 0x0115,
+  ecandradeva: 0x090D,
+  ecandragujarati: 0x0A8D,
+  ecandravowelsigndeva: 0x0945,
+  ecandravowelsigngujarati: 0x0AC5,
+  ecaron: 0x011B,
+  ecedillabreve: 0x1E1D,
+  echarmenian: 0x0565,
+  echyiwnarmenian: 0x0587,
+  ecircle: 0x24D4,
+  ecircumflex: 0x00EA,
+  ecircumflexacute: 0x1EBF,
+  ecircumflexbelow: 0x1E19,
+  ecircumflexdotbelow: 0x1EC7,
+  ecircumflexgrave: 0x1EC1,
+  ecircumflexhookabove: 0x1EC3,
+  ecircumflextilde: 0x1EC5,
+  ecyrillic: 0x0454,
+  edblgrave: 0x0205,
+  edeva: 0x090F,
+  edieresis: 0x00EB,
+  edot: 0x0117,
+  edotaccent: 0x0117,
+  edotbelow: 0x1EB9,
+  eegurmukhi: 0x0A0F,
+  eematragurmukhi: 0x0A47,
+  efcyrillic: 0x0444,
+  egrave: 0x00E8,
+  egujarati: 0x0A8F,
+  eharmenian: 0x0567,
+  ehbopomofo: 0x311D,
+  ehiragana: 0x3048,
+  ehookabove: 0x1EBB,
+  eibopomofo: 0x311F,
+  eight: 0x0038,
+  eightarabic: 0x0668,
+  eightbengali: 0x09EE,
+  eightcircle: 0x2467,
+  eightcircleinversesansserif: 0x2791,
+  eightdeva: 0x096E,
+  eighteencircle: 0x2471,
+  eighteenparen: 0x2485,
+  eighteenperiod: 0x2499,
+  eightgujarati: 0x0AEE,
+  eightgurmukhi: 0x0A6E,
+  eighthackarabic: 0x0668,
+  eighthangzhou: 0x3028,
+  eighthnotebeamed: 0x266B,
+  eightideographicparen: 0x3227,
+  eightinferior: 0x2088,
+  eightmonospace: 0xFF18,
+  eightoldstyle: 0xF738,
+  eightparen: 0x247B,
+  eightperiod: 0x248F,
+  eightpersian: 0x06F8,
+  eightroman: 0x2177,
+  eightsuperior: 0x2078,
+  eightthai: 0x0E58,
+  einvertedbreve: 0x0207,
+  eiotifiedcyrillic: 0x0465,
+  ekatakana: 0x30A8,
+  ekatakanahalfwidth: 0xFF74,
+  ekonkargurmukhi: 0x0A74,
+  ekorean: 0x3154,
+  elcyrillic: 0x043B,
+  element: 0x2208,
+  elevencircle: 0x246A,
+  elevenparen: 0x247E,
+  elevenperiod: 0x2492,
+  elevenroman: 0x217A,
+  ellipsis: 0x2026,
+  ellipsisvertical: 0x22EE,
+  emacron: 0x0113,
+  emacronacute: 0x1E17,
+  emacrongrave: 0x1E15,
+  emcyrillic: 0x043C,
+  emdash: 0x2014,
+  emdashvertical: 0xFE31,
+  emonospace: 0xFF45,
+  emphasismarkarmenian: 0x055B,
+  emptyset: 0x2205,
+  enbopomofo: 0x3123,
+  encyrillic: 0x043D,
+  endash: 0x2013,
+  endashvertical: 0xFE32,
+  endescendercyrillic: 0x04A3,
+  eng: 0x014B,
+  engbopomofo: 0x3125,
+  enghecyrillic: 0x04A5,
+  enhookcyrillic: 0x04C8,
+  enspace: 0x2002,
+  eogonek: 0x0119,
+  eokorean: 0x3153,
+  eopen: 0x025B,
+  eopenclosed: 0x029A,
+  eopenreversed: 0x025C,
+  eopenreversedclosed: 0x025E,
+  eopenreversedhook: 0x025D,
+  eparen: 0x24A0,
+  epsilon: 0x03B5,
+  epsilontonos: 0x03AD,
+  equal: 0x003D,
+  equalmonospace: 0xFF1D,
+  equalsmall: 0xFE66,
+  equalsuperior: 0x207C,
+  equivalence: 0x2261,
+  erbopomofo: 0x3126,
+  ercyrillic: 0x0440,
+  ereversed: 0x0258,
+  ereversedcyrillic: 0x044D,
+  escyrillic: 0x0441,
+  esdescendercyrillic: 0x04AB,
+  esh: 0x0283,
+  eshcurl: 0x0286,
+  eshortdeva: 0x090E,
+  eshortvowelsigndeva: 0x0946,
+  eshreversedloop: 0x01AA,
+  eshsquatreversed: 0x0285,
+  esmallhiragana: 0x3047,
+  esmallkatakana: 0x30A7,
+  esmallkatakanahalfwidth: 0xFF6A,
+  estimated: 0x212E,
+  esuperior: 0xF6EC,
+  eta: 0x03B7,
+  etarmenian: 0x0568,
+  etatonos: 0x03AE,
+  eth: 0x00F0,
+  etilde: 0x1EBD,
+  etildebelow: 0x1E1B,
+  etnahtafoukhhebrew: 0x0591,
+  etnahtafoukhlefthebrew: 0x0591,
+  etnahtahebrew: 0x0591,
+  etnahtalefthebrew: 0x0591,
+  eturned: 0x01DD,
+  eukorean: 0x3161,
+  euro: 0x20AC,
+  evowelsignbengali: 0x09C7,
+  evowelsigndeva: 0x0947,
+  evowelsigngujarati: 0x0AC7,
+  exclam: 0x0021,
+  exclamarmenian: 0x055C,
+  exclamdbl: 0x203C,
+  exclamdown: 0x00A1,
+  exclamdownsmall: 0xF7A1,
+  exclammonospace: 0xFF01,
+  exclamsmall: 0xF721,
+  existential: 0x2203,
+  ezh: 0x0292,
+  ezhcaron: 0x01EF,
+  ezhcurl: 0x0293,
+  ezhreversed: 0x01B9,
+  ezhtail: 0x01BA,
+  f: 0x0066,
+  fadeva: 0x095E,
+  fagurmukhi: 0x0A5E,
+  fahrenheit: 0x2109,
+  fathaarabic: 0x064E,
+  fathalowarabic: 0x064E,
+  fathatanarabic: 0x064B,
+  fbopomofo: 0x3108,
+  fcircle: 0x24D5,
+  fdotaccent: 0x1E1F,
+  feharabic: 0x0641,
+  feharmenian: 0x0586,
+  fehfinalarabic: 0xFED2,
+  fehinitialarabic: 0xFED3,
+  fehmedialarabic: 0xFED4,
+  feicoptic: 0x03E5,
+  female: 0x2640,
+  ff: 0xFB00,
+  ffi: 0xFB03,
+  ffl: 0xFB04,
+  fi: 0xFB01,
+  fifteencircle: 0x246E,
+  fifteenparen: 0x2482,
+  fifteenperiod: 0x2496,
+  figuredash: 0x2012,
+  filledbox: 0x25A0,
+  filledrect: 0x25AC,
+  finalkaf: 0x05DA,
+  finalkafdagesh: 0xFB3A,
+  finalkafdageshhebrew: 0xFB3A,
+  finalkafhebrew: 0x05DA,
+  finalmem: 0x05DD,
+  finalmemhebrew: 0x05DD,
+  finalnun: 0x05DF,
+  finalnunhebrew: 0x05DF,
+  finalpe: 0x05E3,
+  finalpehebrew: 0x05E3,
+  finaltsadi: 0x05E5,
+  finaltsadihebrew: 0x05E5,
+  firsttonechinese: 0x02C9,
+  fisheye: 0x25C9,
+  fitacyrillic: 0x0473,
+  five: 0x0035,
+  fivearabic: 0x0665,
+  fivebengali: 0x09EB,
+  fivecircle: 0x2464,
+  fivecircleinversesansserif: 0x278E,
+  fivedeva: 0x096B,
+  fiveeighths: 0x215D,
+  fivegujarati: 0x0AEB,
+  fivegurmukhi: 0x0A6B,
+  fivehackarabic: 0x0665,
+  fivehangzhou: 0x3025,
+  fiveideographicparen: 0x3224,
+  fiveinferior: 0x2085,
+  fivemonospace: 0xFF15,
+  fiveoldstyle: 0xF735,
+  fiveparen: 0x2478,
+  fiveperiod: 0x248C,
+  fivepersian: 0x06F5,
+  fiveroman: 0x2174,
+  fivesuperior: 0x2075,
+  fivethai: 0x0E55,
+  fl: 0xFB02,
+  florin: 0x0192,
+  fmonospace: 0xFF46,
+  fmsquare: 0x3399,
+  fofanthai: 0x0E1F,
+  fofathai: 0x0E1D,
+  fongmanthai: 0x0E4F,
+  forall: 0x2200,
+  four: 0x0034,
+  fourarabic: 0x0664,
+  fourbengali: 0x09EA,
+  fourcircle: 0x2463,
+  fourcircleinversesansserif: 0x278D,
+  fourdeva: 0x096A,
+  fourgujarati: 0x0AEA,
+  fourgurmukhi: 0x0A6A,
+  fourhackarabic: 0x0664,
+  fourhangzhou: 0x3024,
+  fourideographicparen: 0x3223,
+  fourinferior: 0x2084,
+  fourmonospace: 0xFF14,
+  fournumeratorbengali: 0x09F7,
+  fouroldstyle: 0xF734,
+  fourparen: 0x2477,
+  fourperiod: 0x248B,
+  fourpersian: 0x06F4,
+  fourroman: 0x2173,
+  foursuperior: 0x2074,
+  fourteencircle: 0x246D,
+  fourteenparen: 0x2481,
+  fourteenperiod: 0x2495,
+  fourthai: 0x0E54,
+  fourthtonechinese: 0x02CB,
+  fparen: 0x24A1,
+  fraction: 0x2044,
+  franc: 0x20A3,
+  g: 0x0067,
+  gabengali: 0x0997,
+  gacute: 0x01F5,
+  gadeva: 0x0917,
+  gafarabic: 0x06AF,
+  gaffinalarabic: 0xFB93,
+  gafinitialarabic: 0xFB94,
+  gafmedialarabic: 0xFB95,
+  gagujarati: 0x0A97,
+  gagurmukhi: 0x0A17,
+  gahiragana: 0x304C,
+  gakatakana: 0x30AC,
+  gamma: 0x03B3,
+  gammalatinsmall: 0x0263,
+  gammasuperior: 0x02E0,
+  gangiacoptic: 0x03EB,
+  gbopomofo: 0x310D,
+  gbreve: 0x011F,
+  gcaron: 0x01E7,
+  gcedilla: 0x0123,
+  gcircle: 0x24D6,
+  gcircumflex: 0x011D,
+  gcommaaccent: 0x0123,
+  gdot: 0x0121,
+  gdotaccent: 0x0121,
+  gecyrillic: 0x0433,
+  gehiragana: 0x3052,
+  gekatakana: 0x30B2,
+  geometricallyequal: 0x2251,
+  gereshaccenthebrew: 0x059C,
+  gereshhebrew: 0x05F3,
+  gereshmuqdamhebrew: 0x059D,
+  germandbls: 0x00DF,
+  gershayimaccenthebrew: 0x059E,
+  gershayimhebrew: 0x05F4,
+  getamark: 0x3013,
+  ghabengali: 0x0998,
+  ghadarmenian: 0x0572,
+  ghadeva: 0x0918,
+  ghagujarati: 0x0A98,
+  ghagurmukhi: 0x0A18,
+  ghainarabic: 0x063A,
+  ghainfinalarabic: 0xFECE,
+  ghaininitialarabic: 0xFECF,
+  ghainmedialarabic: 0xFED0,
+  ghemiddlehookcyrillic: 0x0495,
+  ghestrokecyrillic: 0x0493,
+  gheupturncyrillic: 0x0491,
+  ghhadeva: 0x095A,
+  ghhagurmukhi: 0x0A5A,
+  ghook: 0x0260,
+  ghzsquare: 0x3393,
+  gihiragana: 0x304E,
+  gikatakana: 0x30AE,
+  gimarmenian: 0x0563,
+  gimel: 0x05D2,
+  gimeldagesh: 0xFB32,
+  gimeldageshhebrew: 0xFB32,
+  gimelhebrew: 0x05D2,
+  gjecyrillic: 0x0453,
+  glottalinvertedstroke: 0x01BE,
+  glottalstop: 0x0294,
+  glottalstopinverted: 0x0296,
+  glottalstopmod: 0x02C0,
+  glottalstopreversed: 0x0295,
+  glottalstopreversedmod: 0x02C1,
+  glottalstopreversedsuperior: 0x02E4,
+  glottalstopstroke: 0x02A1,
+  glottalstopstrokereversed: 0x02A2,
+  gmacron: 0x1E21,
+  gmonospace: 0xFF47,
+  gohiragana: 0x3054,
+  gokatakana: 0x30B4,
+  gparen: 0x24A2,
+  gpasquare: 0x33AC,
+  gradient: 0x2207,
+  grave: 0x0060,
+  gravebelowcmb: 0x0316,
+  gravecmb: 0x0300,
+  gravecomb: 0x0300,
+  gravedeva: 0x0953,
+  gravelowmod: 0x02CE,
+  gravemonospace: 0xFF40,
+  gravetonecmb: 0x0340,
+  greater: 0x003E,
+  greaterequal: 0x2265,
+  greaterequalorless: 0x22DB,
+  greatermonospace: 0xFF1E,
+  greaterorequivalent: 0x2273,
+  greaterorless: 0x2277,
+  greateroverequal: 0x2267,
+  greatersmall: 0xFE65,
+  gscript: 0x0261,
+  gstroke: 0x01E5,
+  guhiragana: 0x3050,
+  guillemotleft: 0x00AB,
+  guillemotright: 0x00BB,
+  guilsinglleft: 0x2039,
+  guilsinglright: 0x203A,
+  gukatakana: 0x30B0,
+  guramusquare: 0x3318,
+  gysquare: 0x33C9,
+  h: 0x0068,
+  haabkhasiancyrillic: 0x04A9,
+  haaltonearabic: 0x06C1,
+  habengali: 0x09B9,
+  hadescendercyrillic: 0x04B3,
+  hadeva: 0x0939,
+  hagujarati: 0x0AB9,
+  hagurmukhi: 0x0A39,
+  haharabic: 0x062D,
+  hahfinalarabic: 0xFEA2,
+  hahinitialarabic: 0xFEA3,
+  hahiragana: 0x306F,
+  hahmedialarabic: 0xFEA4,
+  haitusquare: 0x332A,
+  hakatakana: 0x30CF,
+  hakatakanahalfwidth: 0xFF8A,
+  halantgurmukhi: 0x0A4D,
+  hamzaarabic: 0x0621,
+  hamzalowarabic: 0x0621,
+  hangulfiller: 0x3164,
+  hardsigncyrillic: 0x044A,
+  harpoonleftbarbup: 0x21BC,
+  harpoonrightbarbup: 0x21C0,
+  hasquare: 0x33CA,
+  hatafpatah: 0x05B2,
+  hatafpatah16: 0x05B2,
+  hatafpatah23: 0x05B2,
+  hatafpatah2f: 0x05B2,
+  hatafpatahhebrew: 0x05B2,
+  hatafpatahnarrowhebrew: 0x05B2,
+  hatafpatahquarterhebrew: 0x05B2,
+  hatafpatahwidehebrew: 0x05B2,
+  hatafqamats: 0x05B3,
+  hatafqamats1b: 0x05B3,
+  hatafqamats28: 0x05B3,
+  hatafqamats34: 0x05B3,
+  hatafqamatshebrew: 0x05B3,
+  hatafqamatsnarrowhebrew: 0x05B3,
+  hatafqamatsquarterhebrew: 0x05B3,
+  hatafqamatswidehebrew: 0x05B3,
+  hatafsegol: 0x05B1,
+  hatafsegol17: 0x05B1,
+  hatafsegol24: 0x05B1,
+  hatafsegol30: 0x05B1,
+  hatafsegolhebrew: 0x05B1,
+  hatafsegolnarrowhebrew: 0x05B1,
+  hatafsegolquarterhebrew: 0x05B1,
+  hatafsegolwidehebrew: 0x05B1,
+  hbar: 0x0127,
+  hbopomofo: 0x310F,
+  hbrevebelow: 0x1E2B,
+  hcedilla: 0x1E29,
+  hcircle: 0x24D7,
+  hcircumflex: 0x0125,
+  hdieresis: 0x1E27,
+  hdotaccent: 0x1E23,
+  hdotbelow: 0x1E25,
+  he: 0x05D4,
+  heart: 0x2665,
+  heartsuitblack: 0x2665,
+  heartsuitwhite: 0x2661,
+  hedagesh: 0xFB34,
+  hedageshhebrew: 0xFB34,
+  hehaltonearabic: 0x06C1,
+  heharabic: 0x0647,
+  hehebrew: 0x05D4,
+  hehfinalaltonearabic: 0xFBA7,
+  hehfinalalttwoarabic: 0xFEEA,
+  hehfinalarabic: 0xFEEA,
+  hehhamzaabovefinalarabic: 0xFBA5,
+  hehhamzaaboveisolatedarabic: 0xFBA4,
+  hehinitialaltonearabic: 0xFBA8,
+  hehinitialarabic: 0xFEEB,
+  hehiragana: 0x3078,
+  hehmedialaltonearabic: 0xFBA9,
+  hehmedialarabic: 0xFEEC,
+  heiseierasquare: 0x337B,
+  hekatakana: 0x30D8,
+  hekatakanahalfwidth: 0xFF8D,
+  hekutaarusquare: 0x3336,
+  henghook: 0x0267,
+  herutusquare: 0x3339,
+  het: 0x05D7,
+  hethebrew: 0x05D7,
+  hhook: 0x0266,
+  hhooksuperior: 0x02B1,
+  hieuhacirclekorean: 0x327B,
+  hieuhaparenkorean: 0x321B,
+  hieuhcirclekorean: 0x326D,
+  hieuhkorean: 0x314E,
+  hieuhparenkorean: 0x320D,
+  hihiragana: 0x3072,
+  hikatakana: 0x30D2,
+  hikatakanahalfwidth: 0xFF8B,
+  hiriq: 0x05B4,
+  hiriq14: 0x05B4,
+  hiriq21: 0x05B4,
+  hiriq2d: 0x05B4,
+  hiriqhebrew: 0x05B4,
+  hiriqnarrowhebrew: 0x05B4,
+  hiriqquarterhebrew: 0x05B4,
+  hiriqwidehebrew: 0x05B4,
+  hlinebelow: 0x1E96,
+  hmonospace: 0xFF48,
+  hoarmenian: 0x0570,
+  hohipthai: 0x0E2B,
+  hohiragana: 0x307B,
+  hokatakana: 0x30DB,
+  hokatakanahalfwidth: 0xFF8E,
+  holam: 0x05B9,
+  holam19: 0x05B9,
+  holam26: 0x05B9,
+  holam32: 0x05B9,
+  holamhebrew: 0x05B9,
+  holamnarrowhebrew: 0x05B9,
+  holamquarterhebrew: 0x05B9,
+  holamwidehebrew: 0x05B9,
+  honokhukthai: 0x0E2E,
+  hookabovecomb: 0x0309,
+  hookcmb: 0x0309,
+  hookpalatalizedbelowcmb: 0x0321,
+  hookretroflexbelowcmb: 0x0322,
+  hoonsquare: 0x3342,
+  horicoptic: 0x03E9,
+  horizontalbar: 0x2015,
+  horncmb: 0x031B,
+  hotsprings: 0x2668,
+  house: 0x2302,
+  hparen: 0x24A3,
+  hsuperior: 0x02B0,
+  hturned: 0x0265,
+  huhiragana: 0x3075,
+  huiitosquare: 0x3333,
+  hukatakana: 0x30D5,
+  hukatakanahalfwidth: 0xFF8C,
+  hungarumlaut: 0x02DD,
+  hungarumlautcmb: 0x030B,
+  hv: 0x0195,
+  hyphen: 0x002D,
+  hypheninferior: 0xF6E5,
+  hyphenmonospace: 0xFF0D,
+  hyphensmall: 0xFE63,
+  hyphensuperior: 0xF6E6,
+  hyphentwo: 0x2010,
+  i: 0x0069,
+  iacute: 0x00ED,
+  iacyrillic: 0x044F,
+  ibengali: 0x0987,
+  ibopomofo: 0x3127,
+  ibreve: 0x012D,
+  icaron: 0x01D0,
+  icircle: 0x24D8,
+  icircumflex: 0x00EE,
+  icyrillic: 0x0456,
+  idblgrave: 0x0209,
+  ideographearthcircle: 0x328F,
+  ideographfirecircle: 0x328B,
+  ideographicallianceparen: 0x323F,
+  ideographiccallparen: 0x323A,
+  ideographiccentrecircle: 0x32A5,
+  ideographicclose: 0x3006,
+  ideographiccomma: 0x3001,
+  ideographiccommaleft: 0xFF64,
+  ideographiccongratulationparen: 0x3237,
+  ideographiccorrectcircle: 0x32A3,
+  ideographicearthparen: 0x322F,
+  ideographicenterpriseparen: 0x323D,
+  ideographicexcellentcircle: 0x329D,
+  ideographicfestivalparen: 0x3240,
+  ideographicfinancialcircle: 0x3296,
+  ideographicfinancialparen: 0x3236,
+  ideographicfireparen: 0x322B,
+  ideographichaveparen: 0x3232,
+  ideographichighcircle: 0x32A4,
+  ideographiciterationmark: 0x3005,
+  ideographiclaborcircle: 0x3298,
+  ideographiclaborparen: 0x3238,
+  ideographicleftcircle: 0x32A7,
+  ideographiclowcircle: 0x32A6,
+  ideographicmedicinecircle: 0x32A9,
+  ideographicmetalparen: 0x322E,
+  ideographicmoonparen: 0x322A,
+  ideographicnameparen: 0x3234,
+  ideographicperiod: 0x3002,
+  ideographicprintcircle: 0x329E,
+  ideographicreachparen: 0x3243,
+  ideographicrepresentparen: 0x3239,
+  ideographicresourceparen: 0x323E,
+  ideographicrightcircle: 0x32A8,
+  ideographicsecretcircle: 0x3299,
+  ideographicselfparen: 0x3242,
+  ideographicsocietyparen: 0x3233,
+  ideographicspace: 0x3000,
+  ideographicspecialparen: 0x3235,
+  ideographicstockparen: 0x3231,
+  ideographicstudyparen: 0x323B,
+  ideographicsunparen: 0x3230,
+  ideographicsuperviseparen: 0x323C,
+  ideographicwaterparen: 0x322C,
+  ideographicwoodparen: 0x322D,
+  ideographiczero: 0x3007,
+  ideographmetalcircle: 0x328E,
+  ideographmooncircle: 0x328A,
+  ideographnamecircle: 0x3294,
+  ideographsuncircle: 0x3290,
+  ideographwatercircle: 0x328C,
+  ideographwoodcircle: 0x328D,
+  ideva: 0x0907,
+  idieresis: 0x00EF,
+  idieresisacute: 0x1E2F,
+  idieresiscyrillic: 0x04E5,
+  idotbelow: 0x1ECB,
+  iebrevecyrillic: 0x04D7,
+  iecyrillic: 0x0435,
+  ieungacirclekorean: 0x3275,
+  ieungaparenkorean: 0x3215,
+  ieungcirclekorean: 0x3267,
+  ieungkorean: 0x3147,
+  ieungparenkorean: 0x3207,
+  igrave: 0x00EC,
+  igujarati: 0x0A87,
+  igurmukhi: 0x0A07,
+  ihiragana: 0x3044,
+  ihookabove: 0x1EC9,
+  iibengali: 0x0988,
+  iicyrillic: 0x0438,
+  iideva: 0x0908,
+  iigujarati: 0x0A88,
+  iigurmukhi: 0x0A08,
+  iimatragurmukhi: 0x0A40,
+  iinvertedbreve: 0x020B,
+  iishortcyrillic: 0x0439,
+  iivowelsignbengali: 0x09C0,
+  iivowelsigndeva: 0x0940,
+  iivowelsigngujarati: 0x0AC0,
+  ij: 0x0133,
+  ikatakana: 0x30A4,
+  ikatakanahalfwidth: 0xFF72,
+  ikorean: 0x3163,
+  ilde: 0x02DC,
+  iluyhebrew: 0x05AC,
+  imacron: 0x012B,
+  imacroncyrillic: 0x04E3,
+  imageorapproximatelyequal: 0x2253,
+  imatragurmukhi: 0x0A3F,
+  imonospace: 0xFF49,
+  increment: 0x2206,
+  infinity: 0x221E,
+  iniarmenian: 0x056B,
+  integral: 0x222B,
+  integralbottom: 0x2321,
+  integralbt: 0x2321,
+  integralex: 0xF8F5,
+  integraltop: 0x2320,
+  integraltp: 0x2320,
+  intersection: 0x2229,
+  intisquare: 0x3305,
+  invbullet: 0x25D8,
+  invcircle: 0x25D9,
+  invsmileface: 0x263B,
+  iocyrillic: 0x0451,
+  iogonek: 0x012F,
+  iota: 0x03B9,
+  iotadieresis: 0x03CA,
+  iotadieresistonos: 0x0390,
+  iotalatin: 0x0269,
+  iotatonos: 0x03AF,
+  iparen: 0x24A4,
+  irigurmukhi: 0x0A72,
+  ismallhiragana: 0x3043,
+  ismallkatakana: 0x30A3,
+  ismallkatakanahalfwidth: 0xFF68,
+  issharbengali: 0x09FA,
+  istroke: 0x0268,
+  isuperior: 0xF6ED,
+  iterationhiragana: 0x309D,
+  iterationkatakana: 0x30FD,
+  itilde: 0x0129,
+  itildebelow: 0x1E2D,
+  iubopomofo: 0x3129,
+  iucyrillic: 0x044E,
+  ivowelsignbengali: 0x09BF,
+  ivowelsigndeva: 0x093F,
+  ivowelsigngujarati: 0x0ABF,
+  izhitsacyrillic: 0x0475,
+  izhitsadblgravecyrillic: 0x0477,
+  j: 0x006A,
+  jaarmenian: 0x0571,
+  jabengali: 0x099C,
+  jadeva: 0x091C,
+  jagujarati: 0x0A9C,
+  jagurmukhi: 0x0A1C,
+  jbopomofo: 0x3110,
+  jcaron: 0x01F0,
+  jcircle: 0x24D9,
+  jcircumflex: 0x0135,
+  jcrossedtail: 0x029D,
+  jdotlessstroke: 0x025F,
+  jecyrillic: 0x0458,
+  jeemarabic: 0x062C,
+  jeemfinalarabic: 0xFE9E,
+  jeeminitialarabic: 0xFE9F,
+  jeemmedialarabic: 0xFEA0,
+  jeharabic: 0x0698,
+  jehfinalarabic: 0xFB8B,
+  jhabengali: 0x099D,
+  jhadeva: 0x091D,
+  jhagujarati: 0x0A9D,
+  jhagurmukhi: 0x0A1D,
+  jheharmenian: 0x057B,
+  jis: 0x3004,
+  jmonospace: 0xFF4A,
+  jparen: 0x24A5,
+  jsuperior: 0x02B2,
+  k: 0x006B,
+  kabashkircyrillic: 0x04A1,
+  kabengali: 0x0995,
+  kacute: 0x1E31,
+  kacyrillic: 0x043A,
+  kadescendercyrillic: 0x049B,
+  kadeva: 0x0915,
+  kaf: 0x05DB,
+  kafarabic: 0x0643,
+  kafdagesh: 0xFB3B,
+  kafdageshhebrew: 0xFB3B,
+  kaffinalarabic: 0xFEDA,
+  kafhebrew: 0x05DB,
+  kafinitialarabic: 0xFEDB,
+  kafmedialarabic: 0xFEDC,
+  kafrafehebrew: 0xFB4D,
+  kagujarati: 0x0A95,
+  kagurmukhi: 0x0A15,
+  kahiragana: 0x304B,
+  kahookcyrillic: 0x04C4,
+  kakatakana: 0x30AB,
+  kakatakanahalfwidth: 0xFF76,
+  kappa: 0x03BA,
+  kappasymbolgreek: 0x03F0,
+  kapyeounmieumkorean: 0x3171,
+  kapyeounphieuphkorean: 0x3184,
+  kapyeounpieupkorean: 0x3178,
+  kapyeounssangpieupkorean: 0x3179,
+  karoriisquare: 0x330D,
+  kashidaautoarabic: 0x0640,
+  kashidaautonosidebearingarabic: 0x0640,
+  kasmallkatakana: 0x30F5,
+  kasquare: 0x3384,
+  kasraarabic: 0x0650,
+  kasratanarabic: 0x064D,
+  kastrokecyrillic: 0x049F,
+  katahiraprolongmarkhalfwidth: 0xFF70,
+  kaverticalstrokecyrillic: 0x049D,
+  kbopomofo: 0x310E,
+  kcalsquare: 0x3389,
+  kcaron: 0x01E9,
+  kcedilla: 0x0137,
+  kcircle: 0x24DA,
+  kcommaaccent: 0x0137,
+  kdotbelow: 0x1E33,
+  keharmenian: 0x0584,
+  kehiragana: 0x3051,
+  kekatakana: 0x30B1,
+  kekatakanahalfwidth: 0xFF79,
+  kenarmenian: 0x056F,
+  kesmallkatakana: 0x30F6,
+  kgreenlandic: 0x0138,
+  khabengali: 0x0996,
+  khacyrillic: 0x0445,
+  khadeva: 0x0916,
+  khagujarati: 0x0A96,
+  khagurmukhi: 0x0A16,
+  khaharabic: 0x062E,
+  khahfinalarabic: 0xFEA6,
+  khahinitialarabic: 0xFEA7,
+  khahmedialarabic: 0xFEA8,
+  kheicoptic: 0x03E7,
+  khhadeva: 0x0959,
+  khhagurmukhi: 0x0A59,
+  khieukhacirclekorean: 0x3278,
+  khieukhaparenkorean: 0x3218,
+  khieukhcirclekorean: 0x326A,
+  khieukhkorean: 0x314B,
+  khieukhparenkorean: 0x320A,
+  khokhaithai: 0x0E02,
+  khokhonthai: 0x0E05,
+  khokhuatthai: 0x0E03,
+  khokhwaithai: 0x0E04,
+  khomutthai: 0x0E5B,
+  khook: 0x0199,
+  khorakhangthai: 0x0E06,
+  khzsquare: 0x3391,
+  kihiragana: 0x304D,
+  kikatakana: 0x30AD,
+  kikatakanahalfwidth: 0xFF77,
+  kiroguramusquare: 0x3315,
+  kiromeetorusquare: 0x3316,
+  kirosquare: 0x3314,
+  kiyeokacirclekorean: 0x326E,
+  kiyeokaparenkorean: 0x320E,
+  kiyeokcirclekorean: 0x3260,
+  kiyeokkorean: 0x3131,
+  kiyeokparenkorean: 0x3200,
+  kiyeoksioskorean: 0x3133,
+  kjecyrillic: 0x045C,
+  klinebelow: 0x1E35,
+  klsquare: 0x3398,
+  kmcubedsquare: 0x33A6,
+  kmonospace: 0xFF4B,
+  kmsquaredsquare: 0x33A2,
+  kohiragana: 0x3053,
+  kohmsquare: 0x33C0,
+  kokaithai: 0x0E01,
+  kokatakana: 0x30B3,
+  kokatakanahalfwidth: 0xFF7A,
+  kooposquare: 0x331E,
+  koppacyrillic: 0x0481,
+  koreanstandardsymbol: 0x327F,
+  koroniscmb: 0x0343,
+  kparen: 0x24A6,
+  kpasquare: 0x33AA,
+  ksicyrillic: 0x046F,
+  ktsquare: 0x33CF,
+  kturned: 0x029E,
+  kuhiragana: 0x304F,
+  kukatakana: 0x30AF,
+  kukatakanahalfwidth: 0xFF78,
+  kvsquare: 0x33B8,
+  kwsquare: 0x33BE,
+  l: 0x006C,
+  labengali: 0x09B2,
+  lacute: 0x013A,
+  ladeva: 0x0932,
+  lagujarati: 0x0AB2,
+  lagurmukhi: 0x0A32,
+  lakkhangyaothai: 0x0E45,
+  lamaleffinalarabic: 0xFEFC,
+  lamalefhamzaabovefinalarabic: 0xFEF8,
+  lamalefhamzaaboveisolatedarabic: 0xFEF7,
+  lamalefhamzabelowfinalarabic: 0xFEFA,
+  lamalefhamzabelowisolatedarabic: 0xFEF9,
+  lamalefisolatedarabic: 0xFEFB,
+  lamalefmaddaabovefinalarabic: 0xFEF6,
+  lamalefmaddaaboveisolatedarabic: 0xFEF5,
+  lamarabic: 0x0644,
+  lambda: 0x03BB,
+  lambdastroke: 0x019B,
+  lamed: 0x05DC,
+  lameddagesh: 0xFB3C,
+  lameddageshhebrew: 0xFB3C,
+  lamedhebrew: 0x05DC,
+  lamfinalarabic: 0xFEDE,
+  lamhahinitialarabic: 0xFCCA,
+  laminitialarabic: 0xFEDF,
+  lamjeeminitialarabic: 0xFCC9,
+  lamkhahinitialarabic: 0xFCCB,
+  lamlamhehisolatedarabic: 0xFDF2,
+  lammedialarabic: 0xFEE0,
+  lammeemhahinitialarabic: 0xFD88,
+  lammeeminitialarabic: 0xFCCC,
+  largecircle: 0x25EF,
+  lbar: 0x019A,
+  lbelt: 0x026C,
+  lbopomofo: 0x310C,
+  lcaron: 0x013E,
+  lcedilla: 0x013C,
+  lcircle: 0x24DB,
+  lcircumflexbelow: 0x1E3D,
+  lcommaaccent: 0x013C,
+  ldot: 0x0140,
+  ldotaccent: 0x0140,
+  ldotbelow: 0x1E37,
+  ldotbelowmacron: 0x1E39,
+  leftangleabovecmb: 0x031A,
+  lefttackbelowcmb: 0x0318,
+  less: 0x003C,
+  lessequal: 0x2264,
+  lessequalorgreater: 0x22DA,
+  lessmonospace: 0xFF1C,
+  lessorequivalent: 0x2272,
+  lessorgreater: 0x2276,
+  lessoverequal: 0x2266,
+  lesssmall: 0xFE64,
+  lezh: 0x026E,
+  lfblock: 0x258C,
+  lhookretroflex: 0x026D,
+  lira: 0x20A4,
+  liwnarmenian: 0x056C,
+  lj: 0x01C9,
+  ljecyrillic: 0x0459,
+  ll: 0xF6C0,
+  lladeva: 0x0933,
+  llagujarati: 0x0AB3,
+  llinebelow: 0x1E3B,
+  llladeva: 0x0934,
+  llvocalicbengali: 0x09E1,
+  llvocalicdeva: 0x0961,
+  llvocalicvowelsignbengali: 0x09E3,
+  llvocalicvowelsigndeva: 0x0963,
+  lmiddletilde: 0x026B,
+  lmonospace: 0xFF4C,
+  lmsquare: 0x33D0,
+  lochulathai: 0x0E2C,
+  logicaland: 0x2227,
+  logicalnot: 0x00AC,
+  logicalnotreversed: 0x2310,
+  logicalor: 0x2228,
+  lolingthai: 0x0E25,
+  longs: 0x017F,
+  lowlinecenterline: 0xFE4E,
+  lowlinecmb: 0x0332,
+  lowlinedashed: 0xFE4D,
+  lozenge: 0x25CA,
+  lparen: 0x24A7,
+  lslash: 0x0142,
+  lsquare: 0x2113,
+  lsuperior: 0xF6EE,
+  ltshade: 0x2591,
+  luthai: 0x0E26,
+  lvocalicbengali: 0x098C,
+  lvocalicdeva: 0x090C,
+  lvocalicvowelsignbengali: 0x09E2,
+  lvocalicvowelsigndeva: 0x0962,
+  lxsquare: 0x33D3,
+  m: 0x006D,
+  mabengali: 0x09AE,
+  macron: 0x00AF,
+  macronbelowcmb: 0x0331,
+  macroncmb: 0x0304,
+  macronlowmod: 0x02CD,
+  macronmonospace: 0xFFE3,
+  macute: 0x1E3F,
+  madeva: 0x092E,
+  magujarati: 0x0AAE,
+  magurmukhi: 0x0A2E,
+  mahapakhhebrew: 0x05A4,
+  mahapakhlefthebrew: 0x05A4,
+  mahiragana: 0x307E,
+  maichattawalowleftthai: 0xF895,
+  maichattawalowrightthai: 0xF894,
+  maichattawathai: 0x0E4B,
+  maichattawaupperleftthai: 0xF893,
+  maieklowleftthai: 0xF88C,
+  maieklowrightthai: 0xF88B,
+  maiekthai: 0x0E48,
+  maiekupperleftthai: 0xF88A,
+  maihanakatleftthai: 0xF884,
+  maihanakatthai: 0x0E31,
+  maitaikhuleftthai: 0xF889,
+  maitaikhuthai: 0x0E47,
+  maitholowleftthai: 0xF88F,
+  maitholowrightthai: 0xF88E,
+  maithothai: 0x0E49,
+  maithoupperleftthai: 0xF88D,
+  maitrilowleftthai: 0xF892,
+  maitrilowrightthai: 0xF891,
+  maitrithai: 0x0E4A,
+  maitriupperleftthai: 0xF890,
+  maiyamokthai: 0x0E46,
+  makatakana: 0x30DE,
+  makatakanahalfwidth: 0xFF8F,
+  male: 0x2642,
+  mansyonsquare: 0x3347,
+  maqafhebrew: 0x05BE,
+  mars: 0x2642,
+  masoracirclehebrew: 0x05AF,
+  masquare: 0x3383,
+  mbopomofo: 0x3107,
+  mbsquare: 0x33D4,
+  mcircle: 0x24DC,
+  mcubedsquare: 0x33A5,
+  mdotaccent: 0x1E41,
+  mdotbelow: 0x1E43,
+  meemarabic: 0x0645,
+  meemfinalarabic: 0xFEE2,
+  meeminitialarabic: 0xFEE3,
+  meemmedialarabic: 0xFEE4,
+  meemmeeminitialarabic: 0xFCD1,
+  meemmeemisolatedarabic: 0xFC48,
+  meetorusquare: 0x334D,
+  mehiragana: 0x3081,
+  meizierasquare: 0x337E,
+  mekatakana: 0x30E1,
+  mekatakanahalfwidth: 0xFF92,
+  mem: 0x05DE,
+  memdagesh: 0xFB3E,
+  memdageshhebrew: 0xFB3E,
+  memhebrew: 0x05DE,
+  menarmenian: 0x0574,
+  merkhahebrew: 0x05A5,
+  merkhakefulahebrew: 0x05A6,
+  merkhakefulalefthebrew: 0x05A6,
+  merkhalefthebrew: 0x05A5,
+  mhook: 0x0271,
+  mhzsquare: 0x3392,
+  middledotkatakanahalfwidth: 0xFF65,
+  middot: 0x00B7,
+  mieumacirclekorean: 0x3272,
+  mieumaparenkorean: 0x3212,
+  mieumcirclekorean: 0x3264,
+  mieumkorean: 0x3141,
+  mieumpansioskorean: 0x3170,
+  mieumparenkorean: 0x3204,
+  mieumpieupkorean: 0x316E,
+  mieumsioskorean: 0x316F,
+  mihiragana: 0x307F,
+  mikatakana: 0x30DF,
+  mikatakanahalfwidth: 0xFF90,
+  minus: 0x2212,
+  minusbelowcmb: 0x0320,
+  minuscircle: 0x2296,
+  minusmod: 0x02D7,
+  minusplus: 0x2213,
+  minute: 0x2032,
+  miribaarusquare: 0x334A,
+  mirisquare: 0x3349,
+  mlonglegturned: 0x0270,
+  mlsquare: 0x3396,
+  mmcubedsquare: 0x33A3,
+  mmonospace: 0xFF4D,
+  mmsquaredsquare: 0x339F,
+  mohiragana: 0x3082,
+  mohmsquare: 0x33C1,
+  mokatakana: 0x30E2,
+  mokatakanahalfwidth: 0xFF93,
+  molsquare: 0x33D6,
+  momathai: 0x0E21,
+  moverssquare: 0x33A7,
+  moverssquaredsquare: 0x33A8,
+  mparen: 0x24A8,
+  mpasquare: 0x33AB,
+  mssquare: 0x33B3,
+  msuperior: 0xF6EF,
+  mturned: 0x026F,
+  mu: 0x00B5,
+  mu1: 0x00B5,
+  muasquare: 0x3382,
+  muchgreater: 0x226B,
+  muchless: 0x226A,
+  mufsquare: 0x338C,
+  mugreek: 0x03BC,
+  mugsquare: 0x338D,
+  muhiragana: 0x3080,
+  mukatakana: 0x30E0,
+  mukatakanahalfwidth: 0xFF91,
+  mulsquare: 0x3395,
+  multiply: 0x00D7,
+  mumsquare: 0x339B,
+  munahhebrew: 0x05A3,
+  munahlefthebrew: 0x05A3,
+  musicalnote: 0x266A,
+  musicalnotedbl: 0x266B,
+  musicflatsign: 0x266D,
+  musicsharpsign: 0x266F,
+  mussquare: 0x33B2,
+  muvsquare: 0x33B6,
+  muwsquare: 0x33BC,
+  mvmegasquare: 0x33B9,
+  mvsquare: 0x33B7,
+  mwmegasquare: 0x33BF,
+  mwsquare: 0x33BD,
+  n: 0x006E,
+  nabengali: 0x09A8,
+  nabla: 0x2207,
+  nacute: 0x0144,
+  nadeva: 0x0928,
+  nagujarati: 0x0AA8,
+  nagurmukhi: 0x0A28,
+  nahiragana: 0x306A,
+  nakatakana: 0x30CA,
+  nakatakanahalfwidth: 0xFF85,
+  napostrophe: 0x0149,
+  nasquare: 0x3381,
+  nbopomofo: 0x310B,
+  nbspace: 0x00A0,
+  ncaron: 0x0148,
+  ncedilla: 0x0146,
+  ncircle: 0x24DD,
+  ncircumflexbelow: 0x1E4B,
+  ncommaaccent: 0x0146,
+  ndotaccent: 0x1E45,
+  ndotbelow: 0x1E47,
+  nehiragana: 0x306D,
+  nekatakana: 0x30CD,
+  nekatakanahalfwidth: 0xFF88,
+  newsheqelsign: 0x20AA,
+  nfsquare: 0x338B,
+  ngabengali: 0x0999,
+  ngadeva: 0x0919,
+  ngagujarati: 0x0A99,
+  ngagurmukhi: 0x0A19,
+  ngonguthai: 0x0E07,
+  nhiragana: 0x3093,
+  nhookleft: 0x0272,
+  nhookretroflex: 0x0273,
+  nieunacirclekorean: 0x326F,
+  nieunaparenkorean: 0x320F,
+  nieuncieuckorean: 0x3135,
+  nieuncirclekorean: 0x3261,
+  nieunhieuhkorean: 0x3136,
+  nieunkorean: 0x3134,
+  nieunpansioskorean: 0x3168,
+  nieunparenkorean: 0x3201,
+  nieunsioskorean: 0x3167,
+  nieuntikeutkorean: 0x3166,
+  nihiragana: 0x306B,
+  nikatakana: 0x30CB,
+  nikatakanahalfwidth: 0xFF86,
+  nikhahitleftthai: 0xF899,
+  nikhahitthai: 0x0E4D,
+  nine: 0x0039,
+  ninearabic: 0x0669,
+  ninebengali: 0x09EF,
+  ninecircle: 0x2468,
+  ninecircleinversesansserif: 0x2792,
+  ninedeva: 0x096F,
+  ninegujarati: 0x0AEF,
+  ninegurmukhi: 0x0A6F,
+  ninehackarabic: 0x0669,
+  ninehangzhou: 0x3029,
+  nineideographicparen: 0x3228,
+  nineinferior: 0x2089,
+  ninemonospace: 0xFF19,
+  nineoldstyle: 0xF739,
+  nineparen: 0x247C,
+  nineperiod: 0x2490,
+  ninepersian: 0x06F9,
+  nineroman: 0x2178,
+  ninesuperior: 0x2079,
+  nineteencircle: 0x2472,
+  nineteenparen: 0x2486,
+  nineteenperiod: 0x249A,
+  ninethai: 0x0E59,
+  nj: 0x01CC,
+  njecyrillic: 0x045A,
+  nkatakana: 0x30F3,
+  nkatakanahalfwidth: 0xFF9D,
+  nlegrightlong: 0x019E,
+  nlinebelow: 0x1E49,
+  nmonospace: 0xFF4E,
+  nmsquare: 0x339A,
+  nnabengali: 0x09A3,
+  nnadeva: 0x0923,
+  nnagujarati: 0x0AA3,
+  nnagurmukhi: 0x0A23,
+  nnnadeva: 0x0929,
+  nohiragana: 0x306E,
+  nokatakana: 0x30CE,
+  nokatakanahalfwidth: 0xFF89,
+  nonbreakingspace: 0x00A0,
+  nonenthai: 0x0E13,
+  nonuthai: 0x0E19,
+  noonarabic: 0x0646,
+  noonfinalarabic: 0xFEE6,
+  noonghunnaarabic: 0x06BA,
+  noonghunnafinalarabic: 0xFB9F,
+  nooninitialarabic: 0xFEE7,
+  noonjeeminitialarabic: 0xFCD2,
+  noonjeemisolatedarabic: 0xFC4B,
+  noonmedialarabic: 0xFEE8,
+  noonmeeminitialarabic: 0xFCD5,
+  noonmeemisolatedarabic: 0xFC4E,
+  noonnoonfinalarabic: 0xFC8D,
+  notcontains: 0x220C,
+  notelement: 0x2209,
+  notelementof: 0x2209,
+  notequal: 0x2260,
+  notgreater: 0x226F,
+  notgreaternorequal: 0x2271,
+  notgreaternorless: 0x2279,
+  notidentical: 0x2262,
+  notless: 0x226E,
+  notlessnorequal: 0x2270,
+  notparallel: 0x2226,
+  notprecedes: 0x2280,
+  notsubset: 0x2284,
+  notsucceeds: 0x2281,
+  notsuperset: 0x2285,
+  nowarmenian: 0x0576,
+  nparen: 0x24A9,
+  nssquare: 0x33B1,
+  nsuperior: 0x207F,
+  ntilde: 0x00F1,
+  nu: 0x03BD,
+  nuhiragana: 0x306C,
+  nukatakana: 0x30CC,
+  nukatakanahalfwidth: 0xFF87,
+  nuktabengali: 0x09BC,
+  nuktadeva: 0x093C,
+  nuktagujarati: 0x0ABC,
+  nuktagurmukhi: 0x0A3C,
+  numbersign: 0x0023,
+  numbersignmonospace: 0xFF03,
+  numbersignsmall: 0xFE5F,
+  numeralsigngreek: 0x0374,
+  numeralsignlowergreek: 0x0375,
+  numero: 0x2116,
+  nun: 0x05E0,
+  nundagesh: 0xFB40,
+  nundageshhebrew: 0xFB40,
+  nunhebrew: 0x05E0,
+  nvsquare: 0x33B5,
+  nwsquare: 0x33BB,
+  nyabengali: 0x099E,
+  nyadeva: 0x091E,
+  nyagujarati: 0x0A9E,
+  nyagurmukhi: 0x0A1E,
+  o: 0x006F,
+  oacute: 0x00F3,
+  oangthai: 0x0E2D,
+  obarred: 0x0275,
+  obarredcyrillic: 0x04E9,
+  obarreddieresiscyrillic: 0x04EB,
+  obengali: 0x0993,
+  obopomofo: 0x311B,
+  obreve: 0x014F,
+  ocandradeva: 0x0911,
+  ocandragujarati: 0x0A91,
+  ocandravowelsigndeva: 0x0949,
+  ocandravowelsigngujarati: 0x0AC9,
+  ocaron: 0x01D2,
+  ocircle: 0x24DE,
+  ocircumflex: 0x00F4,
+  ocircumflexacute: 0x1ED1,
+  ocircumflexdotbelow: 0x1ED9,
+  ocircumflexgrave: 0x1ED3,
+  ocircumflexhookabove: 0x1ED5,
+  ocircumflextilde: 0x1ED7,
+  ocyrillic: 0x043E,
+  odblacute: 0x0151,
+  odblgrave: 0x020D,
+  odeva: 0x0913,
+  odieresis: 0x00F6,
+  odieresiscyrillic: 0x04E7,
+  odotbelow: 0x1ECD,
+  oe: 0x0153,
+  oekorean: 0x315A,
+  ogonek: 0x02DB,
+  ogonekcmb: 0x0328,
+  ograve: 0x00F2,
+  ogujarati: 0x0A93,
+  oharmenian: 0x0585,
+  ohiragana: 0x304A,
+  ohookabove: 0x1ECF,
+  ohorn: 0x01A1,
+  ohornacute: 0x1EDB,
+  ohorndotbelow: 0x1EE3,
+  ohorngrave: 0x1EDD,
+  ohornhookabove: 0x1EDF,
+  ohorntilde: 0x1EE1,
+  ohungarumlaut: 0x0151,
+  oi: 0x01A3,
+  oinvertedbreve: 0x020F,
+  okatakana: 0x30AA,
+  okatakanahalfwidth: 0xFF75,
+  okorean: 0x3157,
+  olehebrew: 0x05AB,
+  omacron: 0x014D,
+  omacronacute: 0x1E53,
+  omacrongrave: 0x1E51,
+  omdeva: 0x0950,
+  omega: 0x03C9,
+  omega1: 0x03D6,
+  omegacyrillic: 0x0461,
+  omegalatinclosed: 0x0277,
+  omegaroundcyrillic: 0x047B,
+  omegatitlocyrillic: 0x047D,
+  omegatonos: 0x03CE,
+  omgujarati: 0x0AD0,
+  omicron: 0x03BF,
+  omicrontonos: 0x03CC,
+  omonospace: 0xFF4F,
+  one: 0x0031,
+  onearabic: 0x0661,
+  onebengali: 0x09E7,
+  onecircle: 0x2460,
+  onecircleinversesansserif: 0x278A,
+  onedeva: 0x0967,
+  onedotenleader: 0x2024,
+  oneeighth: 0x215B,
+  onefitted: 0xF6DC,
+  onegujarati: 0x0AE7,
+  onegurmukhi: 0x0A67,
+  onehackarabic: 0x0661,
+  onehalf: 0x00BD,
+  onehangzhou: 0x3021,
+  oneideographicparen: 0x3220,
+  oneinferior: 0x2081,
+  onemonospace: 0xFF11,
+  onenumeratorbengali: 0x09F4,
+  oneoldstyle: 0xF731,
+  oneparen: 0x2474,
+  oneperiod: 0x2488,
+  onepersian: 0x06F1,
+  onequarter: 0x00BC,
+  oneroman: 0x2170,
+  onesuperior: 0x00B9,
+  onethai: 0x0E51,
+  onethird: 0x2153,
+  oogonek: 0x01EB,
+  oogonekmacron: 0x01ED,
+  oogurmukhi: 0x0A13,
+  oomatragurmukhi: 0x0A4B,
+  oopen: 0x0254,
+  oparen: 0x24AA,
+  openbullet: 0x25E6,
+  option: 0x2325,
+  ordfeminine: 0x00AA,
+  ordmasculine: 0x00BA,
+  orthogonal: 0x221F,
+  oshortdeva: 0x0912,
+  oshortvowelsigndeva: 0x094A,
+  oslash: 0x00F8,
+  oslashacute: 0x01FF,
+  osmallhiragana: 0x3049,
+  osmallkatakana: 0x30A9,
+  osmallkatakanahalfwidth: 0xFF6B,
+  ostrokeacute: 0x01FF,
+  osuperior: 0xF6F0,
+  otcyrillic: 0x047F,
+  otilde: 0x00F5,
+  otildeacute: 0x1E4D,
+  otildedieresis: 0x1E4F,
+  oubopomofo: 0x3121,
+  overline: 0x203E,
+  overlinecenterline: 0xFE4A,
+  overlinecmb: 0x0305,
+  overlinedashed: 0xFE49,
+  overlinedblwavy: 0xFE4C,
+  overlinewavy: 0xFE4B,
+  overscore: 0x00AF,
+  ovowelsignbengali: 0x09CB,
+  ovowelsigndeva: 0x094B,
+  ovowelsigngujarati: 0x0ACB,
+  p: 0x0070,
+  paampssquare: 0x3380,
+  paasentosquare: 0x332B,
+  pabengali: 0x09AA,
+  pacute: 0x1E55,
+  padeva: 0x092A,
+  pagedown: 0x21DF,
+  pageup: 0x21DE,
+  pagujarati: 0x0AAA,
+  pagurmukhi: 0x0A2A,
+  pahiragana: 0x3071,
+  paiyannoithai: 0x0E2F,
+  pakatakana: 0x30D1,
+  palatalizationcyrilliccmb: 0x0484,
+  palochkacyrillic: 0x04C0,
+  pansioskorean: 0x317F,
+  paragraph: 0x00B6,
+  parallel: 0x2225,
+  parenleft: 0x0028,
+  parenleftaltonearabic: 0xFD3E,
+  parenleftbt: 0xF8ED,
+  parenleftex: 0xF8EC,
+  parenleftinferior: 0x208D,
+  parenleftmonospace: 0xFF08,
+  parenleftsmall: 0xFE59,
+  parenleftsuperior: 0x207D,
+  parenlefttp: 0xF8EB,
+  parenleftvertical: 0xFE35,
+  parenright: 0x0029,
+  parenrightaltonearabic: 0xFD3F,
+  parenrightbt: 0xF8F8,
+  parenrightex: 0xF8F7,
+  parenrightinferior: 0x208E,
+  parenrightmonospace: 0xFF09,
+  parenrightsmall: 0xFE5A,
+  parenrightsuperior: 0x207E,
+  parenrighttp: 0xF8F6,
+  parenrightvertical: 0xFE36,
+  partialdiff: 0x2202,
+  paseqhebrew: 0x05C0,
+  pashtahebrew: 0x0599,
+  pasquare: 0x33A9,
+  patah: 0x05B7,
+  patah11: 0x05B7,
+  patah1d: 0x05B7,
+  patah2a: 0x05B7,
+  patahhebrew: 0x05B7,
+  patahnarrowhebrew: 0x05B7,
+  patahquarterhebrew: 0x05B7,
+  patahwidehebrew: 0x05B7,
+  pazerhebrew: 0x05A1,
+  pbopomofo: 0x3106,
+  pcircle: 0x24DF,
+  pdotaccent: 0x1E57,
+  pe: 0x05E4,
+  pecyrillic: 0x043F,
+  pedagesh: 0xFB44,
+  pedageshhebrew: 0xFB44,
+  peezisquare: 0x333B,
+  pefinaldageshhebrew: 0xFB43,
+  peharabic: 0x067E,
+  peharmenian: 0x057A,
+  pehebrew: 0x05E4,
+  pehfinalarabic: 0xFB57,
+  pehinitialarabic: 0xFB58,
+  pehiragana: 0x307A,
+  pehmedialarabic: 0xFB59,
+  pekatakana: 0x30DA,
+  pemiddlehookcyrillic: 0x04A7,
+  perafehebrew: 0xFB4E,
+  percent: 0x0025,
+  percentarabic: 0x066A,
+  percentmonospace: 0xFF05,
+  percentsmall: 0xFE6A,
+  period: 0x002E,
+  periodarmenian: 0x0589,
+  periodcentered: 0x00B7,
+  periodhalfwidth: 0xFF61,
+  periodinferior: 0xF6E7,
+  periodmonospace: 0xFF0E,
+  periodsmall: 0xFE52,
+  periodsuperior: 0xF6E8,
+  perispomenigreekcmb: 0x0342,
+  perpendicular: 0x22A5,
+  perthousand: 0x2030,
+  peseta: 0x20A7,
+  pfsquare: 0x338A,
+  phabengali: 0x09AB,
+  phadeva: 0x092B,
+  phagujarati: 0x0AAB,
+  phagurmukhi: 0x0A2B,
+  phi: 0x03C6,
+  phi1: 0x03D5,
+  phieuphacirclekorean: 0x327A,
+  phieuphaparenkorean: 0x321A,
+  phieuphcirclekorean: 0x326C,
+  phieuphkorean: 0x314D,
+  phieuphparenkorean: 0x320C,
+  philatin: 0x0278,
+  phinthuthai: 0x0E3A,
+  phisymbolgreek: 0x03D5,
+  phook: 0x01A5,
+  phophanthai: 0x0E1E,
+  phophungthai: 0x0E1C,
+  phosamphaothai: 0x0E20,
+  pi: 0x03C0,
+  pieupacirclekorean: 0x3273,
+  pieupaparenkorean: 0x3213,
+  pieupcieuckorean: 0x3176,
+  pieupcirclekorean: 0x3265,
+  pieupkiyeokkorean: 0x3172,
+  pieupkorean: 0x3142,
+  pieupparenkorean: 0x3205,
+  pieupsioskiyeokkorean: 0x3174,
+  pieupsioskorean: 0x3144,
+  pieupsiostikeutkorean: 0x3175,
+  pieupthieuthkorean: 0x3177,
+  pieuptikeutkorean: 0x3173,
+  pihiragana: 0x3074,
+  pikatakana: 0x30D4,
+  pisymbolgreek: 0x03D6,
+  piwrarmenian: 0x0583,
+  plus: 0x002B,
+  plusbelowcmb: 0x031F,
+  pluscircle: 0x2295,
+  plusminus: 0x00B1,
+  plusmod: 0x02D6,
+  plusmonospace: 0xFF0B,
+  plussmall: 0xFE62,
+  plussuperior: 0x207A,
+  pmonospace: 0xFF50,
+  pmsquare: 0x33D8,
+  pohiragana: 0x307D,
+  pointingindexdownwhite: 0x261F,
+  pointingindexleftwhite: 0x261C,
+  pointingindexrightwhite: 0x261E,
+  pointingindexupwhite: 0x261D,
+  pokatakana: 0x30DD,
+  poplathai: 0x0E1B,
+  postalmark: 0x3012,
+  postalmarkface: 0x3020,
+  pparen: 0x24AB,
+  precedes: 0x227A,
+  prescription: 0x211E,
+  primemod: 0x02B9,
+  primereversed: 0x2035,
+  product: 0x220F,
+  projective: 0x2305,
+  prolongedkana: 0x30FC,
+  propellor: 0x2318,
+  propersubset: 0x2282,
+  propersuperset: 0x2283,
+  proportion: 0x2237,
+  proportional: 0x221D,
+  psi: 0x03C8,
+  psicyrillic: 0x0471,
+  psilipneumatacyrilliccmb: 0x0486,
+  pssquare: 0x33B0,
+  puhiragana: 0x3077,
+  pukatakana: 0x30D7,
+  pvsquare: 0x33B4,
+  pwsquare: 0x33BA,
+  q: 0x0071,
+  qadeva: 0x0958,
+  qadmahebrew: 0x05A8,
+  qafarabic: 0x0642,
+  qaffinalarabic: 0xFED6,
+  qafinitialarabic: 0xFED7,
+  qafmedialarabic: 0xFED8,
+  qamats: 0x05B8,
+  qamats10: 0x05B8,
+  qamats1a: 0x05B8,
+  qamats1c: 0x05B8,
+  qamats27: 0x05B8,
+  qamats29: 0x05B8,
+  qamats33: 0x05B8,
+  qamatsde: 0x05B8,
+  qamatshebrew: 0x05B8,
+  qamatsnarrowhebrew: 0x05B8,
+  qamatsqatanhebrew: 0x05B8,
+  qamatsqatannarrowhebrew: 0x05B8,
+  qamatsqatanquarterhebrew: 0x05B8,
+  qamatsqatanwidehebrew: 0x05B8,
+  qamatsquarterhebrew: 0x05B8,
+  qamatswidehebrew: 0x05B8,
+  qarneyparahebrew: 0x059F,
+  qbopomofo: 0x3111,
+  qcircle: 0x24E0,
+  qhook: 0x02A0,
+  qmonospace: 0xFF51,
+  qof: 0x05E7,
+  qofdagesh: 0xFB47,
+  qofdageshhebrew: 0xFB47,
+  qofhebrew: 0x05E7,
+  qparen: 0x24AC,
+  quarternote: 0x2669,
+  qubuts: 0x05BB,
+  qubuts18: 0x05BB,
+  qubuts25: 0x05BB,
+  qubuts31: 0x05BB,
+  qubutshebrew: 0x05BB,
+  qubutsnarrowhebrew: 0x05BB,
+  qubutsquarterhebrew: 0x05BB,
+  qubutswidehebrew: 0x05BB,
+  question: 0x003F,
+  questionarabic: 0x061F,
+  questionarmenian: 0x055E,
+  questiondown: 0x00BF,
+  questiondownsmall: 0xF7BF,
+  questiongreek: 0x037E,
+  questionmonospace: 0xFF1F,
+  questionsmall: 0xF73F,
+  quotedbl: 0x0022,
+  quotedblbase: 0x201E,
+  quotedblleft: 0x201C,
+  quotedblmonospace: 0xFF02,
+  quotedblprime: 0x301E,
+  quotedblprimereversed: 0x301D,
+  quotedblright: 0x201D,
+  quoteleft: 0x2018,
+  quoteleftreversed: 0x201B,
+  quotereversed: 0x201B,
+  quoteright: 0x2019,
+  quoterightn: 0x0149,
+  quotesinglbase: 0x201A,
+  quotesingle: 0x0027,
+  quotesinglemonospace: 0xFF07,
+  r: 0x0072,
+  raarmenian: 0x057C,
+  rabengali: 0x09B0,
+  racute: 0x0155,
+  radeva: 0x0930,
+  radical: 0x221A,
+  radicalex: 0xF8E5,
+  radoverssquare: 0x33AE,
+  radoverssquaredsquare: 0x33AF,
+  radsquare: 0x33AD,
+  rafe: 0x05BF,
+  rafehebrew: 0x05BF,
+  ragujarati: 0x0AB0,
+  ragurmukhi: 0x0A30,
+  rahiragana: 0x3089,
+  rakatakana: 0x30E9,
+  rakatakanahalfwidth: 0xFF97,
+  ralowerdiagonalbengali: 0x09F1,
+  ramiddlediagonalbengali: 0x09F0,
+  ramshorn: 0x0264,
+  ratio: 0x2236,
+  rbopomofo: 0x3116,
+  rcaron: 0x0159,
+  rcedilla: 0x0157,
+  rcircle: 0x24E1,
+  rcommaaccent: 0x0157,
+  rdblgrave: 0x0211,
+  rdotaccent: 0x1E59,
+  rdotbelow: 0x1E5B,
+  rdotbelowmacron: 0x1E5D,
+  referencemark: 0x203B,
+  reflexsubset: 0x2286,
+  reflexsuperset: 0x2287,
+  registered: 0x00AE,
+  registersans: 0xF8E8,
+  registerserif: 0xF6DA,
+  reharabic: 0x0631,
+  reharmenian: 0x0580,
+  rehfinalarabic: 0xFEAE,
+  rehiragana: 0x308C,
+  rekatakana: 0x30EC,
+  rekatakanahalfwidth: 0xFF9A,
+  resh: 0x05E8,
+  reshdageshhebrew: 0xFB48,
+  reshhebrew: 0x05E8,
+  reversedtilde: 0x223D,
+  reviahebrew: 0x0597,
+  reviamugrashhebrew: 0x0597,
+  revlogicalnot: 0x2310,
+  rfishhook: 0x027E,
+  rfishhookreversed: 0x027F,
+  rhabengali: 0x09DD,
+  rhadeva: 0x095D,
+  rho: 0x03C1,
+  rhook: 0x027D,
+  rhookturned: 0x027B,
+  rhookturnedsuperior: 0x02B5,
+  rhosymbolgreek: 0x03F1,
+  rhotichookmod: 0x02DE,
+  rieulacirclekorean: 0x3271,
+  rieulaparenkorean: 0x3211,
+  rieulcirclekorean: 0x3263,
+  rieulhieuhkorean: 0x3140,
+  rieulkiyeokkorean: 0x313A,
+  rieulkiyeoksioskorean: 0x3169,
+  rieulkorean: 0x3139,
+  rieulmieumkorean: 0x313B,
+  rieulpansioskorean: 0x316C,
+  rieulparenkorean: 0x3203,
+  rieulphieuphkorean: 0x313F,
+  rieulpieupkorean: 0x313C,
+  rieulpieupsioskorean: 0x316B,
+  rieulsioskorean: 0x313D,
+  rieulthieuthkorean: 0x313E,
+  rieultikeutkorean: 0x316A,
+  rieulyeorinhieuhkorean: 0x316D,
+  rightangle: 0x221F,
+  righttackbelowcmb: 0x0319,
+  righttriangle: 0x22BF,
+  rihiragana: 0x308A,
+  rikatakana: 0x30EA,
+  rikatakanahalfwidth: 0xFF98,
+  ring: 0x02DA,
+  ringbelowcmb: 0x0325,
+  ringcmb: 0x030A,
+  ringhalfleft: 0x02BF,
+  ringhalfleftarmenian: 0x0559,
+  ringhalfleftbelowcmb: 0x031C,
+  ringhalfleftcentered: 0x02D3,
+  ringhalfright: 0x02BE,
+  ringhalfrightbelowcmb: 0x0339,
+  ringhalfrightcentered: 0x02D2,
+  rinvertedbreve: 0x0213,
+  rittorusquare: 0x3351,
+  rlinebelow: 0x1E5F,
+  rlongleg: 0x027C,
+  rlonglegturned: 0x027A,
+  rmonospace: 0xFF52,
+  rohiragana: 0x308D,
+  rokatakana: 0x30ED,
+  rokatakanahalfwidth: 0xFF9B,
+  roruathai: 0x0E23,
+  rparen: 0x24AD,
+  rrabengali: 0x09DC,
+  rradeva: 0x0931,
+  rragurmukhi: 0x0A5C,
+  rreharabic: 0x0691,
+  rrehfinalarabic: 0xFB8D,
+  rrvocalicbengali: 0x09E0,
+  rrvocalicdeva: 0x0960,
+  rrvocalicgujarati: 0x0AE0,
+  rrvocalicvowelsignbengali: 0x09C4,
+  rrvocalicvowelsigndeva: 0x0944,
+  rrvocalicvowelsigngujarati: 0x0AC4,
+  rsuperior: 0xF6F1,
+  rtblock: 0x2590,
+  rturned: 0x0279,
+  rturnedsuperior: 0x02B4,
+  ruhiragana: 0x308B,
+  rukatakana: 0x30EB,
+  rukatakanahalfwidth: 0xFF99,
+  rupeemarkbengali: 0x09F2,
+  rupeesignbengali: 0x09F3,
+  rupiah: 0xF6DD,
+  ruthai: 0x0E24,
+  rvocalicbengali: 0x098B,
+  rvocalicdeva: 0x090B,
+  rvocalicgujarati: 0x0A8B,
+  rvocalicvowelsignbengali: 0x09C3,
+  rvocalicvowelsigndeva: 0x0943,
+  rvocalicvowelsigngujarati: 0x0AC3,
+  s: 0x0073,
+  sabengali: 0x09B8,
+  sacute: 0x015B,
+  sacutedotaccent: 0x1E65,
+  sadarabic: 0x0635,
+  sadeva: 0x0938,
+  sadfinalarabic: 0xFEBA,
+  sadinitialarabic: 0xFEBB,
+  sadmedialarabic: 0xFEBC,
+  sagujarati: 0x0AB8,
+  sagurmukhi: 0x0A38,
+  sahiragana: 0x3055,
+  sakatakana: 0x30B5,
+  sakatakanahalfwidth: 0xFF7B,
+  sallallahoualayhewasallamarabic: 0xFDFA,
+  samekh: 0x05E1,
+  samekhdagesh: 0xFB41,
+  samekhdageshhebrew: 0xFB41,
+  samekhhebrew: 0x05E1,
+  saraaathai: 0x0E32,
+  saraaethai: 0x0E41,
+  saraaimaimalaithai: 0x0E44,
+  saraaimaimuanthai: 0x0E43,
+  saraamthai: 0x0E33,
+  saraathai: 0x0E30,
+  saraethai: 0x0E40,
+  saraiileftthai: 0xF886,
+  saraiithai: 0x0E35,
+  saraileftthai: 0xF885,
+  saraithai: 0x0E34,
+  saraothai: 0x0E42,
+  saraueeleftthai: 0xF888,
+  saraueethai: 0x0E37,
+  saraueleftthai: 0xF887,
+  sarauethai: 0x0E36,
+  sarauthai: 0x0E38,
+  sarauuthai: 0x0E39,
+  sbopomofo: 0x3119,
+  scaron: 0x0161,
+  scarondotaccent: 0x1E67,
+  scedilla: 0x015F,
+  schwa: 0x0259,
+  schwacyrillic: 0x04D9,
+  schwadieresiscyrillic: 0x04DB,
+  schwahook: 0x025A,
+  scircle: 0x24E2,
+  scircumflex: 0x015D,
+  scommaaccent: 0x0219,
+  sdotaccent: 0x1E61,
+  sdotbelow: 0x1E63,
+  sdotbelowdotaccent: 0x1E69,
+  seagullbelowcmb: 0x033C,
+  second: 0x2033,
+  secondtonechinese: 0x02CA,
+  section: 0x00A7,
+  seenarabic: 0x0633,
+  seenfinalarabic: 0xFEB2,
+  seeninitialarabic: 0xFEB3,
+  seenmedialarabic: 0xFEB4,
+  segol: 0x05B6,
+  segol13: 0x05B6,
+  segol1f: 0x05B6,
+  segol2c: 0x05B6,
+  segolhebrew: 0x05B6,
+  segolnarrowhebrew: 0x05B6,
+  segolquarterhebrew: 0x05B6,
+  segoltahebrew: 0x0592,
+  segolwidehebrew: 0x05B6,
+  seharmenian: 0x057D,
+  sehiragana: 0x305B,
+  sekatakana: 0x30BB,
+  sekatakanahalfwidth: 0xFF7E,
+  semicolon: 0x003B,
+  semicolonarabic: 0x061B,
+  semicolonmonospace: 0xFF1B,
+  semicolonsmall: 0xFE54,
+  semivoicedmarkkana: 0x309C,
+  semivoicedmarkkanahalfwidth: 0xFF9F,
+  sentisquare: 0x3322,
+  sentosquare: 0x3323,
+  seven: 0x0037,
+  sevenarabic: 0x0667,
+  sevenbengali: 0x09ED,
+  sevencircle: 0x2466,
+  sevencircleinversesansserif: 0x2790,
+  sevendeva: 0x096D,
+  seveneighths: 0x215E,
+  sevengujarati: 0x0AED,
+  sevengurmukhi: 0x0A6D,
+  sevenhackarabic: 0x0667,
+  sevenhangzhou: 0x3027,
+  sevenideographicparen: 0x3226,
+  seveninferior: 0x2087,
+  sevenmonospace: 0xFF17,
+  sevenoldstyle: 0xF737,
+  sevenparen: 0x247A,
+  sevenperiod: 0x248E,
+  sevenpersian: 0x06F7,
+  sevenroman: 0x2176,
+  sevensuperior: 0x2077,
+  seventeencircle: 0x2470,
+  seventeenparen: 0x2484,
+  seventeenperiod: 0x2498,
+  seventhai: 0x0E57,
+  sfthyphen: 0x00AD,
+  shaarmenian: 0x0577,
+  shabengali: 0x09B6,
+  shacyrillic: 0x0448,
+  shaddaarabic: 0x0651,
+  shaddadammaarabic: 0xFC61,
+  shaddadammatanarabic: 0xFC5E,
+  shaddafathaarabic: 0xFC60,
+  shaddakasraarabic: 0xFC62,
+  shaddakasratanarabic: 0xFC5F,
+  shade: 0x2592,
+  shadedark: 0x2593,
+  shadelight: 0x2591,
+  shademedium: 0x2592,
+  shadeva: 0x0936,
+  shagujarati: 0x0AB6,
+  shagurmukhi: 0x0A36,
+  shalshelethebrew: 0x0593,
+  shbopomofo: 0x3115,
+  shchacyrillic: 0x0449,
+  sheenarabic: 0x0634,
+  sheenfinalarabic: 0xFEB6,
+  sheeninitialarabic: 0xFEB7,
+  sheenmedialarabic: 0xFEB8,
+  sheicoptic: 0x03E3,
+  sheqel: 0x20AA,
+  sheqelhebrew: 0x20AA,
+  sheva: 0x05B0,
+  sheva115: 0x05B0,
+  sheva15: 0x05B0,
+  sheva22: 0x05B0,
+  sheva2e: 0x05B0,
+  shevahebrew: 0x05B0,
+  shevanarrowhebrew: 0x05B0,
+  shevaquarterhebrew: 0x05B0,
+  shevawidehebrew: 0x05B0,
+  shhacyrillic: 0x04BB,
+  shimacoptic: 0x03ED,
+  shin: 0x05E9,
+  shindagesh: 0xFB49,
+  shindageshhebrew: 0xFB49,
+  shindageshshindot: 0xFB2C,
+  shindageshshindothebrew: 0xFB2C,
+  shindageshsindot: 0xFB2D,
+  shindageshsindothebrew: 0xFB2D,
+  shindothebrew: 0x05C1,
+  shinhebrew: 0x05E9,
+  shinshindot: 0xFB2A,
+  shinshindothebrew: 0xFB2A,
+  shinsindot: 0xFB2B,
+  shinsindothebrew: 0xFB2B,
+  shook: 0x0282,
+  sigma: 0x03C3,
+  sigma1: 0x03C2,
+  sigmafinal: 0x03C2,
+  sigmalunatesymbolgreek: 0x03F2,
+  sihiragana: 0x3057,
+  sikatakana: 0x30B7,
+  sikatakanahalfwidth: 0xFF7C,
+  siluqhebrew: 0x05BD,
+  siluqlefthebrew: 0x05BD,
+  similar: 0x223C,
+  sindothebrew: 0x05C2,
+  siosacirclekorean: 0x3274,
+  siosaparenkorean: 0x3214,
+  sioscieuckorean: 0x317E,
+  sioscirclekorean: 0x3266,
+  sioskiyeokkorean: 0x317A,
+  sioskorean: 0x3145,
+  siosnieunkorean: 0x317B,
+  siosparenkorean: 0x3206,
+  siospieupkorean: 0x317D,
+  siostikeutkorean: 0x317C,
+  six: 0x0036,
+  sixarabic: 0x0666,
+  sixbengali: 0x09EC,
+  sixcircle: 0x2465,
+  sixcircleinversesansserif: 0x278F,
+  sixdeva: 0x096C,
+  sixgujarati: 0x0AEC,
+  sixgurmukhi: 0x0A6C,
+  sixhackarabic: 0x0666,
+  sixhangzhou: 0x3026,
+  sixideographicparen: 0x3225,
+  sixinferior: 0x2086,
+  sixmonospace: 0xFF16,
+  sixoldstyle: 0xF736,
+  sixparen: 0x2479,
+  sixperiod: 0x248D,
+  sixpersian: 0x06F6,
+  sixroman: 0x2175,
+  sixsuperior: 0x2076,
+  sixteencircle: 0x246F,
+  sixteencurrencydenominatorbengali: 0x09F9,
+  sixteenparen: 0x2483,
+  sixteenperiod: 0x2497,
+  sixthai: 0x0E56,
+  slash: 0x002F,
+  slashmonospace: 0xFF0F,
+  slong: 0x017F,
+  slongdotaccent: 0x1E9B,
+  smileface: 0x263A,
+  smonospace: 0xFF53,
+  sofpasuqhebrew: 0x05C3,
+  softhyphen: 0x00AD,
+  softsigncyrillic: 0x044C,
+  sohiragana: 0x305D,
+  sokatakana: 0x30BD,
+  sokatakanahalfwidth: 0xFF7F,
+  soliduslongoverlaycmb: 0x0338,
+  solidusshortoverlaycmb: 0x0337,
+  sorusithai: 0x0E29,
+  sosalathai: 0x0E28,
+  sosothai: 0x0E0B,
+  sosuathai: 0x0E2A,
+  space: 0x0020,
+  spacehackarabic: 0x0020,
+  spade: 0x2660,
+  spadesuitblack: 0x2660,
+  spadesuitwhite: 0x2664,
+  sparen: 0x24AE,
+  squarebelowcmb: 0x033B,
+  squarecc: 0x33C4,
+  squarecm: 0x339D,
+  squarediagonalcrosshatchfill: 0x25A9,
+  squarehorizontalfill: 0x25A4,
+  squarekg: 0x338F,
+  squarekm: 0x339E,
+  squarekmcapital: 0x33CE,
+  squareln: 0x33D1,
+  squarelog: 0x33D2,
+  squaremg: 0x338E,
+  squaremil: 0x33D5,
+  squaremm: 0x339C,
+  squaremsquared: 0x33A1,
+  squareorthogonalcrosshatchfill: 0x25A6,
+  squareupperlefttolowerrightfill: 0x25A7,
+  squareupperrighttolowerleftfill: 0x25A8,
+  squareverticalfill: 0x25A5,
+  squarewhitewithsmallblack: 0x25A3,
+  srsquare: 0x33DB,
+  ssabengali: 0x09B7,
+  ssadeva: 0x0937,
+  ssagujarati: 0x0AB7,
+  ssangcieuckorean: 0x3149,
+  ssanghieuhkorean: 0x3185,
+  ssangieungkorean: 0x3180,
+  ssangkiyeokkorean: 0x3132,
+  ssangnieunkorean: 0x3165,
+  ssangpieupkorean: 0x3143,
+  ssangsioskorean: 0x3146,
+  ssangtikeutkorean: 0x3138,
+  ssuperior: 0xF6F2,
+  sterling: 0x00A3,
+  sterlingmonospace: 0xFFE1,
+  strokelongoverlaycmb: 0x0336,
+  strokeshortoverlaycmb: 0x0335,
+  subset: 0x2282,
+  subsetnotequal: 0x228A,
+  subsetorequal: 0x2286,
+  succeeds: 0x227B,
+  suchthat: 0x220B,
+  suhiragana: 0x3059,
+  sukatakana: 0x30B9,
+  sukatakanahalfwidth: 0xFF7D,
+  sukunarabic: 0x0652,
+  summation: 0x2211,
+  sun: 0x263C,
+  superset: 0x2283,
+  supersetnotequal: 0x228B,
+  supersetorequal: 0x2287,
+  svsquare: 0x33DC,
+  syouwaerasquare: 0x337C,
+  t: 0x0074,
+  tabengali: 0x09A4,
+  tackdown: 0x22A4,
+  tackleft: 0x22A3,
+  tadeva: 0x0924,
+  tagujarati: 0x0AA4,
+  tagurmukhi: 0x0A24,
+  taharabic: 0x0637,
+  tahfinalarabic: 0xFEC2,
+  tahinitialarabic: 0xFEC3,
+  tahiragana: 0x305F,
+  tahmedialarabic: 0xFEC4,
+  taisyouerasquare: 0x337D,
+  takatakana: 0x30BF,
+  takatakanahalfwidth: 0xFF80,
+  tatweelarabic: 0x0640,
+  tau: 0x03C4,
+  tav: 0x05EA,
+  tavdages: 0xFB4A,
+  tavdagesh: 0xFB4A,
+  tavdageshhebrew: 0xFB4A,
+  tavhebrew: 0x05EA,
+  tbar: 0x0167,
+  tbopomofo: 0x310A,
+  tcaron: 0x0165,
+  tccurl: 0x02A8,
+  tcedilla: 0x0163,
+  tcheharabic: 0x0686,
+  tchehfinalarabic: 0xFB7B,
+  tchehinitialarabic: 0xFB7C,
+  tchehmedialarabic: 0xFB7D,
+  tcircle: 0x24E3,
+  tcircumflexbelow: 0x1E71,
+  tcommaaccent: 0x0163,
+  tdieresis: 0x1E97,
+  tdotaccent: 0x1E6B,
+  tdotbelow: 0x1E6D,
+  tecyrillic: 0x0442,
+  tedescendercyrillic: 0x04AD,
+  teharabic: 0x062A,
+  tehfinalarabic: 0xFE96,
+  tehhahinitialarabic: 0xFCA2,
+  tehhahisolatedarabic: 0xFC0C,
+  tehinitialarabic: 0xFE97,
+  tehiragana: 0x3066,
+  tehjeeminitialarabic: 0xFCA1,
+  tehjeemisolatedarabic: 0xFC0B,
+  tehmarbutaarabic: 0x0629,
+  tehmarbutafinalarabic: 0xFE94,
+  tehmedialarabic: 0xFE98,
+  tehmeeminitialarabic: 0xFCA4,
+  tehmeemisolatedarabic: 0xFC0E,
+  tehnoonfinalarabic: 0xFC73,
+  tekatakana: 0x30C6,
+  tekatakanahalfwidth: 0xFF83,
+  telephone: 0x2121,
+  telephoneblack: 0x260E,
+  telishagedolahebrew: 0x05A0,
+  telishaqetanahebrew: 0x05A9,
+  tencircle: 0x2469,
+  tenideographicparen: 0x3229,
+  tenparen: 0x247D,
+  tenperiod: 0x2491,
+  tenroman: 0x2179,
+  tesh: 0x02A7,
+  tet: 0x05D8,
+  tetdagesh: 0xFB38,
+  tetdageshhebrew: 0xFB38,
+  tethebrew: 0x05D8,
+  tetsecyrillic: 0x04B5,
+  tevirhebrew: 0x059B,
+  tevirlefthebrew: 0x059B,
+  thabengali: 0x09A5,
+  thadeva: 0x0925,
+  thagujarati: 0x0AA5,
+  thagurmukhi: 0x0A25,
+  thalarabic: 0x0630,
+  thalfinalarabic: 0xFEAC,
+  thanthakhatlowleftthai: 0xF898,
+  thanthakhatlowrightthai: 0xF897,
+  thanthakhatthai: 0x0E4C,
+  thanthakhatupperleftthai: 0xF896,
+  theharabic: 0x062B,
+  thehfinalarabic: 0xFE9A,
+  thehinitialarabic: 0xFE9B,
+  thehmedialarabic: 0xFE9C,
+  thereexists: 0x2203,
+  therefore: 0x2234,
+  theta: 0x03B8,
+  theta1: 0x03D1,
+  thetasymbolgreek: 0x03D1,
+  thieuthacirclekorean: 0x3279,
+  thieuthaparenkorean: 0x3219,
+  thieuthcirclekorean: 0x326B,
+  thieuthkorean: 0x314C,
+  thieuthparenkorean: 0x320B,
+  thirteencircle: 0x246C,
+  thirteenparen: 0x2480,
+  thirteenperiod: 0x2494,
+  thonangmonthothai: 0x0E11,
+  thook: 0x01AD,
+  thophuthaothai: 0x0E12,
+  thorn: 0x00FE,
+  thothahanthai: 0x0E17,
+  thothanthai: 0x0E10,
+  thothongthai: 0x0E18,
+  thothungthai: 0x0E16,
+  thousandcyrillic: 0x0482,
+  thousandsseparatorarabic: 0x066C,
+  thousandsseparatorpersian: 0x066C,
+  three: 0x0033,
+  threearabic: 0x0663,
+  threebengali: 0x09E9,
+  threecircle: 0x2462,
+  threecircleinversesansserif: 0x278C,
+  threedeva: 0x0969,
+  threeeighths: 0x215C,
+  threegujarati: 0x0AE9,
+  threegurmukhi: 0x0A69,
+  threehackarabic: 0x0663,
+  threehangzhou: 0x3023,
+  threeideographicparen: 0x3222,
+  threeinferior: 0x2083,
+  threemonospace: 0xFF13,
+  threenumeratorbengali: 0x09F6,
+  threeoldstyle: 0xF733,
+  threeparen: 0x2476,
+  threeperiod: 0x248A,
+  threepersian: 0x06F3,
+  threequarters: 0x00BE,
+  threequartersemdash: 0xF6DE,
+  threeroman: 0x2172,
+  threesuperior: 0x00B3,
+  threethai: 0x0E53,
+  thzsquare: 0x3394,
+  tihiragana: 0x3061,
+  tikatakana: 0x30C1,
+  tikatakanahalfwidth: 0xFF81,
+  tikeutacirclekorean: 0x3270,
+  tikeutaparenkorean: 0x3210,
+  tikeutcirclekorean: 0x3262,
+  tikeutkorean: 0x3137,
+  tikeutparenkorean: 0x3202,
+  tilde: 0x02DC,
+  tildebelowcmb: 0x0330,
+  tildecmb: 0x0303,
+  tildecomb: 0x0303,
+  tildedoublecmb: 0x0360,
+  tildeoperator: 0x223C,
+  tildeoverlaycmb: 0x0334,
+  tildeverticalcmb: 0x033E,
+  timescircle: 0x2297,
+  tipehahebrew: 0x0596,
+  tipehalefthebrew: 0x0596,
+  tippigurmukhi: 0x0A70,
+  titlocyrilliccmb: 0x0483,
+  tiwnarmenian: 0x057F,
+  tlinebelow: 0x1E6F,
+  tmonospace: 0xFF54,
+  toarmenian: 0x0569,
+  tohiragana: 0x3068,
+  tokatakana: 0x30C8,
+  tokatakanahalfwidth: 0xFF84,
+  tonebarextrahighmod: 0x02E5,
+  tonebarextralowmod: 0x02E9,
+  tonebarhighmod: 0x02E6,
+  tonebarlowmod: 0x02E8,
+  tonebarmidmod: 0x02E7,
+  tonefive: 0x01BD,
+  tonesix: 0x0185,
+  tonetwo: 0x01A8,
+  tonos: 0x0384,
+  tonsquare: 0x3327,
+  topatakthai: 0x0E0F,
+  tortoiseshellbracketleft: 0x3014,
+  tortoiseshellbracketleftsmall: 0xFE5D,
+  tortoiseshellbracketleftvertical: 0xFE39,
+  tortoiseshellbracketright: 0x3015,
+  tortoiseshellbracketrightsmall: 0xFE5E,
+  tortoiseshellbracketrightvertical: 0xFE3A,
+  totaothai: 0x0E15,
+  tpalatalhook: 0x01AB,
+  tparen: 0x24AF,
+  trademark: 0x2122,
+  trademarksans: 0xF8EA,
+  trademarkserif: 0xF6DB,
+  tretroflexhook: 0x0288,
+  triagdn: 0x25BC,
+  triaglf: 0x25C4,
+  triagrt: 0x25BA,
+  triagup: 0x25B2,
+  ts: 0x02A6,
+  tsadi: 0x05E6,
+  tsadidagesh: 0xFB46,
+  tsadidageshhebrew: 0xFB46,
+  tsadihebrew: 0x05E6,
+  tsecyrillic: 0x0446,
+  tsere: 0x05B5,
+  tsere12: 0x05B5,
+  tsere1e: 0x05B5,
+  tsere2b: 0x05B5,
+  tserehebrew: 0x05B5,
+  tserenarrowhebrew: 0x05B5,
+  tserequarterhebrew: 0x05B5,
+  tserewidehebrew: 0x05B5,
+  tshecyrillic: 0x045B,
+  tsuperior: 0xF6F3,
+  ttabengali: 0x099F,
+  ttadeva: 0x091F,
+  ttagujarati: 0x0A9F,
+  ttagurmukhi: 0x0A1F,
+  tteharabic: 0x0679,
+  ttehfinalarabic: 0xFB67,
+  ttehinitialarabic: 0xFB68,
+  ttehmedialarabic: 0xFB69,
+  tthabengali: 0x09A0,
+  tthadeva: 0x0920,
+  tthagujarati: 0x0AA0,
+  tthagurmukhi: 0x0A20,
+  tturned: 0x0287,
+  tuhiragana: 0x3064,
+  tukatakana: 0x30C4,
+  tukatakanahalfwidth: 0xFF82,
+  tusmallhiragana: 0x3063,
+  tusmallkatakana: 0x30C3,
+  tusmallkatakanahalfwidth: 0xFF6F,
+  twelvecircle: 0x246B,
+  twelveparen: 0x247F,
+  twelveperiod: 0x2493,
+  twelveroman: 0x217B,
+  twentycircle: 0x2473,
+  twentyhangzhou: 0x5344,
+  twentyparen: 0x2487,
+  twentyperiod: 0x249B,
+  two: 0x0032,
+  twoarabic: 0x0662,
+  twobengali: 0x09E8,
+  twocircle: 0x2461,
+  twocircleinversesansserif: 0x278B,
+  twodeva: 0x0968,
+  twodotenleader: 0x2025,
+  twodotleader: 0x2025,
+  twodotleadervertical: 0xFE30,
+  twogujarati: 0x0AE8,
+  twogurmukhi: 0x0A68,
+  twohackarabic: 0x0662,
+  twohangzhou: 0x3022,
+  twoideographicparen: 0x3221,
+  twoinferior: 0x2082,
+  twomonospace: 0xFF12,
+  twonumeratorbengali: 0x09F5,
+  twooldstyle: 0xF732,
+  twoparen: 0x2475,
+  twoperiod: 0x2489,
+  twopersian: 0x06F2,
+  tworoman: 0x2171,
+  twostroke: 0x01BB,
+  twosuperior: 0x00B2,
+  twothai: 0x0E52,
+  twothirds: 0x2154,
+  u: 0x0075,
+  uacute: 0x00FA,
+  ubar: 0x0289,
+  ubengali: 0x0989,
+  ubopomofo: 0x3128,
+  ubreve: 0x016D,
+  ucaron: 0x01D4,
+  ucircle: 0x24E4,
+  ucircumflex: 0x00FB,
+  ucircumflexbelow: 0x1E77,
+  ucyrillic: 0x0443,
+  udattadeva: 0x0951,
+  udblacute: 0x0171,
+  udblgrave: 0x0215,
+  udeva: 0x0909,
+  udieresis: 0x00FC,
+  udieresisacute: 0x01D8,
+  udieresisbelow: 0x1E73,
+  udieresiscaron: 0x01DA,
+  udieresiscyrillic: 0x04F1,
+  udieresisgrave: 0x01DC,
+  udieresismacron: 0x01D6,
+  udotbelow: 0x1EE5,
+  ugrave: 0x00F9,
+  ugujarati: 0x0A89,
+  ugurmukhi: 0x0A09,
+  uhiragana: 0x3046,
+  uhookabove: 0x1EE7,
+  uhorn: 0x01B0,
+  uhornacute: 0x1EE9,
+  uhorndotbelow: 0x1EF1,
+  uhorngrave: 0x1EEB,
+  uhornhookabove: 0x1EED,
+  uhorntilde: 0x1EEF,
+  uhungarumlaut: 0x0171,
+  uhungarumlautcyrillic: 0x04F3,
+  uinvertedbreve: 0x0217,
+  ukatakana: 0x30A6,
+  ukatakanahalfwidth: 0xFF73,
+  ukcyrillic: 0x0479,
+  ukorean: 0x315C,
+  umacron: 0x016B,
+  umacroncyrillic: 0x04EF,
+  umacrondieresis: 0x1E7B,
+  umatragurmukhi: 0x0A41,
+  umonospace: 0xFF55,
+  underscore: 0x005F,
+  underscoredbl: 0x2017,
+  underscoremonospace: 0xFF3F,
+  underscorevertical: 0xFE33,
+  underscorewavy: 0xFE4F,
+  union: 0x222A,
+  universal: 0x2200,
+  uogonek: 0x0173,
+  uparen: 0x24B0,
+  upblock: 0x2580,
+  upperdothebrew: 0x05C4,
+  upsilon: 0x03C5,
+  upsilondieresis: 0x03CB,
+  upsilondieresistonos: 0x03B0,
+  upsilonlatin: 0x028A,
+  upsilontonos: 0x03CD,
+  uptackbelowcmb: 0x031D,
+  uptackmod: 0x02D4,
+  uragurmukhi: 0x0A73,
+  uring: 0x016F,
+  ushortcyrillic: 0x045E,
+  usmallhiragana: 0x3045,
+  usmallkatakana: 0x30A5,
+  usmallkatakanahalfwidth: 0xFF69,
+  ustraightcyrillic: 0x04AF,
+  ustraightstrokecyrillic: 0x04B1,
+  utilde: 0x0169,
+  utildeacute: 0x1E79,
+  utildebelow: 0x1E75,
+  uubengali: 0x098A,
+  uudeva: 0x090A,
+  uugujarati: 0x0A8A,
+  uugurmukhi: 0x0A0A,
+  uumatragurmukhi: 0x0A42,
+  uuvowelsignbengali: 0x09C2,
+  uuvowelsigndeva: 0x0942,
+  uuvowelsigngujarati: 0x0AC2,
+  uvowelsignbengali: 0x09C1,
+  uvowelsigndeva: 0x0941,
+  uvowelsigngujarati: 0x0AC1,
+  v: 0x0076,
+  vadeva: 0x0935,
+  vagujarati: 0x0AB5,
+  vagurmukhi: 0x0A35,
+  vakatakana: 0x30F7,
+  vav: 0x05D5,
+  vavdagesh: 0xFB35,
+  vavdagesh65: 0xFB35,
+  vavdageshhebrew: 0xFB35,
+  vavhebrew: 0x05D5,
+  vavholam: 0xFB4B,
+  vavholamhebrew: 0xFB4B,
+  vavvavhebrew: 0x05F0,
+  vavyodhebrew: 0x05F1,
+  vcircle: 0x24E5,
+  vdotbelow: 0x1E7F,
+  vecyrillic: 0x0432,
+  veharabic: 0x06A4,
+  vehfinalarabic: 0xFB6B,
+  vehinitialarabic: 0xFB6C,
+  vehmedialarabic: 0xFB6D,
+  vekatakana: 0x30F9,
+  venus: 0x2640,
+  verticalbar: 0x007C,
+  verticallineabovecmb: 0x030D,
+  verticallinebelowcmb: 0x0329,
+  verticallinelowmod: 0x02CC,
+  verticallinemod: 0x02C8,
+  vewarmenian: 0x057E,
+  vhook: 0x028B,
+  vikatakana: 0x30F8,
+  viramabengali: 0x09CD,
+  viramadeva: 0x094D,
+  viramagujarati: 0x0ACD,
+  visargabengali: 0x0983,
+  visargadeva: 0x0903,
+  visargagujarati: 0x0A83,
+  vmonospace: 0xFF56,
+  voarmenian: 0x0578,
+  voicediterationhiragana: 0x309E,
+  voicediterationkatakana: 0x30FE,
+  voicedmarkkana: 0x309B,
+  voicedmarkkanahalfwidth: 0xFF9E,
+  vokatakana: 0x30FA,
+  vparen: 0x24B1,
+  vtilde: 0x1E7D,
+  vturned: 0x028C,
+  vuhiragana: 0x3094,
+  vukatakana: 0x30F4,
+  w: 0x0077,
+  wacute: 0x1E83,
+  waekorean: 0x3159,
+  wahiragana: 0x308F,
+  wakatakana: 0x30EF,
+  wakatakanahalfwidth: 0xFF9C,
+  wakorean: 0x3158,
+  wasmallhiragana: 0x308E,
+  wasmallkatakana: 0x30EE,
+  wattosquare: 0x3357,
+  wavedash: 0x301C,
+  wavyunderscorevertical: 0xFE34,
+  wawarabic: 0x0648,
+  wawfinalarabic: 0xFEEE,
+  wawhamzaabovearabic: 0x0624,
+  wawhamzaabovefinalarabic: 0xFE86,
+  wbsquare: 0x33DD,
+  wcircle: 0x24E6,
+  wcircumflex: 0x0175,
+  wdieresis: 0x1E85,
+  wdotaccent: 0x1E87,
+  wdotbelow: 0x1E89,
+  wehiragana: 0x3091,
+  weierstrass: 0x2118,
+  wekatakana: 0x30F1,
+  wekorean: 0x315E,
+  weokorean: 0x315D,
+  wgrave: 0x1E81,
+  whitebullet: 0x25E6,
+  whitecircle: 0x25CB,
+  whitecircleinverse: 0x25D9,
+  whitecornerbracketleft: 0x300E,
+  whitecornerbracketleftvertical: 0xFE43,
+  whitecornerbracketright: 0x300F,
+  whitecornerbracketrightvertical: 0xFE44,
+  whitediamond: 0x25C7,
+  whitediamondcontainingblacksmalldiamond: 0x25C8,
+  whitedownpointingsmalltriangle: 0x25BF,
+  whitedownpointingtriangle: 0x25BD,
+  whiteleftpointingsmalltriangle: 0x25C3,
+  whiteleftpointingtriangle: 0x25C1,
+  whitelenticularbracketleft: 0x3016,
+  whitelenticularbracketright: 0x3017,
+  whiterightpointingsmalltriangle: 0x25B9,
+  whiterightpointingtriangle: 0x25B7,
+  whitesmallsquare: 0x25AB,
+  whitesmilingface: 0x263A,
+  whitesquare: 0x25A1,
+  whitestar: 0x2606,
+  whitetelephone: 0x260F,
+  whitetortoiseshellbracketleft: 0x3018,
+  whitetortoiseshellbracketright: 0x3019,
+  whiteuppointingsmalltriangle: 0x25B5,
+  whiteuppointingtriangle: 0x25B3,
+  wihiragana: 0x3090,
+  wikatakana: 0x30F0,
+  wikorean: 0x315F,
+  wmonospace: 0xFF57,
+  wohiragana: 0x3092,
+  wokatakana: 0x30F2,
+  wokatakanahalfwidth: 0xFF66,
+  won: 0x20A9,
+  wonmonospace: 0xFFE6,
+  wowaenthai: 0x0E27,
+  wparen: 0x24B2,
+  wring: 0x1E98,
+  wsuperior: 0x02B7,
+  wturned: 0x028D,
+  wynn: 0x01BF,
+  x: 0x0078,
+  xabovecmb: 0x033D,
+  xbopomofo: 0x3112,
+  xcircle: 0x24E7,
+  xdieresis: 0x1E8D,
+  xdotaccent: 0x1E8B,
+  xeharmenian: 0x056D,
+  xi: 0x03BE,
+  xmonospace: 0xFF58,
+  xparen: 0x24B3,
+  xsuperior: 0x02E3,
+  y: 0x0079,
+  yaadosquare: 0x334E,
+  yabengali: 0x09AF,
+  yacute: 0x00FD,
+  yadeva: 0x092F,
+  yaekorean: 0x3152,
+  yagujarati: 0x0AAF,
+  yagurmukhi: 0x0A2F,
+  yahiragana: 0x3084,
+  yakatakana: 0x30E4,
+  yakatakanahalfwidth: 0xFF94,
+  yakorean: 0x3151,
+  yamakkanthai: 0x0E4E,
+  yasmallhiragana: 0x3083,
+  yasmallkatakana: 0x30E3,
+  yasmallkatakanahalfwidth: 0xFF6C,
+  yatcyrillic: 0x0463,
+  ycircle: 0x24E8,
+  ycircumflex: 0x0177,
+  ydieresis: 0x00FF,
+  ydotaccent: 0x1E8F,
+  ydotbelow: 0x1EF5,
+  yeharabic: 0x064A,
+  yehbarreearabic: 0x06D2,
+  yehbarreefinalarabic: 0xFBAF,
+  yehfinalarabic: 0xFEF2,
+  yehhamzaabovearabic: 0x0626,
+  yehhamzaabovefinalarabic: 0xFE8A,
+  yehhamzaaboveinitialarabic: 0xFE8B,
+  yehhamzaabovemedialarabic: 0xFE8C,
+  yehinitialarabic: 0xFEF3,
+  yehmedialarabic: 0xFEF4,
+  yehmeeminitialarabic: 0xFCDD,
+  yehmeemisolatedarabic: 0xFC58,
+  yehnoonfinalarabic: 0xFC94,
+  yehthreedotsbelowarabic: 0x06D1,
+  yekorean: 0x3156,
+  yen: 0x00A5,
+  yenmonospace: 0xFFE5,
+  yeokorean: 0x3155,
+  yeorinhieuhkorean: 0x3186,
+  yerahbenyomohebrew: 0x05AA,
+  yerahbenyomolefthebrew: 0x05AA,
+  yericyrillic: 0x044B,
+  yerudieresiscyrillic: 0x04F9,
+  yesieungkorean: 0x3181,
+  yesieungpansioskorean: 0x3183,
+  yesieungsioskorean: 0x3182,
+  yetivhebrew: 0x059A,
+  ygrave: 0x1EF3,
+  yhook: 0x01B4,
+  yhookabove: 0x1EF7,
+  yiarmenian: 0x0575,
+  yicyrillic: 0x0457,
+  yikorean: 0x3162,
+  yinyang: 0x262F,
+  yiwnarmenian: 0x0582,
+  ymonospace: 0xFF59,
+  yod: 0x05D9,
+  yoddagesh: 0xFB39,
+  yoddageshhebrew: 0xFB39,
+  yodhebrew: 0x05D9,
+  yodyodhebrew: 0x05F2,
+  yodyodpatahhebrew: 0xFB1F,
+  yohiragana: 0x3088,
+  yoikorean: 0x3189,
+  yokatakana: 0x30E8,
+  yokatakanahalfwidth: 0xFF96,
+  yokorean: 0x315B,
+  yosmallhiragana: 0x3087,
+  yosmallkatakana: 0x30E7,
+  yosmallkatakanahalfwidth: 0xFF6E,
+  yotgreek: 0x03F3,
+  yoyaekorean: 0x3188,
+  yoyakorean: 0x3187,
+  yoyakthai: 0x0E22,
+  yoyingthai: 0x0E0D,
+  yparen: 0x24B4,
+  ypogegrammeni: 0x037A,
+  ypogegrammenigreekcmb: 0x0345,
+  yr: 0x01A6,
+  yring: 0x1E99,
+  ysuperior: 0x02B8,
+  ytilde: 0x1EF9,
+  yturned: 0x028E,
+  yuhiragana: 0x3086,
+  yuikorean: 0x318C,
+  yukatakana: 0x30E6,
+  yukatakanahalfwidth: 0xFF95,
+  yukorean: 0x3160,
+  yusbigcyrillic: 0x046B,
+  yusbigiotifiedcyrillic: 0x046D,
+  yuslittlecyrillic: 0x0467,
+  yuslittleiotifiedcyrillic: 0x0469,
+  yusmallhiragana: 0x3085,
+  yusmallkatakana: 0x30E5,
+  yusmallkatakanahalfwidth: 0xFF6D,
+  yuyekorean: 0x318B,
+  yuyeokorean: 0x318A,
+  yyabengali: 0x09DF,
+  yyadeva: 0x095F,
+  z: 0x007A,
+  zaarmenian: 0x0566,
+  zacute: 0x017A,
+  zadeva: 0x095B,
+  zagurmukhi: 0x0A5B,
+  zaharabic: 0x0638,
+  zahfinalarabic: 0xFEC6,
+  zahinitialarabic: 0xFEC7,
+  zahiragana: 0x3056,
+  zahmedialarabic: 0xFEC8,
+  zainarabic: 0x0632,
+  zainfinalarabic: 0xFEB0,
+  zakatakana: 0x30B6,
+  zaqefgadolhebrew: 0x0595,
+  zaqefqatanhebrew: 0x0594,
+  zarqahebrew: 0x0598,
+  zayin: 0x05D6,
+  zayindagesh: 0xFB36,
+  zayindageshhebrew: 0xFB36,
+  zayinhebrew: 0x05D6,
+  zbopomofo: 0x3117,
+  zcaron: 0x017E,
+  zcircle: 0x24E9,
+  zcircumflex: 0x1E91,
+  zcurl: 0x0291,
+  zdot: 0x017C,
+  zdotaccent: 0x017C,
+  zdotbelow: 0x1E93,
+  zecyrillic: 0x0437,
+  zedescendercyrillic: 0x0499,
+  zedieresiscyrillic: 0x04DF,
+  zehiragana: 0x305C,
+  zekatakana: 0x30BC,
+  zero: 0x0030,
+  zeroarabic: 0x0660,
+  zerobengali: 0x09E6,
+  zerodeva: 0x0966,
+  zerogujarati: 0x0AE6,
+  zerogurmukhi: 0x0A66,
+  zerohackarabic: 0x0660,
+  zeroinferior: 0x2080,
+  zeromonospace: 0xFF10,
+  zerooldstyle: 0xF730,
+  zeropersian: 0x06F0,
+  zerosuperior: 0x2070,
+  zerothai: 0x0E50,
+  zerowidthjoiner: 0xFEFF,
+  zerowidthnonjoiner: 0x200C,
+  zerowidthspace: 0x200B,
+  zeta: 0x03B6,
+  zhbopomofo: 0x3113,
+  zhearmenian: 0x056A,
+  zhebrevecyrillic: 0x04C2,
+  zhecyrillic: 0x0436,
+  zhedescendercyrillic: 0x0497,
+  zhedieresiscyrillic: 0x04DD,
+  zihiragana: 0x3058,
+  zikatakana: 0x30B8,
+  zinorhebrew: 0x05AE,
+  zlinebelow: 0x1E95,
+  zmonospace: 0xFF5A,
+  zohiragana: 0x305E,
+  zokatakana: 0x30BE,
+  zparen: 0x24B5,
+  zretroflexhook: 0x0290,
+  zstroke: 0x01B6,
+  zuhiragana: 0x305A,
+  zukatakana: 0x30BA,
+  '.notdef': 0x0000
+};
+
+var DingbatsGlyphsUnicode = {
+  space: 0x0020,
+  a1: 0x2701,
+  a2: 0x2702,
+  a202: 0x2703,
+  a3: 0x2704,
+  a4: 0x260E,
+  a5: 0x2706,
+  a119: 0x2707,
+  a118: 0x2708,
+  a117: 0x2709,
+  a11: 0x261B,
+  a12: 0x261E,
+  a13: 0x270C,
+  a14: 0x270D,
+  a15: 0x270E,
+  a16: 0x270F,
+  a105: 0x2710,
+  a17: 0x2711,
+  a18: 0x2712,
+  a19: 0x2713,
+  a20: 0x2714,
+  a21: 0x2715,
+  a22: 0x2716,
+  a23: 0x2717,
+  a24: 0x2718,
+  a25: 0x2719,
+  a26: 0x271A,
+  a27: 0x271B,
+  a28: 0x271C,
+  a6: 0x271D,
+  a7: 0x271E,
+  a8: 0x271F,
+  a9: 0x2720,
+  a10: 0x2721,
+  a29: 0x2722,
+  a30: 0x2723,
+  a31: 0x2724,
+  a32: 0x2725,
+  a33: 0x2726,
+  a34: 0x2727,
+  a35: 0x2605,
+  a36: 0x2729,
+  a37: 0x272A,
+  a38: 0x272B,
+  a39: 0x272C,
+  a40: 0x272D,
+  a41: 0x272E,
+  a42: 0x272F,
+  a43: 0x2730,
+  a44: 0x2731,
+  a45: 0x2732,
+  a46: 0x2733,
+  a47: 0x2734,
+  a48: 0x2735,
+  a49: 0x2736,
+  a50: 0x2737,
+  a51: 0x2738,
+  a52: 0x2739,
+  a53: 0x273A,
+  a54: 0x273B,
+  a55: 0x273C,
+  a56: 0x273D,
+  a57: 0x273E,
+  a58: 0x273F,
+  a59: 0x2740,
+  a60: 0x2741,
+  a61: 0x2742,
+  a62: 0x2743,
+  a63: 0x2744,
+  a64: 0x2745,
+  a65: 0x2746,
+  a66: 0x2747,
+  a67: 0x2748,
+  a68: 0x2749,
+  a69: 0x274A,
+  a70: 0x274B,
+  a71: 0x25CF,
+  a72: 0x274D,
+  a73: 0x25A0,
+  a74: 0x274F,
+  a203: 0x2750,
+  a75: 0x2751,
+  a204: 0x2752,
+  a76: 0x25B2,
+  a77: 0x25BC,
+  a78: 0x25C6,
+  a79: 0x2756,
+  a81: 0x25D7,
+  a82: 0x2758,
+  a83: 0x2759,
+  a84: 0x275A,
+  a97: 0x275B,
+  a98: 0x275C,
+  a99: 0x275D,
+  a100: 0x275E,
+  a101: 0x2761,
+  a102: 0x2762,
+  a103: 0x2763,
+  a104: 0x2764,
+  a106: 0x2765,
+  a107: 0x2766,
+  a108: 0x2767,
+  a112: 0x2663,
+  a111: 0x2666,
+  a110: 0x2665,
+  a109: 0x2660,
+  a120: 0x2460,
+  a121: 0x2461,
+  a122: 0x2462,
+  a123: 0x2463,
+  a124: 0x2464,
+  a125: 0x2465,
+  a126: 0x2466,
+  a127: 0x2467,
+  a128: 0x2468,
+  a129: 0x2469,
+  a130: 0x2776,
+  a131: 0x2777,
+  a132: 0x2778,
+  a133: 0x2779,
+  a134: 0x277A,
+  a135: 0x277B,
+  a136: 0x277C,
+  a137: 0x277D,
+  a138: 0x277E,
+  a139: 0x277F,
+  a140: 0x2780,
+  a141: 0x2781,
+  a142: 0x2782,
+  a143: 0x2783,
+  a144: 0x2784,
+  a145: 0x2785,
+  a146: 0x2786,
+  a147: 0x2787,
+  a148: 0x2788,
+  a149: 0x2789,
+  a150: 0x278A,
+  a151: 0x278B,
+  a152: 0x278C,
+  a153: 0x278D,
+  a154: 0x278E,
+  a155: 0x278F,
+  a156: 0x2790,
+  a157: 0x2791,
+  a158: 0x2792,
+  a159: 0x2793,
+  a160: 0x2794,
+  a161: 0x2192,
+  a163: 0x2194,
+  a164: 0x2195,
+  a196: 0x2798,
+  a165: 0x2799,
+  a192: 0x279A,
+  a166: 0x279B,
+  a167: 0x279C,
+  a168: 0x279D,
+  a169: 0x279E,
+  a170: 0x279F,
+  a171: 0x27A0,
+  a172: 0x27A1,
+  a173: 0x27A2,
+  a162: 0x27A3,
+  a174: 0x27A4,
+  a175: 0x27A5,
+  a176: 0x27A6,
+  a177: 0x27A7,
+  a178: 0x27A8,
+  a179: 0x27A9,
+  a193: 0x27AA,
+  a180: 0x27AB,
+  a199: 0x27AC,
+  a181: 0x27AD,
+  a200: 0x27AE,
+  a182: 0x27AF,
+  a201: 0x27B1,
+  a183: 0x27B2,
+  a184: 0x27B3,
+  a197: 0x27B4,
+  a185: 0x27B5,
+  a194: 0x27B6,
+  a198: 0x27B7,
+  a186: 0x27B8,
+  a195: 0x27B9,
+  a187: 0x27BA,
+  a188: 0x27BB,
+  a189: 0x27BC,
+  a190: 0x27BD,
+  a191: 0x27BE,
+  a89: 0x2768, // 0xF8D7
+  a90: 0x2769, // 0xF8D8
+  a93: 0x276A, // 0xF8D9
+  a94: 0x276B, // 0xF8DA
+  a91: 0x276C, // 0xF8DB
+  a92: 0x276D, // 0xF8DC
+  a205: 0x276E, // 0xF8DD
+  a85: 0x276F, // 0xF8DE
+  a206: 0x2770, // 0xF8DF
+  a86: 0x2771, // 0xF8E0
+  a87: 0x2772, // 0xF8E1
+  a88: 0x2773, // 0xF8E2
+  a95: 0x2774, // 0xF8E3
+  a96: 0x2775, // 0xF8E4
+  '.notdef': 0x0000
+};
+
+
+var PDFImage = (function PDFImageClosure() {
+  /**
+   * Decode the image in the main thread if it supported. Resovles the promise
+   * when the image data is ready.
+   */
+  function handleImageData(handler, xref, res, image) {
+    if (image instanceof JpegStream && image.isNativelyDecodable(xref, res)) {
+      // For natively supported jpegs send them to the main thread for decoding.
+      var dict = image.dict;
+      var colorSpace = dict.get('ColorSpace', 'CS');
+      colorSpace = ColorSpace.parse(colorSpace, xref, res);
+      var numComps = colorSpace.numComps;
+      var decodePromise = handler.sendWithPromise('JpegDecode',
+                                                  [image.getIR(), numComps]);
+      return decodePromise.then(function (message) {
+        var data = message.data;
+        return new Stream(data, 0, data.length, image.dict);
+      });
+    } else {
+      return Promise.resolve(image);
+    }
+  }
+
+  /**
+   * Decode and clamp a value. The formula is different from the spec because we
+   * don't decode to float range [0,1], we decode it in the [0,max] range.
+   */
+  function decodeAndClamp(value, addend, coefficient, max) {
+    value = addend + value * coefficient;
+    // Clamp the value to the range
+    return (value < 0 ? 0 : (value > max ? max : value));
+  }
+
+  function PDFImage(xref, res, image, inline, smask, mask, isMask) {
+    this.image = image;
+    var dict = image.dict;
+    if (dict.has('Filter')) {
+      var filter = dict.get('Filter').name;
+      if (filter === 'JPXDecode') {
+        var jpxImage = new JpxImage();
+        jpxImage.parseImageProperties(image.stream);
+        image.stream.reset();
+        image.bitsPerComponent = jpxImage.bitsPerComponent;
+        image.numComps = jpxImage.componentsCount;
+      } else if (filter === 'JBIG2Decode') {
+        image.bitsPerComponent = 1;
+        image.numComps = 1;
+      }
+    }
+    // TODO cache rendered images?
+
+    this.width = dict.get('Width', 'W');
+    this.height = dict.get('Height', 'H');
+
+    if (this.width < 1 || this.height < 1) {
+      error('Invalid image width: ' + this.width + ' or height: ' +
+            this.height);
+    }
+
+    this.interpolate = dict.get('Interpolate', 'I') || false;
+    this.imageMask = dict.get('ImageMask', 'IM') || false;
+    this.matte = dict.get('Matte') || false;
+
+    var bitsPerComponent = image.bitsPerComponent;
+    if (!bitsPerComponent) {
+      bitsPerComponent = dict.get('BitsPerComponent', 'BPC');
+      if (!bitsPerComponent) {
+        if (this.imageMask) {
+          bitsPerComponent = 1;
+        } else {
+          error('Bits per component missing in image: ' + this.imageMask);
+        }
+      }
+    }
+    this.bpc = bitsPerComponent;
+
+    if (!this.imageMask) {
+      var colorSpace = dict.get('ColorSpace', 'CS');
+      if (!colorSpace) {
+        info('JPX images (which do not require color spaces)');
+        switch (image.numComps) {
+          case 1:
+            colorSpace = Name.get('DeviceGray');
+            break;
+          case 3:
+            colorSpace = Name.get('DeviceRGB');
+            break;
+          case 4:
+            colorSpace = Name.get('DeviceCMYK');
+            break;
+          default:
+            error('JPX images with ' + this.numComps +
+                  ' color components not supported.');
+        }
+      }
+      this.colorSpace = ColorSpace.parse(colorSpace, xref, res);
+      this.numComps = this.colorSpace.numComps;
+    }
+
+    this.decode = dict.get('Decode', 'D');
+    this.needsDecode = false;
+    if (this.decode &&
+        ((this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode)) ||
+         (isMask && !ColorSpace.isDefaultDecode(this.decode, 1)))) {
+      this.needsDecode = true;
+      // Do some preprocessing to avoid more math.
+      var max = (1 << bitsPerComponent) - 1;
+      this.decodeCoefficients = [];
+      this.decodeAddends = [];
+      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {
+        var dmin = this.decode[i];
+        var dmax = this.decode[i + 1];
+        this.decodeCoefficients[j] = dmax - dmin;
+        this.decodeAddends[j] = max * dmin;
+      }
+    }
+
+    if (smask) {
+      this.smask = new PDFImage(xref, res, smask, false);
+    } else if (mask) {
+      if (isStream(mask)) {
+        this.mask = new PDFImage(xref, res, mask, false, null, null, true);
+      } else {
+        // Color key mask (just an array).
+        this.mask = mask;
+      }
+    }
+  }
+  /**
+   * Handles processing of image data and returns the Promise that is resolved
+   * with a PDFImage when the image is ready to be used.
+   */
+  PDFImage.buildImage = function PDFImage_buildImage(handler, xref,
+                                                     res, image, inline) {
+    var imagePromise = handleImageData(handler, xref, res, image);
+    var smaskPromise;
+    var maskPromise;
+
+    var smask = image.dict.get('SMask');
+    var mask = image.dict.get('Mask');
+
+    if (smask) {
+      smaskPromise = handleImageData(handler, xref, res, smask);
+      maskPromise = Promise.resolve(null);
+    } else {
+      smaskPromise = Promise.resolve(null);
+      if (mask) {
+        if (isStream(mask)) {
+          maskPromise = handleImageData(handler, xref, res, mask);
+        } else if (isArray(mask)) {
+          maskPromise = Promise.resolve(mask);
+        } else {
+          warn('Unsupported mask format.');
+          maskPromise = Promise.resolve(null);
+        }
+      } else {
+        maskPromise = Promise.resolve(null);
+      }
+    }
+    return Promise.all([imagePromise, smaskPromise, maskPromise]).then(
+      function(results) {
+        var imageData = results[0];
+        var smaskData = results[1];
+        var maskData = results[2];
+        return new PDFImage(xref, res, imageData, inline, smaskData, maskData);
+      });
+  };
+
+  /**
+   * Resize an image using the nearest neighbor algorithm. Currently only
+   * supports one and three component images.
+   * @param {TypedArray} pixels The original image with one component.
+   * @param {Number} bpc Number of bits per component.
+   * @param {Number} components Number of color components, 1 or 3 is supported.
+   * @param {Number} w1 Original width.
+   * @param {Number} h1 Original height.
+   * @param {Number} w2 New width.
+   * @param {Number} h2 New height.
+   * @param {TypedArray} dest (Optional) The destination buffer.
+   * @param {Number} alpha01 (Optional) Size reserved for the alpha channel.
+   * @return {TypedArray} Resized image data.
+   */
+  PDFImage.resize = function PDFImage_resize(pixels, bpc, components,
+                                             w1, h1, w2, h2, dest, alpha01) {
+
+    if (components !== 1 && components !== 3) {
+      error('Unsupported component count for resizing.');
+    }
+
+    var length = w2 * h2 * components;
+    var temp = dest ? dest : (bpc <= 8 ? new Uint8Array(length) :
+        (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length)));
+    var xRatio = w1 / w2;
+    var yRatio = h1 / h2;
+    var i, j, py, newIndex = 0, oldIndex;
+    var xScaled = new Uint16Array(w2);
+    var w1Scanline = w1 * components;
+    if (alpha01 !== 1) {
+      alpha01 = 0;
+    }
+
+    for (j = 0; j < w2; j++) {
+      xScaled[j] = Math.floor(j * xRatio) * components;
+    }
+
+    if (components === 1) {
+      for (i = 0; i < h2; i++) {
+        py = Math.floor(i * yRatio) * w1Scanline;
+        for (j = 0; j < w2; j++) {
+          oldIndex = py + xScaled[j];
+          temp[newIndex++] = pixels[oldIndex];
+        }
+      }
+    } else if (components === 3) {
+      for (i = 0; i < h2; i++) {
+        py = Math.floor(i * yRatio) * w1Scanline;
+        for (j = 0; j < w2; j++) {
+          oldIndex = py + xScaled[j];
+          temp[newIndex++] = pixels[oldIndex++];
+          temp[newIndex++] = pixels[oldIndex++];
+          temp[newIndex++] = pixels[oldIndex++];
+          newIndex += alpha01;
+        }
+      }
+    }
+    return temp;
+  };
+
+  PDFImage.createMask =
+      function PDFImage_createMask(imgArray, width, height,
+                                   imageIsFromDecodeStream, inverseDecode) {
+
+    // |imgArray| might not contain full data for every pixel of the mask, so
+    // we need to distinguish between |computedLength| and |actualLength|.
+    // In particular, if inverseDecode is true, then the array we return must
+    // have a length of |computedLength|.
+
+    var computedLength = ((width + 7) >> 3) * height;
+    var actualLength = imgArray.byteLength;
+    var haveFullData = computedLength === actualLength;
+    var data, i;
+
+    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
+      // imgArray came from a DecodeStream and its data is in an appropriate
+      // form, so we can just transfer it.
+      data = imgArray;
+    } else if (!inverseDecode) {
+      data = new Uint8Array(actualLength);
+      data.set(imgArray);
+    } else {
+      data = new Uint8Array(computedLength);
+      data.set(imgArray);
+      for (i = actualLength; i < computedLength; i++) {
+        data[i] = 0xff;
+      }
+    }
+
+    // If necessary, invert the original mask data (but not any extra we might
+    // have added above). It's safe to modify the array -- whether it's the
+    // original or a copy, we're about to transfer it anyway, so nothing else
+    // in this thread can be relying on its contents.
+    if (inverseDecode) {
+      for (i = 0; i < actualLength; i++) {
+        data[i] = ~data[i];
+      }
+    }
+
+    return {data: data, width: width, height: height};
+  };
+
+  PDFImage.prototype = {
+    get drawWidth() {
+      return Math.max(this.width,
+                      this.smask && this.smask.width || 0,
+                      this.mask && this.mask.width || 0);
+    },
+
+    get drawHeight() {
+      return Math.max(this.height,
+                      this.smask && this.smask.height || 0,
+                      this.mask && this.mask.height || 0);
+    },
+
+    decodeBuffer: function PDFImage_decodeBuffer(buffer) {
+      var bpc = this.bpc;
+      var numComps = this.numComps;
+
+      var decodeAddends = this.decodeAddends;
+      var decodeCoefficients = this.decodeCoefficients;
+      var max = (1 << bpc) - 1;
+      var i, ii;
+
+      if (bpc === 1) {
+        // If the buffer needed decode that means it just needs to be inverted.
+        for (i = 0, ii = buffer.length; i < ii; i++) {
+          buffer[i] = +!(buffer[i]);
+        }
+        return;
+      }
+      var index = 0;
+      for (i = 0, ii = this.width * this.height; i < ii; i++) {
+        for (var j = 0; j < numComps; j++) {
+          buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j],
+                                         decodeCoefficients[j], max);
+          index++;
+        }
+      }
+    },
+
+    getComponents: function PDFImage_getComponents(buffer) {
+      var bpc = this.bpc;
+
+      // This image doesn't require any extra work.
+      if (bpc === 8) {
+        return buffer;
+      }
+
+      var width = this.width;
+      var height = this.height;
+      var numComps = this.numComps;
+
+      var length = width * height * numComps;
+      var bufferPos = 0;
+      var output = (bpc <= 8 ? new Uint8Array(length) :
+        (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length)));
+      var rowComps = width * numComps;
+
+      var max = (1 << bpc) - 1;
+      var i = 0, ii, buf;
+
+      if (bpc === 1) {
+        // Optimization for reading 1 bpc images.
+        var mask, loop1End, loop2End;
+        for (var j = 0; j < height; j++) {
+          loop1End = i + (rowComps & ~7);
+          loop2End = i + rowComps;
+
+          // unroll loop for all full bytes
+          while (i < loop1End) {
+            buf = buffer[bufferPos++];
+            output[i] = (buf >> 7) & 1;
+            output[i + 1] = (buf >> 6) & 1;
+            output[i + 2] = (buf >> 5) & 1;
+            output[i + 3] = (buf >> 4) & 1;
+            output[i + 4] = (buf >> 3) & 1;
+            output[i + 5] = (buf >> 2) & 1;
+            output[i + 6] = (buf >> 1) & 1;
+            output[i + 7] = buf & 1;
+            i += 8;
+          }
+
+          // handle remaing bits
+          if (i < loop2End) {
+            buf = buffer[bufferPos++];
+            mask = 128;
+            while (i < loop2End) {
+              output[i++] = +!!(buf & mask);
+              mask >>= 1;
+            }
+          }
+        }
+      } else {
+        // The general case that handles all other bpc values.
+        var bits = 0;
+        buf = 0;
+        for (i = 0, ii = length; i < ii; ++i) {
+          if (i % rowComps === 0) {
+            buf = 0;
+            bits = 0;
+          }
+
+          while (bits < bpc) {
+            buf = (buf << 8) | buffer[bufferPos++];
+            bits += 8;
+          }
+
+          var remainingBits = bits - bpc;
+          var value = buf >> remainingBits;
+          output[i] = (value < 0 ? 0 : (value > max ? max : value));
+          buf = buf & ((1 << remainingBits) - 1);
+          bits = remainingBits;
+        }
+      }
+      return output;
+    },
+
+    fillOpacity: function PDFImage_fillOpacity(rgbaBuf, width, height,
+                                               actualHeight, image) {
+      var smask = this.smask;
+      var mask = this.mask;
+      var alphaBuf, sw, sh, i, ii, j;
+
+      if (smask) {
+        sw = smask.width;
+        sh = smask.height;
+        alphaBuf = new Uint8Array(sw * sh);
+        smask.fillGrayBuffer(alphaBuf);
+        if (sw !== width || sh !== height) {
+          alphaBuf = PDFImage.resize(alphaBuf, smask.bpc, 1, sw, sh, width,
+                                     height);
+        }
+      } else if (mask) {
+        if (mask instanceof PDFImage) {
+          sw = mask.width;
+          sh = mask.height;
+          alphaBuf = new Uint8Array(sw * sh);
+          mask.numComps = 1;
+          mask.fillGrayBuffer(alphaBuf);
+
+          // Need to invert values in rgbaBuf
+          for (i = 0, ii = sw * sh; i < ii; ++i) {
+            alphaBuf[i] = 255 - alphaBuf[i];
+          }
+
+          if (sw !== width || sh !== height) {
+            alphaBuf = PDFImage.resize(alphaBuf, mask.bpc, 1, sw, sh, width,
+                                       height);
+          }
+        } else if (isArray(mask)) {
+          // Color key mask: if any of the compontents are outside the range
+          // then they should be painted.
+          alphaBuf = new Uint8Array(width * height);
+          var numComps = this.numComps;
+          for (i = 0, ii = width * height; i < ii; ++i) {
+            var opacity = 0;
+            var imageOffset = i * numComps;
+            for (j = 0; j < numComps; ++j) {
+              var color = image[imageOffset + j];
+              var maskOffset = j * 2;
+              if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
+                opacity = 255;
+                break;
+              }
+            }
+            alphaBuf[i] = opacity;
+          }
+        } else {
+          error('Unknown mask format.');
+        }
+      }
+
+      if (alphaBuf) {
+        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
+          rgbaBuf[j] = alphaBuf[i];
+        }
+      } else {
+        // No mask.
+        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
+          rgbaBuf[j] = 255;
+        }
+      }
+    },
+
+    undoPreblend: function PDFImage_undoPreblend(buffer, width, height) {
+      var matte = this.smask && this.smask.matte;
+      if (!matte) {
+        return;
+      }
+      var matteRgb = this.colorSpace.getRgb(matte, 0);
+      var matteR = matteRgb[0];
+      var matteG = matteRgb[1];
+      var matteB = matteRgb[2];
+      var length = width * height * 4;
+      var r, g, b;
+      for (var i = 0; i < length; i += 4) {
+        var alpha = buffer[i + 3];
+        if (alpha === 0) {
+          // according formula we have to get Infinity in all components
+          // making it white (typical paper color) should be okay
+          buffer[i] = 255;
+          buffer[i + 1] = 255;
+          buffer[i + 2] = 255;
+          continue;
+        }
+        var k = 255 / alpha;
+        r = (buffer[i] - matteR) * k + matteR;
+        g = (buffer[i + 1] - matteG) * k + matteG;
+        b = (buffer[i + 2] - matteB) * k + matteB;
+        buffer[i] = r <= 0 ? 0 : r >= 255 ? 255 : r | 0;
+        buffer[i + 1] = g <= 0 ? 0 : g >= 255 ? 255 : g | 0;
+        buffer[i + 2] = b <= 0 ? 0 : b >= 255 ? 255 : b | 0;
+      }
+    },
+
+    createImageData: function PDFImage_createImageData(forceRGBA) {
+      var drawWidth = this.drawWidth;
+      var drawHeight = this.drawHeight;
+      var imgData = { // other fields are filled in below
+        width: drawWidth,
+        height: drawHeight
+      };
+
+      var numComps = this.numComps;
+      var originalWidth = this.width;
+      var originalHeight = this.height;
+      var bpc = this.bpc;
+
+      // Rows start at byte boundary.
+      var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;
+      var imgArray;
+
+      if (!forceRGBA) {
+        // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image
+        // without any complications, we pass a same-sized copy to the main
+        // thread rather than expanding by 32x to RGBA form. This saves *lots*
+        // of memory for many scanned documents. It's also much faster.
+        //
+        // Similarly, if it is a 24-bit-per pixel RGB image without any
+        // complications, we avoid expanding by 1.333x to RGBA form.
+        var kind;
+        if (this.colorSpace.name === 'DeviceGray' && bpc === 1) {
+          kind = ImageKind.GRAYSCALE_1BPP;
+        } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 &&
+                   !this.needsDecode) {
+          kind = ImageKind.RGB_24BPP;
+        }
+        if (kind && !this.smask && !this.mask &&
+            drawWidth === originalWidth && drawHeight === originalHeight) {
+          imgData.kind = kind;
+
+          imgArray = this.getImageBytes(originalHeight * rowBytes);
+          // If imgArray came from a DecodeStream, we're safe to transfer it
+          // (and thus neuter it) because it will constitute the entire
+          // DecodeStream's data.  But if it came from a Stream, we need to
+          // copy it because it'll only be a portion of the Stream's data, and
+          // the rest will be read later on.
+          if (this.image instanceof DecodeStream) {
+            imgData.data = imgArray;
+          } else {
+            var newArray = new Uint8Array(imgArray.length);
+            newArray.set(imgArray);
+            imgData.data = newArray;
+          }
+          if (this.needsDecode) {
+            // Invert the buffer (which must be grayscale if we reached here).
+            assert(kind === ImageKind.GRAYSCALE_1BPP);
+            var buffer = imgData.data;
+            for (var i = 0, ii = buffer.length; i < ii; i++) {
+              buffer[i] ^= 0xff;
+            }
+          }
+          return imgData;
+        }
+        if (this.image instanceof JpegStream && !this.smask && !this.mask) {
+          imgData.kind = ImageKind.RGB_24BPP;
+          imgData.data = this.getImageBytes(originalHeight * rowBytes,
+                                            drawWidth, drawHeight, true);
+          return imgData;
+        }
+      }
+
+      imgArray = this.getImageBytes(originalHeight * rowBytes);
+      // imgArray can be incomplete (e.g. after CCITT fax encoding).
+      var actualHeight = 0 | (imgArray.length / rowBytes *
+                         drawHeight / originalHeight);
+
+      var comps = this.getComponents(imgArray);
+
+      // If opacity data is present, use RGBA_32BPP form. Otherwise, use the
+      // more compact RGB_24BPP form if allowable.
+      var alpha01, maybeUndoPreblend;
+      if (!forceRGBA && !this.smask && !this.mask) {
+        imgData.kind = ImageKind.RGB_24BPP;
+        imgData.data = new Uint8Array(drawWidth * drawHeight * 3);
+        alpha01 = 0;
+        maybeUndoPreblend = false;
+      } else {
+        imgData.kind = ImageKind.RGBA_32BPP;
+        imgData.data = new Uint8Array(drawWidth * drawHeight * 4);
+        alpha01 = 1;
+        maybeUndoPreblend = true;
+
+        // Color key masking (opacity) must be performed before decoding.
+        this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight,
+                         comps);
+      }
+
+      if (this.needsDecode) {
+        this.decodeBuffer(comps);
+      }
+      this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight,
+                              drawWidth, drawHeight, actualHeight, bpc, comps,
+                              alpha01);
+      if (maybeUndoPreblend) {
+        this.undoPreblend(imgData.data, drawWidth, actualHeight);
+      }
+
+      return imgData;
+    },
+
+    fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) {
+      var numComps = this.numComps;
+      if (numComps !== 1) {
+        error('Reading gray scale from a color image: ' + numComps);
+      }
+
+      var width = this.width;
+      var height = this.height;
+      var bpc = this.bpc;
+
+      // rows start at byte boundary
+      var rowBytes = (width * numComps * bpc + 7) >> 3;
+      var imgArray = this.getImageBytes(height * rowBytes);
+
+      var comps = this.getComponents(imgArray);
+      var i, length;
+
+      if (bpc === 1) {
+        // inline decoding (= inversion) for 1 bpc images
+        length = width * height;
+        if (this.needsDecode) {
+          // invert and scale to {0, 255}
+          for (i = 0; i < length; ++i) {
+            buffer[i] = (comps[i] - 1) & 255;
+          }
+        } else {
+          // scale to {0, 255}
+          for (i = 0; i < length; ++i) {
+            buffer[i] = (-comps[i]) & 255;
+          }
+        }
+        return;
+      }
+
+      if (this.needsDecode) {
+        this.decodeBuffer(comps);
+      }
+      length = width * height;
+      // we aren't using a colorspace so we need to scale the value
+      var scale = 255 / ((1 << bpc) - 1);
+      for (i = 0; i < length; ++i) {
+        buffer[i] = (scale * comps[i]) | 0;
+      }
+    },
+
+    getImageBytes: function PDFImage_getImageBytes(length,
+                                                   drawWidth, drawHeight,
+                                                   forceRGB) {
+      this.image.reset();
+      this.image.drawWidth = drawWidth || this.width;
+      this.image.drawHeight = drawHeight || this.height;
+      this.image.forceRGB = !!forceRGB;
+      return this.image.getBytes(length);
+    }
+  };
+  return PDFImage;
+})();
+
+
+// The Metrics object contains glyph widths (in glyph space units).
+// As per PDF spec, for most fonts (Type 3 being an exception) a glyph
+// space unit corresponds to 1/1000th of text space unit.
+var Metrics = {
+  'Courier': 600,
+  'Courier-Bold': 600,
+  'Courier-BoldOblique': 600,
+  'Courier-Oblique': 600,
+  'Helvetica' : {
+    'space': 278,
+    'exclam': 278,
+    'quotedbl': 355,
+    'numbersign': 556,
+    'dollar': 556,
+    'percent': 889,
+    'ampersand': 667,
+    'quoteright': 222,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 389,
+    'plus': 584,
+    'comma': 278,
+    'hyphen': 333,
+    'period': 278,
+    'slash': 278,
+    'zero': 556,
+    'one': 556,
+    'two': 556,
+    'three': 556,
+    'four': 556,
+    'five': 556,
+    'six': 556,
+    'seven': 556,
+    'eight': 556,
+    'nine': 556,
+    'colon': 278,
+    'semicolon': 278,
+    'less': 584,
+    'equal': 584,
+    'greater': 584,
+    'question': 556,
+    'at': 1015,
+    'A': 667,
+    'B': 667,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 722,
+    'I': 278,
+    'J': 500,
+    'K': 667,
+    'L': 556,
+    'M': 833,
+    'N': 722,
+    'O': 778,
+    'P': 667,
+    'Q': 778,
+    'R': 722,
+    'S': 667,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 944,
+    'X': 667,
+    'Y': 667,
+    'Z': 611,
+    'bracketleft': 278,
+    'backslash': 278,
+    'bracketright': 278,
+    'asciicircum': 469,
+    'underscore': 556,
+    'quoteleft': 222,
+    'a': 556,
+    'b': 556,
+    'c': 500,
+    'd': 556,
+    'e': 556,
+    'f': 278,
+    'g': 556,
+    'h': 556,
+    'i': 222,
+    'j': 222,
+    'k': 500,
+    'l': 222,
+    'm': 833,
+    'n': 556,
+    'o': 556,
+    'p': 556,
+    'q': 556,
+    'r': 333,
+    's': 500,
+    't': 278,
+    'u': 556,
+    'v': 500,
+    'w': 722,
+    'x': 500,
+    'y': 500,
+    'z': 500,
+    'braceleft': 334,
+    'bar': 260,
+    'braceright': 334,
+    'asciitilde': 584,
+    'exclamdown': 333,
+    'cent': 556,
+    'sterling': 556,
+    'fraction': 167,
+    'yen': 556,
+    'florin': 556,
+    'section': 556,
+    'currency': 556,
+    'quotesingle': 191,
+    'quotedblleft': 333,
+    'guillemotleft': 556,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 500,
+    'fl': 500,
+    'endash': 556,
+    'dagger': 556,
+    'daggerdbl': 556,
+    'periodcentered': 278,
+    'paragraph': 537,
+    'bullet': 350,
+    'quotesinglbase': 222,
+    'quotedblbase': 333,
+    'quotedblright': 333,
+    'guillemotright': 556,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 611,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 370,
+    'Lslash': 556,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 365,
+    'ae': 889,
+    'dotlessi': 278,
+    'lslash': 222,
+    'oslash': 611,
+    'oe': 944,
+    'germandbls': 611,
+    'Idieresis': 278,
+    'eacute': 556,
+    'abreve': 556,
+    'uhungarumlaut': 556,
+    'ecaron': 556,
+    'Ydieresis': 667,
+    'divide': 584,
+    'Yacute': 667,
+    'Acircumflex': 667,
+    'aacute': 556,
+    'Ucircumflex': 722,
+    'yacute': 500,
+    'scommaaccent': 500,
+    'ecircumflex': 556,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 556,
+    'Uacute': 722,
+    'uogonek': 556,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 737,
+    'Emacron': 667,
+    'ccaron': 500,
+    'aring': 556,
+    'Ncommaaccent': 722,
+    'lacute': 222,
+    'agrave': 556,
+    'Tcommaaccent': 611,
+    'Cacute': 722,
+    'atilde': 556,
+    'Edotaccent': 667,
+    'scaron': 500,
+    'scedilla': 500,
+    'iacute': 278,
+    'lozenge': 471,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 556,
+    'acircumflex': 556,
+    'Amacron': 667,
+    'rcaron': 333,
+    'ccedilla': 500,
+    'Zdotaccent': 611,
+    'Thorn': 667,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 667,
+    'dcaron': 643,
+    'Umacron': 722,
+    'uring': 556,
+    'threesuperior': 333,
+    'Ograve': 778,
+    'Agrave': 667,
+    'Abreve': 667,
+    'multiply': 584,
+    'uacute': 556,
+    'Tcaron': 611,
+    'partialdiff': 476,
+    'ydieresis': 500,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 556,
+    'edieresis': 556,
+    'cacute': 500,
+    'nacute': 556,
+    'umacron': 556,
+    'Ncaron': 722,
+    'Iacute': 278,
+    'plusminus': 584,
+    'brokenbar': 260,
+    'registered': 737,
+    'Gbreve': 778,
+    'Idotaccent': 278,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 333,
+    'omacron': 556,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 222,
+    'tcaron': 317,
+    'eogonek': 556,
+    'Uogonek': 722,
+    'Aacute': 667,
+    'Adieresis': 667,
+    'egrave': 556,
+    'zacute': 500,
+    'iogonek': 222,
+    'Oacute': 778,
+    'oacute': 556,
+    'amacron': 556,
+    'sacute': 500,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 556,
+    'twosuperior': 333,
+    'Odieresis': 778,
+    'mu': 556,
+    'igrave': 278,
+    'ohungarumlaut': 556,
+    'Eogonek': 667,
+    'dcroat': 556,
+    'threequarters': 834,
+    'Scedilla': 667,
+    'lcaron': 299,
+    'Kcommaaccent': 667,
+    'Lacute': 556,
+    'trademark': 1000,
+    'edotaccent': 556,
+    'Igrave': 278,
+    'Imacron': 278,
+    'Lcaron': 556,
+    'onehalf': 834,
+    'lessequal': 549,
+    'ocircumflex': 556,
+    'ntilde': 556,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 556,
+    'gbreve': 556,
+    'onequarter': 834,
+    'Scaron': 667,
+    'Scommaaccent': 667,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 556,
+    'Ccaron': 722,
+    'ugrave': 556,
+    'radical': 453,
+    'Dcaron': 722,
+    'rcommaaccent': 333,
+    'Ntilde': 722,
+    'otilde': 556,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 556,
+    'Atilde': 667,
+    'Aogonek': 667,
+    'Aring': 667,
+    'Otilde': 778,
+    'zdotaccent': 500,
+    'Ecaron': 667,
+    'Iogonek': 278,
+    'kcommaaccent': 500,
+    'minus': 584,
+    'Icircumflex': 278,
+    'ncaron': 556,
+    'tcommaaccent': 278,
+    'logicalnot': 584,
+    'odieresis': 556,
+    'udieresis': 556,
+    'notequal': 549,
+    'gcommaaccent': 556,
+    'eth': 556,
+    'zcaron': 500,
+    'ncommaaccent': 556,
+    'onesuperior': 333,
+    'imacron': 278,
+    'Euro': 556
+  },
+  'Helvetica-Bold': {
+    'space': 278,
+    'exclam': 333,
+    'quotedbl': 474,
+    'numbersign': 556,
+    'dollar': 556,
+    'percent': 889,
+    'ampersand': 722,
+    'quoteright': 278,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 389,
+    'plus': 584,
+    'comma': 278,
+    'hyphen': 333,
+    'period': 278,
+    'slash': 278,
+    'zero': 556,
+    'one': 556,
+    'two': 556,
+    'three': 556,
+    'four': 556,
+    'five': 556,
+    'six': 556,
+    'seven': 556,
+    'eight': 556,
+    'nine': 556,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 584,
+    'equal': 584,
+    'greater': 584,
+    'question': 611,
+    'at': 975,
+    'A': 722,
+    'B': 722,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 722,
+    'I': 278,
+    'J': 556,
+    'K': 722,
+    'L': 611,
+    'M': 833,
+    'N': 722,
+    'O': 778,
+    'P': 667,
+    'Q': 778,
+    'R': 722,
+    'S': 667,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 944,
+    'X': 667,
+    'Y': 667,
+    'Z': 611,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 584,
+    'underscore': 556,
+    'quoteleft': 278,
+    'a': 556,
+    'b': 611,
+    'c': 556,
+    'd': 611,
+    'e': 556,
+    'f': 333,
+    'g': 611,
+    'h': 611,
+    'i': 278,
+    'j': 278,
+    'k': 556,
+    'l': 278,
+    'm': 889,
+    'n': 611,
+    'o': 611,
+    'p': 611,
+    'q': 611,
+    'r': 389,
+    's': 556,
+    't': 333,
+    'u': 611,
+    'v': 556,
+    'w': 778,
+    'x': 556,
+    'y': 556,
+    'z': 500,
+    'braceleft': 389,
+    'bar': 280,
+    'braceright': 389,
+    'asciitilde': 584,
+    'exclamdown': 333,
+    'cent': 556,
+    'sterling': 556,
+    'fraction': 167,
+    'yen': 556,
+    'florin': 556,
+    'section': 556,
+    'currency': 556,
+    'quotesingle': 238,
+    'quotedblleft': 500,
+    'guillemotleft': 556,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 611,
+    'fl': 611,
+    'endash': 556,
+    'dagger': 556,
+    'daggerdbl': 556,
+    'periodcentered': 278,
+    'paragraph': 556,
+    'bullet': 350,
+    'quotesinglbase': 278,
+    'quotedblbase': 500,
+    'quotedblright': 500,
+    'guillemotright': 556,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 611,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 370,
+    'Lslash': 611,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 365,
+    'ae': 889,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 611,
+    'oe': 944,
+    'germandbls': 611,
+    'Idieresis': 278,
+    'eacute': 556,
+    'abreve': 556,
+    'uhungarumlaut': 611,
+    'ecaron': 556,
+    'Ydieresis': 667,
+    'divide': 584,
+    'Yacute': 667,
+    'Acircumflex': 722,
+    'aacute': 556,
+    'Ucircumflex': 722,
+    'yacute': 556,
+    'scommaaccent': 556,
+    'ecircumflex': 556,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 556,
+    'Uacute': 722,
+    'uogonek': 611,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 737,
+    'Emacron': 667,
+    'ccaron': 556,
+    'aring': 556,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 556,
+    'Tcommaaccent': 611,
+    'Cacute': 722,
+    'atilde': 556,
+    'Edotaccent': 667,
+    'scaron': 556,
+    'scedilla': 556,
+    'iacute': 278,
+    'lozenge': 494,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 611,
+    'acircumflex': 556,
+    'Amacron': 722,
+    'rcaron': 389,
+    'ccedilla': 556,
+    'Zdotaccent': 611,
+    'Thorn': 667,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 667,
+    'dcaron': 743,
+    'Umacron': 722,
+    'uring': 611,
+    'threesuperior': 333,
+    'Ograve': 778,
+    'Agrave': 722,
+    'Abreve': 722,
+    'multiply': 584,
+    'uacute': 611,
+    'Tcaron': 611,
+    'partialdiff': 494,
+    'ydieresis': 556,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 556,
+    'edieresis': 556,
+    'cacute': 556,
+    'nacute': 611,
+    'umacron': 611,
+    'Ncaron': 722,
+    'Iacute': 278,
+    'plusminus': 584,
+    'brokenbar': 280,
+    'registered': 737,
+    'Gbreve': 778,
+    'Idotaccent': 278,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 389,
+    'omacron': 611,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 278,
+    'tcaron': 389,
+    'eogonek': 556,
+    'Uogonek': 722,
+    'Aacute': 722,
+    'Adieresis': 722,
+    'egrave': 556,
+    'zacute': 500,
+    'iogonek': 278,
+    'Oacute': 778,
+    'oacute': 611,
+    'amacron': 556,
+    'sacute': 556,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 611,
+    'twosuperior': 333,
+    'Odieresis': 778,
+    'mu': 611,
+    'igrave': 278,
+    'ohungarumlaut': 611,
+    'Eogonek': 667,
+    'dcroat': 611,
+    'threequarters': 834,
+    'Scedilla': 667,
+    'lcaron': 400,
+    'Kcommaaccent': 722,
+    'Lacute': 611,
+    'trademark': 1000,
+    'edotaccent': 556,
+    'Igrave': 278,
+    'Imacron': 278,
+    'Lcaron': 611,
+    'onehalf': 834,
+    'lessequal': 549,
+    'ocircumflex': 611,
+    'ntilde': 611,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 556,
+    'gbreve': 611,
+    'onequarter': 834,
+    'Scaron': 667,
+    'Scommaaccent': 667,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 611,
+    'Ccaron': 722,
+    'ugrave': 611,
+    'radical': 549,
+    'Dcaron': 722,
+    'rcommaaccent': 389,
+    'Ntilde': 722,
+    'otilde': 611,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 611,
+    'Atilde': 722,
+    'Aogonek': 722,
+    'Aring': 722,
+    'Otilde': 778,
+    'zdotaccent': 500,
+    'Ecaron': 667,
+    'Iogonek': 278,
+    'kcommaaccent': 556,
+    'minus': 584,
+    'Icircumflex': 278,
+    'ncaron': 611,
+    'tcommaaccent': 333,
+    'logicalnot': 584,
+    'odieresis': 611,
+    'udieresis': 611,
+    'notequal': 549,
+    'gcommaaccent': 611,
+    'eth': 611,
+    'zcaron': 500,
+    'ncommaaccent': 611,
+    'onesuperior': 333,
+    'imacron': 278,
+    'Euro': 556
+  },
+  'Helvetica-BoldOblique': {
+    'space': 278,
+    'exclam': 333,
+    'quotedbl': 474,
+    'numbersign': 556,
+    'dollar': 556,
+    'percent': 889,
+    'ampersand': 722,
+    'quoteright': 278,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 389,
+    'plus': 584,
+    'comma': 278,
+    'hyphen': 333,
+    'period': 278,
+    'slash': 278,
+    'zero': 556,
+    'one': 556,
+    'two': 556,
+    'three': 556,
+    'four': 556,
+    'five': 556,
+    'six': 556,
+    'seven': 556,
+    'eight': 556,
+    'nine': 556,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 584,
+    'equal': 584,
+    'greater': 584,
+    'question': 611,
+    'at': 975,
+    'A': 722,
+    'B': 722,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 722,
+    'I': 278,
+    'J': 556,
+    'K': 722,
+    'L': 611,
+    'M': 833,
+    'N': 722,
+    'O': 778,
+    'P': 667,
+    'Q': 778,
+    'R': 722,
+    'S': 667,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 944,
+    'X': 667,
+    'Y': 667,
+    'Z': 611,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 584,
+    'underscore': 556,
+    'quoteleft': 278,
+    'a': 556,
+    'b': 611,
+    'c': 556,
+    'd': 611,
+    'e': 556,
+    'f': 333,
+    'g': 611,
+    'h': 611,
+    'i': 278,
+    'j': 278,
+    'k': 556,
+    'l': 278,
+    'm': 889,
+    'n': 611,
+    'o': 611,
+    'p': 611,
+    'q': 611,
+    'r': 389,
+    's': 556,
+    't': 333,
+    'u': 611,
+    'v': 556,
+    'w': 778,
+    'x': 556,
+    'y': 556,
+    'z': 500,
+    'braceleft': 389,
+    'bar': 280,
+    'braceright': 389,
+    'asciitilde': 584,
+    'exclamdown': 333,
+    'cent': 556,
+    'sterling': 556,
+    'fraction': 167,
+    'yen': 556,
+    'florin': 556,
+    'section': 556,
+    'currency': 556,
+    'quotesingle': 238,
+    'quotedblleft': 500,
+    'guillemotleft': 556,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 611,
+    'fl': 611,
+    'endash': 556,
+    'dagger': 556,
+    'daggerdbl': 556,
+    'periodcentered': 278,
+    'paragraph': 556,
+    'bullet': 350,
+    'quotesinglbase': 278,
+    'quotedblbase': 500,
+    'quotedblright': 500,
+    'guillemotright': 556,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 611,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 370,
+    'Lslash': 611,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 365,
+    'ae': 889,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 611,
+    'oe': 944,
+    'germandbls': 611,
+    'Idieresis': 278,
+    'eacute': 556,
+    'abreve': 556,
+    'uhungarumlaut': 611,
+    'ecaron': 556,
+    'Ydieresis': 667,
+    'divide': 584,
+    'Yacute': 667,
+    'Acircumflex': 722,
+    'aacute': 556,
+    'Ucircumflex': 722,
+    'yacute': 556,
+    'scommaaccent': 556,
+    'ecircumflex': 556,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 556,
+    'Uacute': 722,
+    'uogonek': 611,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 737,
+    'Emacron': 667,
+    'ccaron': 556,
+    'aring': 556,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 556,
+    'Tcommaaccent': 611,
+    'Cacute': 722,
+    'atilde': 556,
+    'Edotaccent': 667,
+    'scaron': 556,
+    'scedilla': 556,
+    'iacute': 278,
+    'lozenge': 494,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 611,
+    'acircumflex': 556,
+    'Amacron': 722,
+    'rcaron': 389,
+    'ccedilla': 556,
+    'Zdotaccent': 611,
+    'Thorn': 667,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 667,
+    'dcaron': 743,
+    'Umacron': 722,
+    'uring': 611,
+    'threesuperior': 333,
+    'Ograve': 778,
+    'Agrave': 722,
+    'Abreve': 722,
+    'multiply': 584,
+    'uacute': 611,
+    'Tcaron': 611,
+    'partialdiff': 494,
+    'ydieresis': 556,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 556,
+    'edieresis': 556,
+    'cacute': 556,
+    'nacute': 611,
+    'umacron': 611,
+    'Ncaron': 722,
+    'Iacute': 278,
+    'plusminus': 584,
+    'brokenbar': 280,
+    'registered': 737,
+    'Gbreve': 778,
+    'Idotaccent': 278,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 389,
+    'omacron': 611,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 278,
+    'tcaron': 389,
+    'eogonek': 556,
+    'Uogonek': 722,
+    'Aacute': 722,
+    'Adieresis': 722,
+    'egrave': 556,
+    'zacute': 500,
+    'iogonek': 278,
+    'Oacute': 778,
+    'oacute': 611,
+    'amacron': 556,
+    'sacute': 556,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 611,
+    'twosuperior': 333,
+    'Odieresis': 778,
+    'mu': 611,
+    'igrave': 278,
+    'ohungarumlaut': 611,
+    'Eogonek': 667,
+    'dcroat': 611,
+    'threequarters': 834,
+    'Scedilla': 667,
+    'lcaron': 400,
+    'Kcommaaccent': 722,
+    'Lacute': 611,
+    'trademark': 1000,
+    'edotaccent': 556,
+    'Igrave': 278,
+    'Imacron': 278,
+    'Lcaron': 611,
+    'onehalf': 834,
+    'lessequal': 549,
+    'ocircumflex': 611,
+    'ntilde': 611,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 556,
+    'gbreve': 611,
+    'onequarter': 834,
+    'Scaron': 667,
+    'Scommaaccent': 667,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 611,
+    'Ccaron': 722,
+    'ugrave': 611,
+    'radical': 549,
+    'Dcaron': 722,
+    'rcommaaccent': 389,
+    'Ntilde': 722,
+    'otilde': 611,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 611,
+    'Atilde': 722,
+    'Aogonek': 722,
+    'Aring': 722,
+    'Otilde': 778,
+    'zdotaccent': 500,
+    'Ecaron': 667,
+    'Iogonek': 278,
+    'kcommaaccent': 556,
+    'minus': 584,
+    'Icircumflex': 278,
+    'ncaron': 611,
+    'tcommaaccent': 333,
+    'logicalnot': 584,
+    'odieresis': 611,
+    'udieresis': 611,
+    'notequal': 549,
+    'gcommaaccent': 611,
+    'eth': 611,
+    'zcaron': 500,
+    'ncommaaccent': 611,
+    'onesuperior': 333,
+    'imacron': 278,
+    'Euro': 556
+  },
+  'Helvetica-Oblique' : {
+    'space': 278,
+    'exclam': 278,
+    'quotedbl': 355,
+    'numbersign': 556,
+    'dollar': 556,
+    'percent': 889,
+    'ampersand': 667,
+    'quoteright': 222,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 389,
+    'plus': 584,
+    'comma': 278,
+    'hyphen': 333,
+    'period': 278,
+    'slash': 278,
+    'zero': 556,
+    'one': 556,
+    'two': 556,
+    'three': 556,
+    'four': 556,
+    'five': 556,
+    'six': 556,
+    'seven': 556,
+    'eight': 556,
+    'nine': 556,
+    'colon': 278,
+    'semicolon': 278,
+    'less': 584,
+    'equal': 584,
+    'greater': 584,
+    'question': 556,
+    'at': 1015,
+    'A': 667,
+    'B': 667,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 722,
+    'I': 278,
+    'J': 500,
+    'K': 667,
+    'L': 556,
+    'M': 833,
+    'N': 722,
+    'O': 778,
+    'P': 667,
+    'Q': 778,
+    'R': 722,
+    'S': 667,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 944,
+    'X': 667,
+    'Y': 667,
+    'Z': 611,
+    'bracketleft': 278,
+    'backslash': 278,
+    'bracketright': 278,
+    'asciicircum': 469,
+    'underscore': 556,
+    'quoteleft': 222,
+    'a': 556,
+    'b': 556,
+    'c': 500,
+    'd': 556,
+    'e': 556,
+    'f': 278,
+    'g': 556,
+    'h': 556,
+    'i': 222,
+    'j': 222,
+    'k': 500,
+    'l': 222,
+    'm': 833,
+    'n': 556,
+    'o': 556,
+    'p': 556,
+    'q': 556,
+    'r': 333,
+    's': 500,
+    't': 278,
+    'u': 556,
+    'v': 500,
+    'w': 722,
+    'x': 500,
+    'y': 500,
+    'z': 500,
+    'braceleft': 334,
+    'bar': 260,
+    'braceright': 334,
+    'asciitilde': 584,
+    'exclamdown': 333,
+    'cent': 556,
+    'sterling': 556,
+    'fraction': 167,
+    'yen': 556,
+    'florin': 556,
+    'section': 556,
+    'currency': 556,
+    'quotesingle': 191,
+    'quotedblleft': 333,
+    'guillemotleft': 556,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 500,
+    'fl': 500,
+    'endash': 556,
+    'dagger': 556,
+    'daggerdbl': 556,
+    'periodcentered': 278,
+    'paragraph': 537,
+    'bullet': 350,
+    'quotesinglbase': 222,
+    'quotedblbase': 333,
+    'quotedblright': 333,
+    'guillemotright': 556,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 611,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 370,
+    'Lslash': 556,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 365,
+    'ae': 889,
+    'dotlessi': 278,
+    'lslash': 222,
+    'oslash': 611,
+    'oe': 944,
+    'germandbls': 611,
+    'Idieresis': 278,
+    'eacute': 556,
+    'abreve': 556,
+    'uhungarumlaut': 556,
+    'ecaron': 556,
+    'Ydieresis': 667,
+    'divide': 584,
+    'Yacute': 667,
+    'Acircumflex': 667,
+    'aacute': 556,
+    'Ucircumflex': 722,
+    'yacute': 500,
+    'scommaaccent': 500,
+    'ecircumflex': 556,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 556,
+    'Uacute': 722,
+    'uogonek': 556,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 737,
+    'Emacron': 667,
+    'ccaron': 500,
+    'aring': 556,
+    'Ncommaaccent': 722,
+    'lacute': 222,
+    'agrave': 556,
+    'Tcommaaccent': 611,
+    'Cacute': 722,
+    'atilde': 556,
+    'Edotaccent': 667,
+    'scaron': 500,
+    'scedilla': 500,
+    'iacute': 278,
+    'lozenge': 471,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 556,
+    'acircumflex': 556,
+    'Amacron': 667,
+    'rcaron': 333,
+    'ccedilla': 500,
+    'Zdotaccent': 611,
+    'Thorn': 667,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 667,
+    'dcaron': 643,
+    'Umacron': 722,
+    'uring': 556,
+    'threesuperior': 333,
+    'Ograve': 778,
+    'Agrave': 667,
+    'Abreve': 667,
+    'multiply': 584,
+    'uacute': 556,
+    'Tcaron': 611,
+    'partialdiff': 476,
+    'ydieresis': 500,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 556,
+    'edieresis': 556,
+    'cacute': 500,
+    'nacute': 556,
+    'umacron': 556,
+    'Ncaron': 722,
+    'Iacute': 278,
+    'plusminus': 584,
+    'brokenbar': 260,
+    'registered': 737,
+    'Gbreve': 778,
+    'Idotaccent': 278,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 333,
+    'omacron': 556,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 222,
+    'tcaron': 317,
+    'eogonek': 556,
+    'Uogonek': 722,
+    'Aacute': 667,
+    'Adieresis': 667,
+    'egrave': 556,
+    'zacute': 500,
+    'iogonek': 222,
+    'Oacute': 778,
+    'oacute': 556,
+    'amacron': 556,
+    'sacute': 500,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 556,
+    'twosuperior': 333,
+    'Odieresis': 778,
+    'mu': 556,
+    'igrave': 278,
+    'ohungarumlaut': 556,
+    'Eogonek': 667,
+    'dcroat': 556,
+    'threequarters': 834,
+    'Scedilla': 667,
+    'lcaron': 299,
+    'Kcommaaccent': 667,
+    'Lacute': 556,
+    'trademark': 1000,
+    'edotaccent': 556,
+    'Igrave': 278,
+    'Imacron': 278,
+    'Lcaron': 556,
+    'onehalf': 834,
+    'lessequal': 549,
+    'ocircumflex': 556,
+    'ntilde': 556,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 556,
+    'gbreve': 556,
+    'onequarter': 834,
+    'Scaron': 667,
+    'Scommaaccent': 667,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 556,
+    'Ccaron': 722,
+    'ugrave': 556,
+    'radical': 453,
+    'Dcaron': 722,
+    'rcommaaccent': 333,
+    'Ntilde': 722,
+    'otilde': 556,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 556,
+    'Atilde': 667,
+    'Aogonek': 667,
+    'Aring': 667,
+    'Otilde': 778,
+    'zdotaccent': 500,
+    'Ecaron': 667,
+    'Iogonek': 278,
+    'kcommaaccent': 500,
+    'minus': 584,
+    'Icircumflex': 278,
+    'ncaron': 556,
+    'tcommaaccent': 278,
+    'logicalnot': 584,
+    'odieresis': 556,
+    'udieresis': 556,
+    'notequal': 549,
+    'gcommaaccent': 556,
+    'eth': 556,
+    'zcaron': 500,
+    'ncommaaccent': 556,
+    'onesuperior': 333,
+    'imacron': 278,
+    'Euro': 556
+  },
+  'Symbol': {
+    'space': 250,
+    'exclam': 333,
+    'universal': 713,
+    'numbersign': 500,
+    'existential': 549,
+    'percent': 833,
+    'ampersand': 778,
+    'suchthat': 439,
+    'parenleft': 333,
+    'parenright': 333,
+    'asteriskmath': 500,
+    'plus': 549,
+    'comma': 250,
+    'minus': 549,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 278,
+    'semicolon': 278,
+    'less': 549,
+    'equal': 549,
+    'greater': 549,
+    'question': 444,
+    'congruent': 549,
+    'Alpha': 722,
+    'Beta': 667,
+    'Chi': 722,
+    'Delta': 612,
+    'Epsilon': 611,
+    'Phi': 763,
+    'Gamma': 603,
+    'Eta': 722,
+    'Iota': 333,
+    'theta1': 631,
+    'Kappa': 722,
+    'Lambda': 686,
+    'Mu': 889,
+    'Nu': 722,
+    'Omicron': 722,
+    'Pi': 768,
+    'Theta': 741,
+    'Rho': 556,
+    'Sigma': 592,
+    'Tau': 611,
+    'Upsilon': 690,
+    'sigma1': 439,
+    'Omega': 768,
+    'Xi': 645,
+    'Psi': 795,
+    'Zeta': 611,
+    'bracketleft': 333,
+    'therefore': 863,
+    'bracketright': 333,
+    'perpendicular': 658,
+    'underscore': 500,
+    'radicalex': 500,
+    'alpha': 631,
+    'beta': 549,
+    'chi': 549,
+    'delta': 494,
+    'epsilon': 439,
+    'phi': 521,
+    'gamma': 411,
+    'eta': 603,
+    'iota': 329,
+    'phi1': 603,
+    'kappa': 549,
+    'lambda': 549,
+    'mu': 576,
+    'nu': 521,
+    'omicron': 549,
+    'pi': 549,
+    'theta': 521,
+    'rho': 549,
+    'sigma': 603,
+    'tau': 439,
+    'upsilon': 576,
+    'omega1': 713,
+    'omega': 686,
+    'xi': 493,
+    'psi': 686,
+    'zeta': 494,
+    'braceleft': 480,
+    'bar': 200,
+    'braceright': 480,
+    'similar': 549,
+    'Euro': 750,
+    'Upsilon1': 620,
+    'minute': 247,
+    'lessequal': 549,
+    'fraction': 167,
+    'infinity': 713,
+    'florin': 500,
+    'club': 753,
+    'diamond': 753,
+    'heart': 753,
+    'spade': 753,
+    'arrowboth': 1042,
+    'arrowleft': 987,
+    'arrowup': 603,
+    'arrowright': 987,
+    'arrowdown': 603,
+    'degree': 400,
+    'plusminus': 549,
+    'second': 411,
+    'greaterequal': 549,
+    'multiply': 549,
+    'proportional': 713,
+    'partialdiff': 494,
+    'bullet': 460,
+    'divide': 549,
+    'notequal': 549,
+    'equivalence': 549,
+    'approxequal': 549,
+    'ellipsis': 1000,
+    'arrowvertex': 603,
+    'arrowhorizex': 1000,
+    'carriagereturn': 658,
+    'aleph': 823,
+    'Ifraktur': 686,
+    'Rfraktur': 795,
+    'weierstrass': 987,
+    'circlemultiply': 768,
+    'circleplus': 768,
+    'emptyset': 823,
+    'intersection': 768,
+    'union': 768,
+    'propersuperset': 713,
+    'reflexsuperset': 713,
+    'notsubset': 713,
+    'propersubset': 713,
+    'reflexsubset': 713,
+    'element': 713,
+    'notelement': 713,
+    'angle': 768,
+    'gradient': 713,
+    'registerserif': 790,
+    'copyrightserif': 790,
+    'trademarkserif': 890,
+    'product': 823,
+    'radical': 549,
+    'dotmath': 250,
+    'logicalnot': 713,
+    'logicaland': 603,
+    'logicalor': 603,
+    'arrowdblboth': 1042,
+    'arrowdblleft': 987,
+    'arrowdblup': 603,
+    'arrowdblright': 987,
+    'arrowdbldown': 603,
+    'lozenge': 494,
+    'angleleft': 329,
+    'registersans': 790,
+    'copyrightsans': 790,
+    'trademarksans': 786,
+    'summation': 713,
+    'parenlefttp': 384,
+    'parenleftex': 384,
+    'parenleftbt': 384,
+    'bracketlefttp': 384,
+    'bracketleftex': 384,
+    'bracketleftbt': 384,
+    'bracelefttp': 494,
+    'braceleftmid': 494,
+    'braceleftbt': 494,
+    'braceex': 494,
+    'angleright': 329,
+    'integral': 274,
+    'integraltp': 686,
+    'integralex': 686,
+    'integralbt': 686,
+    'parenrighttp': 384,
+    'parenrightex': 384,
+    'parenrightbt': 384,
+    'bracketrighttp': 384,
+    'bracketrightex': 384,
+    'bracketrightbt': 384,
+    'bracerighttp': 494,
+    'bracerightmid': 494,
+    'bracerightbt': 494,
+    'apple': 790
+  },
+  'Times-Roman': {
+    'space': 250,
+    'exclam': 333,
+    'quotedbl': 408,
+    'numbersign': 500,
+    'dollar': 500,
+    'percent': 833,
+    'ampersand': 778,
+    'quoteright': 333,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 500,
+    'plus': 564,
+    'comma': 250,
+    'hyphen': 333,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 278,
+    'semicolon': 278,
+    'less': 564,
+    'equal': 564,
+    'greater': 564,
+    'question': 444,
+    'at': 921,
+    'A': 722,
+    'B': 667,
+    'C': 667,
+    'D': 722,
+    'E': 611,
+    'F': 556,
+    'G': 722,
+    'H': 722,
+    'I': 333,
+    'J': 389,
+    'K': 722,
+    'L': 611,
+    'M': 889,
+    'N': 722,
+    'O': 722,
+    'P': 556,
+    'Q': 722,
+    'R': 667,
+    'S': 556,
+    'T': 611,
+    'U': 722,
+    'V': 722,
+    'W': 944,
+    'X': 722,
+    'Y': 722,
+    'Z': 611,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 469,
+    'underscore': 500,
+    'quoteleft': 333,
+    'a': 444,
+    'b': 500,
+    'c': 444,
+    'd': 500,
+    'e': 444,
+    'f': 333,
+    'g': 500,
+    'h': 500,
+    'i': 278,
+    'j': 278,
+    'k': 500,
+    'l': 278,
+    'm': 778,
+    'n': 500,
+    'o': 500,
+    'p': 500,
+    'q': 500,
+    'r': 333,
+    's': 389,
+    't': 278,
+    'u': 500,
+    'v': 500,
+    'w': 722,
+    'x': 500,
+    'y': 500,
+    'z': 444,
+    'braceleft': 480,
+    'bar': 200,
+    'braceright': 480,
+    'asciitilde': 541,
+    'exclamdown': 333,
+    'cent': 500,
+    'sterling': 500,
+    'fraction': 167,
+    'yen': 500,
+    'florin': 500,
+    'section': 500,
+    'currency': 500,
+    'quotesingle': 180,
+    'quotedblleft': 444,
+    'guillemotleft': 500,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 556,
+    'fl': 556,
+    'endash': 500,
+    'dagger': 500,
+    'daggerdbl': 500,
+    'periodcentered': 250,
+    'paragraph': 453,
+    'bullet': 350,
+    'quotesinglbase': 333,
+    'quotedblbase': 444,
+    'quotedblright': 444,
+    'guillemotright': 500,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 444,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 889,
+    'ordfeminine': 276,
+    'Lslash': 611,
+    'Oslash': 722,
+    'OE': 889,
+    'ordmasculine': 310,
+    'ae': 667,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 500,
+    'oe': 722,
+    'germandbls': 500,
+    'Idieresis': 333,
+    'eacute': 444,
+    'abreve': 444,
+    'uhungarumlaut': 500,
+    'ecaron': 444,
+    'Ydieresis': 722,
+    'divide': 564,
+    'Yacute': 722,
+    'Acircumflex': 722,
+    'aacute': 444,
+    'Ucircumflex': 722,
+    'yacute': 500,
+    'scommaaccent': 389,
+    'ecircumflex': 444,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 444,
+    'Uacute': 722,
+    'uogonek': 500,
+    'Edieresis': 611,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 760,
+    'Emacron': 611,
+    'ccaron': 444,
+    'aring': 444,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 444,
+    'Tcommaaccent': 611,
+    'Cacute': 667,
+    'atilde': 444,
+    'Edotaccent': 611,
+    'scaron': 389,
+    'scedilla': 389,
+    'iacute': 278,
+    'lozenge': 471,
+    'Rcaron': 667,
+    'Gcommaaccent': 722,
+    'ucircumflex': 500,
+    'acircumflex': 444,
+    'Amacron': 722,
+    'rcaron': 333,
+    'ccedilla': 444,
+    'Zdotaccent': 611,
+    'Thorn': 556,
+    'Omacron': 722,
+    'Racute': 667,
+    'Sacute': 556,
+    'dcaron': 588,
+    'Umacron': 722,
+    'uring': 500,
+    'threesuperior': 300,
+    'Ograve': 722,
+    'Agrave': 722,
+    'Abreve': 722,
+    'multiply': 564,
+    'uacute': 500,
+    'Tcaron': 611,
+    'partialdiff': 476,
+    'ydieresis': 500,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 611,
+    'adieresis': 444,
+    'edieresis': 444,
+    'cacute': 444,
+    'nacute': 500,
+    'umacron': 500,
+    'Ncaron': 722,
+    'Iacute': 333,
+    'plusminus': 564,
+    'brokenbar': 200,
+    'registered': 760,
+    'Gbreve': 722,
+    'Idotaccent': 333,
+    'summation': 600,
+    'Egrave': 611,
+    'racute': 333,
+    'omacron': 500,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 667,
+    'lcommaaccent': 278,
+    'tcaron': 326,
+    'eogonek': 444,
+    'Uogonek': 722,
+    'Aacute': 722,
+    'Adieresis': 722,
+    'egrave': 444,
+    'zacute': 444,
+    'iogonek': 278,
+    'Oacute': 722,
+    'oacute': 500,
+    'amacron': 444,
+    'sacute': 389,
+    'idieresis': 278,
+    'Ocircumflex': 722,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 500,
+    'twosuperior': 300,
+    'Odieresis': 722,
+    'mu': 500,
+    'igrave': 278,
+    'ohungarumlaut': 500,
+    'Eogonek': 611,
+    'dcroat': 500,
+    'threequarters': 750,
+    'Scedilla': 556,
+    'lcaron': 344,
+    'Kcommaaccent': 722,
+    'Lacute': 611,
+    'trademark': 980,
+    'edotaccent': 444,
+    'Igrave': 333,
+    'Imacron': 333,
+    'Lcaron': 611,
+    'onehalf': 750,
+    'lessequal': 549,
+    'ocircumflex': 500,
+    'ntilde': 500,
+    'Uhungarumlaut': 722,
+    'Eacute': 611,
+    'emacron': 444,
+    'gbreve': 500,
+    'onequarter': 750,
+    'Scaron': 556,
+    'Scommaaccent': 556,
+    'Ohungarumlaut': 722,
+    'degree': 400,
+    'ograve': 500,
+    'Ccaron': 667,
+    'ugrave': 500,
+    'radical': 453,
+    'Dcaron': 722,
+    'rcommaaccent': 333,
+    'Ntilde': 722,
+    'otilde': 500,
+    'Rcommaaccent': 667,
+    'Lcommaaccent': 611,
+    'Atilde': 722,
+    'Aogonek': 722,
+    'Aring': 722,
+    'Otilde': 722,
+    'zdotaccent': 444,
+    'Ecaron': 611,
+    'Iogonek': 333,
+    'kcommaaccent': 500,
+    'minus': 564,
+    'Icircumflex': 333,
+    'ncaron': 500,
+    'tcommaaccent': 278,
+    'logicalnot': 564,
+    'odieresis': 500,
+    'udieresis': 500,
+    'notequal': 549,
+    'gcommaaccent': 500,
+    'eth': 500,
+    'zcaron': 444,
+    'ncommaaccent': 500,
+    'onesuperior': 300,
+    'imacron': 278,
+    'Euro': 500
+  },
+  'Times-Bold': {
+    'space': 250,
+    'exclam': 333,
+    'quotedbl': 555,
+    'numbersign': 500,
+    'dollar': 500,
+    'percent': 1000,
+    'ampersand': 833,
+    'quoteright': 333,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 500,
+    'plus': 570,
+    'comma': 250,
+    'hyphen': 333,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 570,
+    'equal': 570,
+    'greater': 570,
+    'question': 500,
+    'at': 930,
+    'A': 722,
+    'B': 667,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 778,
+    'I': 389,
+    'J': 500,
+    'K': 778,
+    'L': 667,
+    'M': 944,
+    'N': 722,
+    'O': 778,
+    'P': 611,
+    'Q': 778,
+    'R': 722,
+    'S': 556,
+    'T': 667,
+    'U': 722,
+    'V': 722,
+    'W': 1000,
+    'X': 722,
+    'Y': 722,
+    'Z': 667,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 581,
+    'underscore': 500,
+    'quoteleft': 333,
+    'a': 500,
+    'b': 556,
+    'c': 444,
+    'd': 556,
+    'e': 444,
+    'f': 333,
+    'g': 500,
+    'h': 556,
+    'i': 278,
+    'j': 333,
+    'k': 556,
+    'l': 278,
+    'm': 833,
+    'n': 556,
+    'o': 500,
+    'p': 556,
+    'q': 556,
+    'r': 444,
+    's': 389,
+    't': 333,
+    'u': 556,
+    'v': 500,
+    'w': 722,
+    'x': 500,
+    'y': 500,
+    'z': 444,
+    'braceleft': 394,
+    'bar': 220,
+    'braceright': 394,
+    'asciitilde': 520,
+    'exclamdown': 333,
+    'cent': 500,
+    'sterling': 500,
+    'fraction': 167,
+    'yen': 500,
+    'florin': 500,
+    'section': 500,
+    'currency': 500,
+    'quotesingle': 278,
+    'quotedblleft': 500,
+    'guillemotleft': 500,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 556,
+    'fl': 556,
+    'endash': 500,
+    'dagger': 500,
+    'daggerdbl': 500,
+    'periodcentered': 250,
+    'paragraph': 540,
+    'bullet': 350,
+    'quotesinglbase': 333,
+    'quotedblbase': 500,
+    'quotedblright': 500,
+    'guillemotright': 500,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 500,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 300,
+    'Lslash': 667,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 330,
+    'ae': 722,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 500,
+    'oe': 722,
+    'germandbls': 556,
+    'Idieresis': 389,
+    'eacute': 444,
+    'abreve': 500,
+    'uhungarumlaut': 556,
+    'ecaron': 444,
+    'Ydieresis': 722,
+    'divide': 570,
+    'Yacute': 722,
+    'Acircumflex': 722,
+    'aacute': 500,
+    'Ucircumflex': 722,
+    'yacute': 500,
+    'scommaaccent': 389,
+    'ecircumflex': 444,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 500,
+    'Uacute': 722,
+    'uogonek': 556,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 747,
+    'Emacron': 667,
+    'ccaron': 444,
+    'aring': 500,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 500,
+    'Tcommaaccent': 667,
+    'Cacute': 722,
+    'atilde': 500,
+    'Edotaccent': 667,
+    'scaron': 389,
+    'scedilla': 389,
+    'iacute': 278,
+    'lozenge': 494,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 556,
+    'acircumflex': 500,
+    'Amacron': 722,
+    'rcaron': 444,
+    'ccedilla': 444,
+    'Zdotaccent': 667,
+    'Thorn': 611,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 556,
+    'dcaron': 672,
+    'Umacron': 722,
+    'uring': 556,
+    'threesuperior': 300,
+    'Ograve': 778,
+    'Agrave': 722,
+    'Abreve': 722,
+    'multiply': 570,
+    'uacute': 556,
+    'Tcaron': 667,
+    'partialdiff': 494,
+    'ydieresis': 500,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 500,
+    'edieresis': 444,
+    'cacute': 444,
+    'nacute': 556,
+    'umacron': 556,
+    'Ncaron': 722,
+    'Iacute': 389,
+    'plusminus': 570,
+    'brokenbar': 220,
+    'registered': 747,
+    'Gbreve': 778,
+    'Idotaccent': 389,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 444,
+    'omacron': 500,
+    'Zacute': 667,
+    'Zcaron': 667,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 278,
+    'tcaron': 416,
+    'eogonek': 444,
+    'Uogonek': 722,
+    'Aacute': 722,
+    'Adieresis': 722,
+    'egrave': 444,
+    'zacute': 444,
+    'iogonek': 278,
+    'Oacute': 778,
+    'oacute': 500,
+    'amacron': 500,
+    'sacute': 389,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 556,
+    'twosuperior': 300,
+    'Odieresis': 778,
+    'mu': 556,
+    'igrave': 278,
+    'ohungarumlaut': 500,
+    'Eogonek': 667,
+    'dcroat': 556,
+    'threequarters': 750,
+    'Scedilla': 556,
+    'lcaron': 394,
+    'Kcommaaccent': 778,
+    'Lacute': 667,
+    'trademark': 1000,
+    'edotaccent': 444,
+    'Igrave': 389,
+    'Imacron': 389,
+    'Lcaron': 667,
+    'onehalf': 750,
+    'lessequal': 549,
+    'ocircumflex': 500,
+    'ntilde': 556,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 444,
+    'gbreve': 500,
+    'onequarter': 750,
+    'Scaron': 556,
+    'Scommaaccent': 556,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 500,
+    'Ccaron': 722,
+    'ugrave': 556,
+    'radical': 549,
+    'Dcaron': 722,
+    'rcommaaccent': 444,
+    'Ntilde': 722,
+    'otilde': 500,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 667,
+    'Atilde': 722,
+    'Aogonek': 722,
+    'Aring': 722,
+    'Otilde': 778,
+    'zdotaccent': 444,
+    'Ecaron': 667,
+    'Iogonek': 389,
+    'kcommaaccent': 556,
+    'minus': 570,
+    'Icircumflex': 389,
+    'ncaron': 556,
+    'tcommaaccent': 333,
+    'logicalnot': 570,
+    'odieresis': 500,
+    'udieresis': 556,
+    'notequal': 549,
+    'gcommaaccent': 500,
+    'eth': 500,
+    'zcaron': 444,
+    'ncommaaccent': 556,
+    'onesuperior': 300,
+    'imacron': 278,
+    'Euro': 500
+  },
+  'Times-BoldItalic': {
+    'space': 250,
+    'exclam': 389,
+    'quotedbl': 555,
+    'numbersign': 500,
+    'dollar': 500,
+    'percent': 833,
+    'ampersand': 778,
+    'quoteright': 333,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 500,
+    'plus': 570,
+    'comma': 250,
+    'hyphen': 333,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 570,
+    'equal': 570,
+    'greater': 570,
+    'question': 500,
+    'at': 832,
+    'A': 667,
+    'B': 667,
+    'C': 667,
+    'D': 722,
+    'E': 667,
+    'F': 667,
+    'G': 722,
+    'H': 778,
+    'I': 389,
+    'J': 500,
+    'K': 667,
+    'L': 611,
+    'M': 889,
+    'N': 722,
+    'O': 722,
+    'P': 611,
+    'Q': 722,
+    'R': 667,
+    'S': 556,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 889,
+    'X': 667,
+    'Y': 611,
+    'Z': 611,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 570,
+    'underscore': 500,
+    'quoteleft': 333,
+    'a': 500,
+    'b': 500,
+    'c': 444,
+    'd': 500,
+    'e': 444,
+    'f': 333,
+    'g': 500,
+    'h': 556,
+    'i': 278,
+    'j': 278,
+    'k': 500,
+    'l': 278,
+    'm': 778,
+    'n': 556,
+    'o': 500,
+    'p': 500,
+    'q': 500,
+    'r': 389,
+    's': 389,
+    't': 278,
+    'u': 556,
+    'v': 444,
+    'w': 667,
+    'x': 500,
+    'y': 444,
+    'z': 389,
+    'braceleft': 348,
+    'bar': 220,
+    'braceright': 348,
+    'asciitilde': 570,
+    'exclamdown': 389,
+    'cent': 500,
+    'sterling': 500,
+    'fraction': 167,
+    'yen': 500,
+    'florin': 500,
+    'section': 500,
+    'currency': 500,
+    'quotesingle': 278,
+    'quotedblleft': 500,
+    'guillemotleft': 500,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 556,
+    'fl': 556,
+    'endash': 500,
+    'dagger': 500,
+    'daggerdbl': 500,
+    'periodcentered': 250,
+    'paragraph': 500,
+    'bullet': 350,
+    'quotesinglbase': 333,
+    'quotedblbase': 500,
+    'quotedblright': 500,
+    'guillemotright': 500,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 500,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 944,
+    'ordfeminine': 266,
+    'Lslash': 611,
+    'Oslash': 722,
+    'OE': 944,
+    'ordmasculine': 300,
+    'ae': 722,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 500,
+    'oe': 722,
+    'germandbls': 500,
+    'Idieresis': 389,
+    'eacute': 444,
+    'abreve': 500,
+    'uhungarumlaut': 556,
+    'ecaron': 444,
+    'Ydieresis': 611,
+    'divide': 570,
+    'Yacute': 611,
+    'Acircumflex': 667,
+    'aacute': 500,
+    'Ucircumflex': 722,
+    'yacute': 444,
+    'scommaaccent': 389,
+    'ecircumflex': 444,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 500,
+    'Uacute': 722,
+    'uogonek': 556,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 747,
+    'Emacron': 667,
+    'ccaron': 444,
+    'aring': 500,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 500,
+    'Tcommaaccent': 611,
+    'Cacute': 667,
+    'atilde': 500,
+    'Edotaccent': 667,
+    'scaron': 389,
+    'scedilla': 389,
+    'iacute': 278,
+    'lozenge': 494,
+    'Rcaron': 667,
+    'Gcommaaccent': 722,
+    'ucircumflex': 556,
+    'acircumflex': 500,
+    'Amacron': 667,
+    'rcaron': 389,
+    'ccedilla': 444,
+    'Zdotaccent': 611,
+    'Thorn': 611,
+    'Omacron': 722,
+    'Racute': 667,
+    'Sacute': 556,
+    'dcaron': 608,
+    'Umacron': 722,
+    'uring': 556,
+    'threesuperior': 300,
+    'Ograve': 722,
+    'Agrave': 667,
+    'Abreve': 667,
+    'multiply': 570,
+    'uacute': 556,
+    'Tcaron': 611,
+    'partialdiff': 494,
+    'ydieresis': 444,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 500,
+    'edieresis': 444,
+    'cacute': 444,
+    'nacute': 556,
+    'umacron': 556,
+    'Ncaron': 722,
+    'Iacute': 389,
+    'plusminus': 570,
+    'brokenbar': 220,
+    'registered': 747,
+    'Gbreve': 722,
+    'Idotaccent': 389,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 389,
+    'omacron': 500,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 667,
+    'lcommaaccent': 278,
+    'tcaron': 366,
+    'eogonek': 444,
+    'Uogonek': 722,
+    'Aacute': 667,
+    'Adieresis': 667,
+    'egrave': 444,
+    'zacute': 389,
+    'iogonek': 278,
+    'Oacute': 722,
+    'oacute': 500,
+    'amacron': 500,
+    'sacute': 389,
+    'idieresis': 278,
+    'Ocircumflex': 722,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 500,
+    'twosuperior': 300,
+    'Odieresis': 722,
+    'mu': 576,
+    'igrave': 278,
+    'ohungarumlaut': 500,
+    'Eogonek': 667,
+    'dcroat': 500,
+    'threequarters': 750,
+    'Scedilla': 556,
+    'lcaron': 382,
+    'Kcommaaccent': 667,
+    'Lacute': 611,
+    'trademark': 1000,
+    'edotaccent': 444,
+    'Igrave': 389,
+    'Imacron': 389,
+    'Lcaron': 611,
+    'onehalf': 750,
+    'lessequal': 549,
+    'ocircumflex': 500,
+    'ntilde': 556,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 444,
+    'gbreve': 500,
+    'onequarter': 750,
+    'Scaron': 556,
+    'Scommaaccent': 556,
+    'Ohungarumlaut': 722,
+    'degree': 400,
+    'ograve': 500,
+    'Ccaron': 667,
+    'ugrave': 556,
+    'radical': 549,
+    'Dcaron': 722,
+    'rcommaaccent': 389,
+    'Ntilde': 722,
+    'otilde': 500,
+    'Rcommaaccent': 667,
+    'Lcommaaccent': 611,
+    'Atilde': 667,
+    'Aogonek': 667,
+    'Aring': 667,
+    'Otilde': 722,
+    'zdotaccent': 389,
+    'Ecaron': 667,
+    'Iogonek': 389,
+    'kcommaaccent': 500,
+    'minus': 606,
+    'Icircumflex': 389,
+    'ncaron': 556,
+    'tcommaaccent': 278,
+    'logicalnot': 606,
+    'odieresis': 500,
+    'udieresis': 556,
+    'notequal': 549,
+    'gcommaaccent': 500,
+    'eth': 500,
+    'zcaron': 389,
+    'ncommaaccent': 556,
+    'onesuperior': 300,
+    'imacron': 278,
+    'Euro': 500
+  },
+  'Times-Italic': {
+    'space': 250,
+    'exclam': 333,
+    'quotedbl': 420,
+    'numbersign': 500,
+    'dollar': 500,
+    'percent': 833,
+    'ampersand': 778,
+    'quoteright': 333,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 500,
+    'plus': 675,
+    'comma': 250,
+    'hyphen': 333,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 675,
+    'equal': 675,
+    'greater': 675,
+    'question': 500,
+    'at': 920,
+    'A': 611,
+    'B': 611,
+    'C': 667,
+    'D': 722,
+    'E': 611,
+    'F': 611,
+    'G': 722,
+    'H': 722,
+    'I': 333,
+    'J': 444,
+    'K': 667,
+    'L': 556,
+    'M': 833,
+    'N': 667,
+    'O': 722,
+    'P': 611,
+    'Q': 722,
+    'R': 611,
+    'S': 500,
+    'T': 556,
+    'U': 722,
+    'V': 611,
+    'W': 833,
+    'X': 611,
+    'Y': 556,
+    'Z': 556,
+    'bracketleft': 389,
+    'backslash': 278,
+    'bracketright': 389,
+    'asciicircum': 422,
+    'underscore': 500,
+    'quoteleft': 333,
+    'a': 500,
+    'b': 500,
+    'c': 444,
+    'd': 500,
+    'e': 444,
+    'f': 278,
+    'g': 500,
+    'h': 500,
+    'i': 278,
+    'j': 278,
+    'k': 444,
+    'l': 278,
+    'm': 722,
+    'n': 500,
+    'o': 500,
+    'p': 500,
+    'q': 500,
+    'r': 389,
+    's': 389,
+    't': 278,
+    'u': 500,
+    'v': 444,
+    'w': 667,
+    'x': 444,
+    'y': 444,
+    'z': 389,
+    'braceleft': 400,
+    'bar': 275,
+    'braceright': 400,
+    'asciitilde': 541,
+    'exclamdown': 389,
+    'cent': 500,
+    'sterling': 500,
+    'fraction': 167,
+    'yen': 500,
+    'florin': 500,
+    'section': 500,
+    'currency': 500,
+    'quotesingle': 214,
+    'quotedblleft': 556,
+    'guillemotleft': 500,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 500,
+    'fl': 500,
+    'endash': 500,
+    'dagger': 500,
+    'daggerdbl': 500,
+    'periodcentered': 250,
+    'paragraph': 523,
+    'bullet': 350,
+    'quotesinglbase': 333,
+    'quotedblbase': 556,
+    'quotedblright': 556,
+    'guillemotright': 500,
+    'ellipsis': 889,
+    'perthousand': 1000,
+    'questiondown': 500,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 889,
+    'AE': 889,
+    'ordfeminine': 276,
+    'Lslash': 556,
+    'Oslash': 722,
+    'OE': 944,
+    'ordmasculine': 310,
+    'ae': 667,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 500,
+    'oe': 667,
+    'germandbls': 500,
+    'Idieresis': 333,
+    'eacute': 444,
+    'abreve': 500,
+    'uhungarumlaut': 500,
+    'ecaron': 444,
+    'Ydieresis': 556,
+    'divide': 675,
+    'Yacute': 556,
+    'Acircumflex': 611,
+    'aacute': 500,
+    'Ucircumflex': 722,
+    'yacute': 444,
+    'scommaaccent': 389,
+    'ecircumflex': 444,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 500,
+    'Uacute': 722,
+    'uogonek': 500,
+    'Edieresis': 611,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 760,
+    'Emacron': 611,
+    'ccaron': 444,
+    'aring': 500,
+    'Ncommaaccent': 667,
+    'lacute': 278,
+    'agrave': 500,
+    'Tcommaaccent': 556,
+    'Cacute': 667,
+    'atilde': 500,
+    'Edotaccent': 611,
+    'scaron': 389,
+    'scedilla': 389,
+    'iacute': 278,
+    'lozenge': 471,
+    'Rcaron': 611,
+    'Gcommaaccent': 722,
+    'ucircumflex': 500,
+    'acircumflex': 500,
+    'Amacron': 611,
+    'rcaron': 389,
+    'ccedilla': 444,
+    'Zdotaccent': 556,
+    'Thorn': 611,
+    'Omacron': 722,
+    'Racute': 611,
+    'Sacute': 500,
+    'dcaron': 544,
+    'Umacron': 722,
+    'uring': 500,
+    'threesuperior': 300,
+    'Ograve': 722,
+    'Agrave': 611,
+    'Abreve': 611,
+    'multiply': 675,
+    'uacute': 500,
+    'Tcaron': 556,
+    'partialdiff': 476,
+    'ydieresis': 444,
+    'Nacute': 667,
+    'icircumflex': 278,
+    'Ecircumflex': 611,
+    'adieresis': 500,
+    'edieresis': 444,
+    'cacute': 444,
+    'nacute': 500,
+    'umacron': 500,
+    'Ncaron': 667,
+    'Iacute': 333,
+    'plusminus': 675,
+    'brokenbar': 275,
+    'registered': 760,
+    'Gbreve': 722,
+    'Idotaccent': 333,
+    'summation': 600,
+    'Egrave': 611,
+    'racute': 389,
+    'omacron': 500,
+    'Zacute': 556,
+    'Zcaron': 556,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 667,
+    'lcommaaccent': 278,
+    'tcaron': 300,
+    'eogonek': 444,
+    'Uogonek': 722,
+    'Aacute': 611,
+    'Adieresis': 611,
+    'egrave': 444,
+    'zacute': 389,
+    'iogonek': 278,
+    'Oacute': 722,
+    'oacute': 500,
+    'amacron': 500,
+    'sacute': 389,
+    'idieresis': 278,
+    'Ocircumflex': 722,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 500,
+    'twosuperior': 300,
+    'Odieresis': 722,
+    'mu': 500,
+    'igrave': 278,
+    'ohungarumlaut': 500,
+    'Eogonek': 611,
+    'dcroat': 500,
+    'threequarters': 750,
+    'Scedilla': 500,
+    'lcaron': 300,
+    'Kcommaaccent': 667,
+    'Lacute': 556,
+    'trademark': 980,
+    'edotaccent': 444,
+    'Igrave': 333,
+    'Imacron': 333,
+    'Lcaron': 611,
+    'onehalf': 750,
+    'lessequal': 549,
+    'ocircumflex': 500,
+    'ntilde': 500,
+    'Uhungarumlaut': 722,
+    'Eacute': 611,
+    'emacron': 444,
+    'gbreve': 500,
+    'onequarter': 750,
+    'Scaron': 500,
+    'Scommaaccent': 500,
+    'Ohungarumlaut': 722,
+    'degree': 400,
+    'ograve': 500,
+    'Ccaron': 667,
+    'ugrave': 500,
+    'radical': 453,
+    'Dcaron': 722,
+    'rcommaaccent': 389,
+    'Ntilde': 667,
+    'otilde': 500,
+    'Rcommaaccent': 611,
+    'Lcommaaccent': 556,
+    'Atilde': 611,
+    'Aogonek': 611,
+    'Aring': 611,
+    'Otilde': 722,
+    'zdotaccent': 389,
+    'Ecaron': 611,
+    'Iogonek': 333,
+    'kcommaaccent': 444,
+    'minus': 675,
+    'Icircumflex': 333,
+    'ncaron': 500,
+    'tcommaaccent': 278,
+    'logicalnot': 675,
+    'odieresis': 500,
+    'udieresis': 500,
+    'notequal': 549,
+    'gcommaaccent': 500,
+    'eth': 500,
+    'zcaron': 389,
+    'ncommaaccent': 500,
+    'onesuperior': 300,
+    'imacron': 278,
+    'Euro': 500
+  },
+  'ZapfDingbats': {
+    'space': 278,
+    'a1': 974,
+    'a2': 961,
+    'a202': 974,
+    'a3': 980,
+    'a4': 719,
+    'a5': 789,
+    'a119': 790,
+    'a118': 791,
+    'a117': 690,
+    'a11': 960,
+    'a12': 939,
+    'a13': 549,
+    'a14': 855,
+    'a15': 911,
+    'a16': 933,
+    'a105': 911,
+    'a17': 945,
+    'a18': 974,
+    'a19': 755,
+    'a20': 846,
+    'a21': 762,
+    'a22': 761,
+    'a23': 571,
+    'a24': 677,
+    'a25': 763,
+    'a26': 760,
+    'a27': 759,
+    'a28': 754,
+    'a6': 494,
+    'a7': 552,
+    'a8': 537,
+    'a9': 577,
+    'a10': 692,
+    'a29': 786,
+    'a30': 788,
+    'a31': 788,
+    'a32': 790,
+    'a33': 793,
+    'a34': 794,
+    'a35': 816,
+    'a36': 823,
+    'a37': 789,
+    'a38': 841,
+    'a39': 823,
+    'a40': 833,
+    'a41': 816,
+    'a42': 831,
+    'a43': 923,
+    'a44': 744,
+    'a45': 723,
+    'a46': 749,
+    'a47': 790,
+    'a48': 792,
+    'a49': 695,
+    'a50': 776,
+    'a51': 768,
+    'a52': 792,
+    'a53': 759,
+    'a54': 707,
+    'a55': 708,
+    'a56': 682,
+    'a57': 701,
+    'a58': 826,
+    'a59': 815,
+    'a60': 789,
+    'a61': 789,
+    'a62': 707,
+    'a63': 687,
+    'a64': 696,
+    'a65': 689,
+    'a66': 786,
+    'a67': 787,
+    'a68': 713,
+    'a69': 791,
+    'a70': 785,
+    'a71': 791,
+    'a72': 873,
+    'a73': 761,
+    'a74': 762,
+    'a203': 762,
+    'a75': 759,
+    'a204': 759,
+    'a76': 892,
+    'a77': 892,
+    'a78': 788,
+    'a79': 784,
+    'a81': 438,
+    'a82': 138,
+    'a83': 277,
+    'a84': 415,
+    'a97': 392,
+    'a98': 392,
+    'a99': 668,
+    'a100': 668,
+    'a89': 390,
+    'a90': 390,
+    'a93': 317,
+    'a94': 317,
+    'a91': 276,
+    'a92': 276,
+    'a205': 509,
+    'a85': 509,
+    'a206': 410,
+    'a86': 410,
+    'a87': 234,
+    'a88': 234,
+    'a95': 334,
+    'a96': 334,
+    'a101': 732,
+    'a102': 544,
+    'a103': 544,
+    'a104': 910,
+    'a106': 667,
+    'a107': 760,
+    'a108': 760,
+    'a112': 776,
+    'a111': 595,
+    'a110': 694,
+    'a109': 626,
+    'a120': 788,
+    'a121': 788,
+    'a122': 788,
+    'a123': 788,
+    'a124': 788,
+    'a125': 788,
+    'a126': 788,
+    'a127': 788,
+    'a128': 788,
+    'a129': 788,
+    'a130': 788,
+    'a131': 788,
+    'a132': 788,
+    'a133': 788,
+    'a134': 788,
+    'a135': 788,
+    'a136': 788,
+    'a137': 788,
+    'a138': 788,
+    'a139': 788,
+    'a140': 788,
+    'a141': 788,
+    'a142': 788,
+    'a143': 788,
+    'a144': 788,
+    'a145': 788,
+    'a146': 788,
+    'a147': 788,
+    'a148': 788,
+    'a149': 788,
+    'a150': 788,
+    'a151': 788,
+    'a152': 788,
+    'a153': 788,
+    'a154': 788,
+    'a155': 788,
+    'a156': 788,
+    'a157': 788,
+    'a158': 788,
+    'a159': 788,
+    'a160': 894,
+    'a161': 838,
+    'a163': 1016,
+    'a164': 458,
+    'a196': 748,
+    'a165': 924,
+    'a192': 748,
+    'a166': 918,
+    'a167': 927,
+    'a168': 928,
+    'a169': 928,
+    'a170': 834,
+    'a171': 873,
+    'a172': 828,
+    'a173': 924,
+    'a162': 924,
+    'a174': 917,
+    'a175': 930,
+    'a176': 931,
+    'a177': 463,
+    'a178': 883,
+    'a179': 836,
+    'a193': 836,
+    'a180': 867,
+    'a199': 867,
+    'a181': 696,
+    'a200': 696,
+    'a182': 874,
+    'a201': 874,
+    'a183': 760,
+    'a184': 946,
+    'a197': 771,
+    'a185': 865,
+    'a194': 771,
+    'a198': 888,
+    'a186': 967,
+    'a195': 888,
+    'a187': 831,
+    'a188': 873,
+    'a189': 927,
+    'a190': 970,
+    'a191': 918
+  }
+};
+
+
+var EOF = {};
+
+function isEOF(v) {
+  return (v === EOF);
+}
+
+var MAX_LENGTH_TO_CACHE = 1000;
+
+var Parser = (function ParserClosure() {
+  function Parser(lexer, allowStreams, xref) {
+    this.lexer = lexer;
+    this.allowStreams = allowStreams;
+    this.xref = xref;
+    this.imageCache = {};
+    this.refill();
+  }
+
+  Parser.prototype = {
+    refill: function Parser_refill() {
+      this.buf1 = this.lexer.getObj();
+      this.buf2 = this.lexer.getObj();
+    },
+    shift: function Parser_shift() {
+      if (isCmd(this.buf2, 'ID')) {
+        this.buf1 = this.buf2;
+        this.buf2 = null;
+      } else {
+        this.buf1 = this.buf2;
+        this.buf2 = this.lexer.getObj();
+      }
+    },
+    getObj: function Parser_getObj(cipherTransform) {
+      var buf1 = this.buf1;
+      this.shift();
+
+      if (buf1 instanceof Cmd) {
+        switch (buf1.cmd) {
+          case 'BI': // inline image
+            return this.makeInlineImage(cipherTransform);
+          case '[': // array
+            var array = [];
+            while (!isCmd(this.buf1, ']') && !isEOF(this.buf1)) {
+              array.push(this.getObj(cipherTransform));
+            }
+            if (isEOF(this.buf1)) {
+              error('End of file inside array');
+            }
+            this.shift();
+            return array;
+          case '<<': // dictionary or stream
+            var dict = new Dict(this.xref);
+            while (!isCmd(this.buf1, '>>') && !isEOF(this.buf1)) {
+              if (!isName(this.buf1)) {
+                info('Malformed dictionary: key must be a name object');
+                this.shift();
+                continue;
+              }
+
+              var key = this.buf1.name;
+              this.shift();
+              if (isEOF(this.buf1)) {
+                break;
+              }
+              dict.set(key, this.getObj(cipherTransform));
+            }
+            if (isEOF(this.buf1)) {
+              error('End of file inside dictionary');
+            }
+
+            // Stream objects are not allowed inside content streams or
+            // object streams.
+            if (isCmd(this.buf2, 'stream')) {
+              return (this.allowStreams ?
+                      this.makeStream(dict, cipherTransform) : dict);
+            }
+            this.shift();
+            return dict;
+          default: // simple object
+            return buf1;
+        }
+      }
+
+      if (isInt(buf1)) { // indirect reference or integer
+        var num = buf1;
+        if (isInt(this.buf1) && isCmd(this.buf2, 'R')) {
+          var ref = new Ref(num, this.buf1);
+          this.shift();
+          this.shift();
+          return ref;
+        }
+        return num;
+      }
+
+      if (isString(buf1)) { // string
+        var str = buf1;
+        if (cipherTransform) {
+          str = cipherTransform.decryptString(str);
+        }
+        return str;
+      }
+
+      // simple object
+      return buf1;
+    },
+    /**
+     * Find the end of the stream by searching for the /EI\s/.
+     * @returns {number} The inline stream length.
+     */
+    findDefaultInlineStreamEnd:
+        function Parser_findDefaultInlineStreamEnd(stream) {
+      var E = 0x45, I = 0x49, SPACE = 0x20, LF = 0xA, CR = 0xD;
+      var startPos = stream.pos, state = 0, ch, i, n, followingBytes;
+      while ((ch = stream.getByte()) !== -1) {
+        if (state === 0) {
+          state = (ch === E) ? 1 : 0;
+        } else if (state === 1) {
+          state = (ch === I) ? 2 : 0;
+        } else {
+          assert(state === 2);
+          if (ch === SPACE || ch === LF || ch === CR) {
+            // Let's check the next five bytes are ASCII... just be sure.
+            n = 5;
+            followingBytes = stream.peekBytes(n);
+            for (i = 0; i < n; i++) {
+              ch = followingBytes[i];
+              if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) {
+                // Not a LF, CR, SPACE or any visible ASCII character, i.e.
+                // it's binary stuff. Resetting the state.
+                state = 0;
+                break;
+              }
+            }
+            if (state === 2) {
+              break;  // Finished!
+            }
+          } else {
+            state = 0;
+          }
+        }
+      }
+      return ((stream.pos - 4) - startPos);
+    },
+    /**
+     * Find the EOI (end-of-image) marker 0xFFD9 of the stream.
+     * @returns {number} The inline stream length.
+     */
+    findDCTDecodeInlineStreamEnd:
+        function Parser_findDCTDecodeInlineStreamEnd(stream) {
+      var startPos = stream.pos, foundEOI = false, b, markerLength, length;
+      while ((b = stream.getByte()) !== -1) {
+        if (b !== 0xFF) { // Not a valid marker.
+          continue;
+        }
+        switch (stream.getByte()) {
+          case 0x00: // Byte stuffing.
+            // 0xFF00 appears to be a very common byte sequence in JPEG images.
+            break;
+
+          case 0xFF: // Fill byte.
+            // Avoid skipping a valid marker, resetting the stream position.
+            stream.skip(-1);
+            break;
+
+          case 0xD9: // EOI
+            foundEOI = true;
+            break;
+
+          case 0xC0: // SOF0
+          case 0xC1: // SOF1
+          case 0xC2: // SOF2
+          case 0xC3: // SOF3
+
+          case 0xC5: // SOF5
+          case 0xC6: // SOF6
+          case 0xC7: // SOF7
+
+          case 0xC9: // SOF9
+          case 0xCA: // SOF10
+          case 0xCB: // SOF11
+
+          case 0xCD: // SOF13
+          case 0xCE: // SOF14
+          case 0xCF: // SOF15
+
+          case 0xC4: // DHT
+          case 0xCC: // DAC
+
+          case 0xDA: // SOS
+          case 0xDB: // DQT
+          case 0xDC: // DNL
+          case 0xDD: // DRI
+          case 0xDE: // DHP
+          case 0xDF: // EXP
+
+          case 0xE0: // APP0
+          case 0xE1: // APP1
+          case 0xE2: // APP2
+          case 0xE3: // APP3
+          case 0xE4: // APP4
+          case 0xE5: // APP5
+          case 0xE6: // APP6
+          case 0xE7: // APP7
+          case 0xE8: // APP8
+          case 0xE9: // APP9
+          case 0xEA: // APP10
+          case 0xEB: // APP11
+          case 0xEC: // APP12
+          case 0xED: // APP13
+          case 0xEE: // APP14
+          case 0xEF: // APP15
+
+          case 0xFE: // COM
+            // The marker should be followed by the length of the segment.
+            markerLength = stream.getUint16();
+            if (markerLength > 2) {
+              // |markerLength| contains the byte length of the marker segment,
+              // including its own length (2 bytes) and excluding the marker.
+              stream.skip(markerLength - 2); // Jump to the next marker.
+            } else {
+              // The marker length is invalid, resetting the stream position.
+              stream.skip(-2);
+            }
+            break;
+        }
+        if (foundEOI) {
+          break;
+        }
+      }
+      length = stream.pos - startPos;
+      if (b === -1) {
+        warn('Inline DCTDecode image stream: ' +
+             'EOI marker not found, searching for /EI/ instead.');
+        stream.skip(-length); // Reset the stream position.
+        return this.findDefaultInlineStreamEnd(stream);
+      }
+      this.inlineStreamSkipEI(stream);
+      return length;
+    },
+    /**
+     * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.
+     * @returns {number} The inline stream length.
+     */
+    findASCII85DecodeInlineStreamEnd:
+        function Parser_findASCII85DecodeInlineStreamEnd(stream) {
+      var TILDE = 0x7E, GT = 0x3E;
+      var startPos = stream.pos, ch, length;
+      while ((ch = stream.getByte()) !== -1) {
+        if (ch === TILDE && stream.peekByte() === GT) {
+          stream.skip();
+          break;
+        }
+      }
+      length = stream.pos - startPos;
+      if (ch === -1) {
+        warn('Inline ASCII85Decode image stream: ' +
+             'EOD marker not found, searching for /EI/ instead.');
+        stream.skip(-length); // Reset the stream position.
+        return this.findDefaultInlineStreamEnd(stream);
+      }
+      this.inlineStreamSkipEI(stream);
+      return length;
+    },
+    /**
+     * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.
+     * @returns {number} The inline stream length.
+     */
+    findASCIIHexDecodeInlineStreamEnd:
+        function Parser_findASCIIHexDecodeInlineStreamEnd(stream) {
+      var GT = 0x3E;
+      var startPos = stream.pos, ch, length;
+      while ((ch = stream.getByte()) !== -1) {
+        if (ch === GT) {
+          break;
+        }
+      }
+      length = stream.pos - startPos;
+      if (ch === -1) {
+        warn('Inline ASCIIHexDecode image stream: ' +
+             'EOD marker not found, searching for /EI/ instead.');
+        stream.skip(-length); // Reset the stream position.
+        return this.findDefaultInlineStreamEnd(stream);
+      }
+      this.inlineStreamSkipEI(stream);
+      return length;
+    },
+    /**
+     * Skip over the /EI/ for streams where we search for an EOD marker.
+     */
+    inlineStreamSkipEI: function Parser_inlineStreamSkipEI(stream) {
+      var E = 0x45, I = 0x49;
+      var state = 0, ch;
+      while ((ch = stream.getByte()) !== -1) {
+        if (state === 0) {
+          state = (ch === E) ? 1 : 0;
+        } else if (state === 1) {
+          state = (ch === I) ? 2 : 0;
+        } else if (state === 2) {
+          break;
+        }
+      }
+    },
+    makeInlineImage: function Parser_makeInlineImage(cipherTransform) {
+      var lexer = this.lexer;
+      var stream = lexer.stream;
+
+      // Parse dictionary.
+      var dict = new Dict(null);
+      while (!isCmd(this.buf1, 'ID') && !isEOF(this.buf1)) {
+        if (!isName(this.buf1)) {
+          error('Dictionary key must be a name object');
+        }
+        var key = this.buf1.name;
+        this.shift();
+        if (isEOF(this.buf1)) {
+          break;
+        }
+        dict.set(key, this.getObj(cipherTransform));
+      }
+
+      // Extract the name of the first (i.e. the current) image filter.
+      var filter = this.fetchIfRef(dict.get('Filter', 'F')), filterName;
+      if (isName(filter)) {
+        filterName = filter.name;
+      } else if (isArray(filter) && isName(filter[0])) {
+        filterName = filter[0].name;
+      }
+
+      // Parse image stream.
+      var startPos = stream.pos, length, i, ii;
+      if (filterName === 'DCTDecode' || filterName === 'DCT') {
+        length = this.findDCTDecodeInlineStreamEnd(stream);
+      } else if (filterName === 'ASCII85Decide' || filterName === 'A85') {
+        length = this.findASCII85DecodeInlineStreamEnd(stream);
+      } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') {
+        length = this.findASCIIHexDecodeInlineStreamEnd(stream);
+      } else {
+        length = this.findDefaultInlineStreamEnd(stream);
+      }
+      var imageStream = stream.makeSubStream(startPos, length, dict);
+
+      // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their
+      // adler32 checksum.
+      var adler32;
+      if (length < MAX_LENGTH_TO_CACHE) {
+        var imageBytes = imageStream.getBytes();
+        imageStream.reset();
+
+        var a = 1;
+        var b = 0;
+        for (i = 0, ii = imageBytes.length; i < ii; ++i) {
+          // No modulo required in the loop if imageBytes.length < 5552.
+          a += imageBytes[i] & 0xff;
+          b += a;
+        }
+        adler32 = ((b % 65521) << 16) | (a % 65521);
+
+        if (this.imageCache.adler32 === adler32) {
+          this.buf2 = Cmd.get('EI');
+          this.shift();
+
+          this.imageCache[adler32].reset();
+          return this.imageCache[adler32];
+        }
+      }
+
+      if (cipherTransform) {
+        imageStream = cipherTransform.createStream(imageStream, length);
+      }
+
+      imageStream = this.filter(imageStream, dict, length);
+      imageStream.dict = dict;
+      if (adler32 !== undefined) {
+        imageStream.cacheKey = 'inline_' + length + '_' + adler32;
+        this.imageCache[adler32] = imageStream;
+      }
+
+      this.buf2 = Cmd.get('EI');
+      this.shift();
+
+      return imageStream;
+    },
+    fetchIfRef: function Parser_fetchIfRef(obj) {
+      // not relying on the xref.fetchIfRef -- xref might not be set
+      return (isRef(obj) ? this.xref.fetch(obj) : obj);
+    },
+    makeStream: function Parser_makeStream(dict, cipherTransform) {
+      var lexer = this.lexer;
+      var stream = lexer.stream;
+
+      // get stream start position
+      lexer.skipToNextLine();
+      var pos = stream.pos - 1;
+
+      // get length
+      var length = this.fetchIfRef(dict.get('Length'));
+      if (!isInt(length)) {
+        info('Bad ' + length + ' attribute in stream');
+        length = 0;
+      }
+
+      // skip over the stream data
+      stream.pos = pos + length;
+      lexer.nextChar();
+
+      this.shift(); // '>>'
+      this.shift(); // 'stream'
+      if (!isCmd(this.buf1, 'endstream')) {
+        // bad stream length, scanning for endstream
+        stream.pos = pos;
+        var SCAN_BLOCK_SIZE = 2048;
+        var ENDSTREAM_SIGNATURE_LENGTH = 9;
+        var ENDSTREAM_SIGNATURE = [0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65,
+                                   0x61, 0x6D];
+        var skipped = 0, found = false, i, j;
+        while (stream.pos < stream.end) {
+          var scanBytes = stream.peekBytes(SCAN_BLOCK_SIZE);
+          var scanLength = scanBytes.length - ENDSTREAM_SIGNATURE_LENGTH;
+          if (scanLength <= 0) {
+            break;
+          }
+          found = false;
+          for (i = 0, j = 0; i < scanLength; i++) {
+            var b = scanBytes[i];
+            if (b !== ENDSTREAM_SIGNATURE[j]) {
+              i -= j;
+              j = 0;
+            } else {
+              j++;
+              if (j >= ENDSTREAM_SIGNATURE_LENGTH) {
+                i++;
+                found = true;
+                break;
+              }
+            }
+          }
+          if (found) {
+            skipped += i - ENDSTREAM_SIGNATURE_LENGTH;
+            stream.pos += i - ENDSTREAM_SIGNATURE_LENGTH;
+            break;
+          }
+          skipped += scanLength;
+          stream.pos += scanLength;
+        }
+        if (!found) {
+          error('Missing endstream');
+        }
+        length = skipped;
+
+        lexer.nextChar();
+        this.shift();
+        this.shift();
+      }
+      this.shift(); // 'endstream'
+
+      stream = stream.makeSubStream(pos, length, dict);
+      if (cipherTransform) {
+        stream = cipherTransform.createStream(stream, length);
+      }
+      stream = this.filter(stream, dict, length);
+      stream.dict = dict;
+      return stream;
+    },
+    filter: function Parser_filter(stream, dict, length) {
+      var filter = this.fetchIfRef(dict.get('Filter', 'F'));
+      var params = this.fetchIfRef(dict.get('DecodeParms', 'DP'));
+      if (isName(filter)) {
+        return this.makeFilter(stream, filter.name, length, params);
+      }
+
+      var maybeLength = length;
+      if (isArray(filter)) {
+        var filterArray = filter;
+        var paramsArray = params;
+        for (var i = 0, ii = filterArray.length; i < ii; ++i) {
+          filter = filterArray[i];
+          if (!isName(filter)) {
+            error('Bad filter name: ' + filter);
+          }
+
+          params = null;
+          if (isArray(paramsArray) && (i in paramsArray)) {
+            params = paramsArray[i];
+          }
+          stream = this.makeFilter(stream, filter.name, maybeLength, params);
+          // after the first stream the length variable is invalid
+          maybeLength = null;
+        }
+      }
+      return stream;
+    },
+    makeFilter: function Parser_makeFilter(stream, name, maybeLength, params) {
+      if (stream.dict.get('Length') === 0) {
+        return new NullStream(stream);
+      }
+      try {
+        if (params) {
+          params = this.fetchIfRef(params);
+        }
+        var xrefStreamStats = this.xref.stats.streamTypes;
+        if (name === 'FlateDecode' || name === 'Fl') {
+          xrefStreamStats[StreamType.FLATE] = true;
+          if (params) {
+            return new PredictorStream(new FlateStream(stream, maybeLength),
+                                       maybeLength, params);
+          }
+          return new FlateStream(stream, maybeLength);
+        }
+        if (name === 'LZWDecode' || name === 'LZW') {
+          xrefStreamStats[StreamType.LZW] = true;
+          var earlyChange = 1;
+          if (params) {
+            if (params.has('EarlyChange')) {
+              earlyChange = params.get('EarlyChange');
+            }
+            return new PredictorStream(
+              new LZWStream(stream, maybeLength, earlyChange),
+              maybeLength, params);
+          }
+          return new LZWStream(stream, maybeLength, earlyChange);
+        }
+        if (name === 'DCTDecode' || name === 'DCT') {
+          xrefStreamStats[StreamType.DCT] = true;
+          return new JpegStream(stream, maybeLength, stream.dict, this.xref);
+        }
+        if (name === 'JPXDecode' || name === 'JPX') {
+          xrefStreamStats[StreamType.JPX] = true;
+          return new JpxStream(stream, maybeLength, stream.dict);
+        }
+        if (name === 'ASCII85Decode' || name === 'A85') {
+          xrefStreamStats[StreamType.A85] = true;
+          return new Ascii85Stream(stream, maybeLength);
+        }
+        if (name === 'ASCIIHexDecode' || name === 'AHx') {
+          xrefStreamStats[StreamType.AHX] = true;
+          return new AsciiHexStream(stream, maybeLength);
+        }
+        if (name === 'CCITTFaxDecode' || name === 'CCF') {
+          xrefStreamStats[StreamType.CCF] = true;
+          return new CCITTFaxStream(stream, maybeLength, params);
+        }
+        if (name === 'RunLengthDecode' || name === 'RL') {
+          xrefStreamStats[StreamType.RL] = true;
+          return new RunLengthStream(stream, maybeLength);
+        }
+        if (name === 'JBIG2Decode') {
+          xrefStreamStats[StreamType.JBIG] = true;
+          return new Jbig2Stream(stream, maybeLength, stream.dict);
+        }
+        warn('filter "' + name + '" not supported yet');
+        return stream;
+      } catch (ex) {
+        if (ex instanceof MissingDataException) {
+          throw ex;
+        }
+        warn('Invalid stream: \"' + ex + '\"');
+        return new NullStream(stream);
+      }
+    }
+  };
+
+  return Parser;
+})();
+
+var Lexer = (function LexerClosure() {
+  function Lexer(stream, knownCommands) {
+    this.stream = stream;
+    this.nextChar();
+
+    // While lexing, we build up many strings one char at a time. Using += for
+    // this can result in lots of garbage strings. It's better to build an
+    // array of single-char strings and then join() them together at the end.
+    // And reusing a single array (i.e. |this.strBuf|) over and over for this
+    // purpose uses less memory than using a new array for each string.
+    this.strBuf = [];
+
+    // The PDFs might have "glued" commands with other commands, operands or
+    // literals, e.g. "q1". The knownCommands is a dictionary of the valid
+    // commands and their prefixes. The prefixes are built the following way:
+    // if there a command that is a prefix of the other valid command or
+    // literal (e.g. 'f' and 'false') the following prefixes must be included,
+    // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no
+    // other commands or literals as a prefix. The knowCommands is optional.
+    this.knownCommands = knownCommands;
+  }
+
+  Lexer.isSpace = function Lexer_isSpace(ch) {
+    // Space is one of the following characters: SPACE, TAB, CR or LF.
+    return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A);
+  };
+
+  // A '1' in this array means the character is white space. A '1' or
+  // '2' means the character ends a name or command.
+  var specialChars = [
+    1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x
+    1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // fx
+  ];
+
+  function toHexDigit(ch) {
+    if (ch >= 0x30 && ch <= 0x39) { // '0'-'9'
+      return ch & 0x0F;
+    }
+    if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {
+      // 'A'-'F', 'a'-'f'
+      return (ch & 0x0F) + 9;
+    }
+    return -1;
+  }
+
+  Lexer.prototype = {
+    nextChar: function Lexer_nextChar() {
+      return (this.currentChar = this.stream.getByte());
+    },
+    peekChar: function Lexer_peekChar() {
+      return this.stream.peekByte();
+    },
+    getNumber: function Lexer_getNumber() {
+      var ch = this.currentChar;
+      var eNotation = false;
+      var divideBy = 0; // different from 0 if it's a floating point value
+      var sign = 1;
+
+      if (ch === 0x2D) { // '-'
+        sign = -1;
+        ch = this.nextChar();
+      } else if (ch === 0x2B) { // '+'
+        ch = this.nextChar();
+      }
+      if (ch === 0x2E) { // '.'
+        divideBy = 10;
+        ch = this.nextChar();
+      }
+      if (ch < 0x30 || ch > 0x39) { // '0' - '9'
+        error('Invalid number: ' + String.fromCharCode(ch));
+        return 0;
+      }
+
+      var baseValue = ch - 0x30; // '0'
+      var powerValue = 0;
+      var powerValueSign = 1;
+
+      while ((ch = this.nextChar()) >= 0) {
+        if (0x30 <= ch && ch <= 0x39) { // '0' - '9'
+          var currentDigit = ch - 0x30; // '0'
+          if (eNotation) { // We are after an 'e' or 'E'
+            powerValue = powerValue * 10 + currentDigit;
+          } else {
+            if (divideBy !== 0) { // We are after a point
+              divideBy *= 10;
+            }
+            baseValue = baseValue * 10 + currentDigit;
+          }
+        } else if (ch === 0x2E) { // '.'
+          if (divideBy === 0) {
+            divideBy = 1;
+          } else {
+            // A number can have only one '.'
+            break;
+          }
+        } else if (ch === 0x2D) { // '-'
+          // ignore minus signs in the middle of numbers to match
+          // Adobe's behavior
+          warn('Badly formated number');
+        } else if (ch === 0x45 || ch === 0x65) { // 'E', 'e'
+          // 'E' can be either a scientific notation or the beginning of a new
+          // operator
+          ch = this.peekChar();
+          if (ch === 0x2B || ch === 0x2D) { // '+', '-'
+            powerValueSign = (ch === 0x2D) ? -1 : 1;
+            this.nextChar(); // Consume the sign character
+          } else if (ch < 0x30 || ch > 0x39) { // '0' - '9'
+            // The 'E' must be the beginning of a new operator
+            break;
+          }
+          eNotation = true;
+        } else {
+          // the last character doesn't belong to us
+          break;
+        }
+      }
+
+      if (divideBy !== 0) {
+        baseValue /= divideBy;
+      }
+      if (eNotation) {
+        baseValue *= Math.pow(10, powerValueSign * powerValue);
+      }
+      return sign * baseValue;
+    },
+    getString: function Lexer_getString() {
+      var numParen = 1;
+      var done = false;
+      var strBuf = this.strBuf;
+      strBuf.length = 0;
+
+      var ch = this.nextChar();
+      while (true) {
+        var charBuffered = false;
+        switch (ch | 0) {
+          case -1:
+            warn('Unterminated string');
+            done = true;
+            break;
+          case 0x28: // '('
+            ++numParen;
+            strBuf.push('(');
+            break;
+          case 0x29: // ')'
+            if (--numParen === 0) {
+              this.nextChar(); // consume strings ')'
+              done = true;
+            } else {
+              strBuf.push(')');
+            }
+            break;
+          case 0x5C: // '\\'
+            ch = this.nextChar();
+            switch (ch) {
+              case -1:
+                warn('Unterminated string');
+                done = true;
+                break;
+              case 0x6E: // 'n'
+                strBuf.push('\n');
+                break;
+              case 0x72: // 'r'
+                strBuf.push('\r');
+                break;
+              case 0x74: // 't'
+                strBuf.push('\t');
+                break;
+              case 0x62: // 'b'
+                strBuf.push('\b');
+                break;
+              case 0x66: // 'f'
+                strBuf.push('\f');
+                break;
+              case 0x5C: // '\'
+              case 0x28: // '('
+              case 0x29: // ')'
+                strBuf.push(String.fromCharCode(ch));
+                break;
+              case 0x30: case 0x31: case 0x32: case 0x33: // '0'-'3'
+              case 0x34: case 0x35: case 0x36: case 0x37: // '4'-'7'
+                var x = ch & 0x0F;
+                ch = this.nextChar();
+                charBuffered = true;
+                if (ch >= 0x30 && ch <= 0x37) { // '0'-'7'
+                  x = (x << 3) + (ch & 0x0F);
+                  ch = this.nextChar();
+                  if (ch >= 0x30 && ch <= 0x37) {  // '0'-'7'
+                    charBuffered = false;
+                    x = (x << 3) + (ch & 0x0F);
+                  }
+                }
+                strBuf.push(String.fromCharCode(x));
+                break;
+              case 0x0D: // CR
+                if (this.peekChar() === 0x0A) { // LF
+                  this.nextChar();
+                }
+                break;
+              case 0x0A: // LF
+                break;
+              default:
+                strBuf.push(String.fromCharCode(ch));
+                break;
+            }
+            break;
+          default:
+            strBuf.push(String.fromCharCode(ch));
+            break;
+        }
+        if (done) {
+          break;
+        }
+        if (!charBuffered) {
+          ch = this.nextChar();
+        }
+      }
+      return strBuf.join('');
+    },
+    getName: function Lexer_getName() {
+      var ch;
+      var strBuf = this.strBuf;
+      strBuf.length = 0;
+      while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
+        if (ch === 0x23) { // '#'
+          ch = this.nextChar();
+          var x = toHexDigit(ch);
+          if (x !== -1) {
+            var x2 = toHexDigit(this.nextChar());
+            if (x2 === -1) {
+              error('Illegal digit in hex char in name: ' + x2);
+            }
+            strBuf.push(String.fromCharCode((x << 4) | x2));
+          } else {
+            strBuf.push('#', String.fromCharCode(ch));
+          }
+        } else {
+          strBuf.push(String.fromCharCode(ch));
+        }
+      }
+      if (strBuf.length > 128) {
+        error('Warning: name token is longer than allowed by the spec: ' +
+              strBuf.length);
+      }
+      return Name.get(strBuf.join(''));
+    },
+    getHexString: function Lexer_getHexString() {
+      var strBuf = this.strBuf;
+      strBuf.length = 0;
+      var ch = this.currentChar;
+      var isFirstHex = true;
+      var firstDigit;
+      var secondDigit;
+      while (true) {
+        if (ch < 0) {
+          warn('Unterminated hex string');
+          break;
+        } else if (ch === 0x3E) { // '>'
+          this.nextChar();
+          break;
+        } else if (specialChars[ch] === 1) {
+          ch = this.nextChar();
+          continue;
+        } else {
+          if (isFirstHex) {
+            firstDigit = toHexDigit(ch);
+            if (firstDigit === -1) {
+              warn('Ignoring invalid character "' + ch + '" in hex string');
+              ch = this.nextChar();
+              continue;
+            }
+          } else {
+            secondDigit = toHexDigit(ch);
+            if (secondDigit === -1) {
+              warn('Ignoring invalid character "' + ch + '" in hex string');
+              ch = this.nextChar();
+              continue;
+            }
+            strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));
+          }
+          isFirstHex = !isFirstHex;
+          ch = this.nextChar();
+        }
+      }
+      return strBuf.join('');
+    },
+    getObj: function Lexer_getObj() {
+      // skip whitespace and comments
+      var comment = false;
+      var ch = this.currentChar;
+      while (true) {
+        if (ch < 0) {
+          return EOF;
+        }
+        if (comment) {
+          if (ch === 0x0A || ch === 0x0D) { // LF, CR
+            comment = false;
+          }
+        } else if (ch === 0x25) { // '%'
+          comment = true;
+        } else if (specialChars[ch] !== 1) {
+          break;
+        }
+        ch = this.nextChar();
+      }
+
+      // start reading token
+      switch (ch | 0) {
+        case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4'
+        case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9'
+        case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.'
+          return this.getNumber();
+        case 0x28: // '('
+          return this.getString();
+        case 0x2F: // '/'
+          return this.getName();
+        // array punctuation
+        case 0x5B: // '['
+          this.nextChar();
+          return Cmd.get('[');
+        case 0x5D: // ']'
+          this.nextChar();
+          return Cmd.get(']');
+        // hex string or dict punctuation
+        case 0x3C: // '<'
+          ch = this.nextChar();
+          if (ch === 0x3C) {
+            // dict punctuation
+            this.nextChar();
+            return Cmd.get('<<');
+          }
+          return this.getHexString();
+        // dict punctuation
+        case 0x3E: // '>'
+          ch = this.nextChar();
+          if (ch === 0x3E) {
+            this.nextChar();
+            return Cmd.get('>>');
+          }
+          return Cmd.get('>');
+        case 0x7B: // '{'
+          this.nextChar();
+          return Cmd.get('{');
+        case 0x7D: // '}'
+          this.nextChar();
+          return Cmd.get('}');
+        case 0x29: // ')'
+          error('Illegal character: ' + ch);
+          break;
+      }
+
+      // command
+      var str = String.fromCharCode(ch);
+      var knownCommands = this.knownCommands;
+      var knownCommandFound = knownCommands && knownCommands[str] !== undefined;
+      while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
+        // stop if known command is found and next character does not make
+        // the str a command
+        var possibleCommand = str + String.fromCharCode(ch);
+        if (knownCommandFound && knownCommands[possibleCommand] === undefined) {
+          break;
+        }
+        if (str.length === 128) {
+          error('Command token too long: ' + str.length);
+        }
+        str = possibleCommand;
+        knownCommandFound = knownCommands && knownCommands[str] !== undefined;
+      }
+      if (str === 'true') {
+        return true;
+      }
+      if (str === 'false') {
+        return false;
+      }
+      if (str === 'null') {
+        return null;
+      }
+      return Cmd.get(str);
+    },
+    skipToNextLine: function Lexer_skipToNextLine() {
+      var ch = this.currentChar;
+      while (ch >= 0) {
+        if (ch === 0x0D) { // CR
+          ch = this.nextChar();
+          if (ch === 0x0A) { // LF
+            this.nextChar();
+          }
+          break;
+        } else if (ch === 0x0A) { // LF
+          this.nextChar();
+          break;
+        }
+        ch = this.nextChar();
+      }
+    }
+  };
+
+  return Lexer;
+})();
+
+var Linearization = {
+  create: function LinearizationCreate(stream) {
+    function getInt(name, allowZeroValue) {
+      var obj = linDict.get(name);
+      if (isInt(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {
+        return obj;
+      }
+      throw new Error('The "' + name + '" parameter in the linearization ' +
+                      'dictionary is invalid.');
+    }
+    function getHints() {
+      var hints = linDict.get('H'), hintsLength, item;
+      if (isArray(hints) &&
+          ((hintsLength = hints.length) === 2 || hintsLength === 4)) {
+        for (var index = 0; index < hintsLength; index++) {
+          if (!(isInt(item = hints[index]) && item > 0)) {
+            throw new Error('Hint (' + index +
+                            ') in the linearization dictionary is invalid.');
+          }
+        }
+        return hints;
+      }
+      throw new Error('Hint array in the linearization dictionary is invalid.');
+    }
+    var parser = new Parser(new Lexer(stream), false, null);
+    var obj1 = parser.getObj();
+    var obj2 = parser.getObj();
+    var obj3 = parser.getObj();
+    var linDict = parser.getObj();
+    var obj, length;
+    if (!(isInt(obj1) && isInt(obj2) && isCmd(obj3, 'obj') && isDict(linDict) &&
+          isNum(obj = linDict.get('Linearized')) && obj > 0)) {
+      return null; // No valid linearization dictionary found.
+    } else if ((length = getInt('L')) !== stream.length) {
+      throw new Error('The "L" parameter in the linearization dictionary ' +
+                      'does not equal the stream length.');
+    }
+    return {
+      length: length,
+      hints: getHints(),
+      objectNumberFirst: getInt('O'),
+      endFirst: getInt('E'),
+      numPages: getInt('N'),
+      mainXRefEntriesOffset: getInt('T'),
+      pageFirst: (linDict.has('P') ? getInt('P', true) : 0)
+    };
+  }
+};
+
+
+var PostScriptParser = (function PostScriptParserClosure() {
+  function PostScriptParser(lexer) {
+    this.lexer = lexer;
+    this.operators = [];
+    this.token = null;
+    this.prev = null;
+  }
+  PostScriptParser.prototype = {
+    nextToken: function PostScriptParser_nextToken() {
+      this.prev = this.token;
+      this.token = this.lexer.getToken();
+    },
+    accept: function PostScriptParser_accept(type) {
+      if (this.token.type === type) {
+        this.nextToken();
+        return true;
+      }
+      return false;
+    },
+    expect: function PostScriptParser_expect(type) {
+      if (this.accept(type)) {
+        return true;
+      }
+      error('Unexpected symbol: found ' + this.token.type + ' expected ' +
+        type + '.');
+    },
+    parse: function PostScriptParser_parse() {
+      this.nextToken();
+      this.expect(PostScriptTokenTypes.LBRACE);
+      this.parseBlock();
+      this.expect(PostScriptTokenTypes.RBRACE);
+      return this.operators;
+    },
+    parseBlock: function PostScriptParser_parseBlock() {
+      while (true) {
+        if (this.accept(PostScriptTokenTypes.NUMBER)) {
+          this.operators.push(this.prev.value);
+        } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {
+          this.operators.push(this.prev.value);
+        } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
+          this.parseCondition();
+        } else {
+          return;
+        }
+      }
+    },
+    parseCondition: function PostScriptParser_parseCondition() {
+      // Add two place holders that will be updated later
+      var conditionLocation = this.operators.length;
+      this.operators.push(null, null);
+
+      this.parseBlock();
+      this.expect(PostScriptTokenTypes.RBRACE);
+      if (this.accept(PostScriptTokenTypes.IF)) {
+        // The true block is right after the 'if' so it just falls through on
+        // true else it jumps and skips the true block.
+        this.operators[conditionLocation] = this.operators.length;
+        this.operators[conditionLocation + 1] = 'jz';
+      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
+        var jumpLocation = this.operators.length;
+        this.operators.push(null, null);
+        var endOfTrue = this.operators.length;
+        this.parseBlock();
+        this.expect(PostScriptTokenTypes.RBRACE);
+        this.expect(PostScriptTokenTypes.IFELSE);
+        // The jump is added at the end of the true block to skip the false
+        // block.
+        this.operators[jumpLocation] = this.operators.length;
+        this.operators[jumpLocation + 1] = 'j';
+
+        this.operators[conditionLocation] = endOfTrue;
+        this.operators[conditionLocation + 1] = 'jz';
+      } else {
+        error('PS Function: error parsing conditional.');
+      }
+    }
+  };
+  return PostScriptParser;
+})();
+
+var PostScriptTokenTypes = {
+  LBRACE: 0,
+  RBRACE: 1,
+  NUMBER: 2,
+  OPERATOR: 3,
+  IF: 4,
+  IFELSE: 5
+};
+
+var PostScriptToken = (function PostScriptTokenClosure() {
+  function PostScriptToken(type, value) {
+    this.type = type;
+    this.value = value;
+  }
+
+  var opCache = {};
+
+  PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {
+    var opValue = opCache[op];
+    if (opValue) {
+      return opValue;
+    }
+    return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
+  };
+
+  PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE,
+    '{');
+  PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE,
+    '}');
+  PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF');
+  PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE,
+    'IFELSE');
+  return PostScriptToken;
+})();
+
+var PostScriptLexer = (function PostScriptLexerClosure() {
+  function PostScriptLexer(stream) {
+    this.stream = stream;
+    this.nextChar();
+
+    this.strBuf = [];
+  }
+  PostScriptLexer.prototype = {
+    nextChar: function PostScriptLexer_nextChar() {
+      return (this.currentChar = this.stream.getByte());
+    },
+    getToken: function PostScriptLexer_getToken() {
+      var comment = false;
+      var ch = this.currentChar;
+
+      // skip comments
+      while (true) {
+        if (ch < 0) {
+          return EOF;
+        }
+
+        if (comment) {
+          if (ch === 0x0A || ch === 0x0D) {
+            comment = false;
+          }
+        } else if (ch === 0x25) { // '%'
+          comment = true;
+        } else if (!Lexer.isSpace(ch)) {
+          break;
+        }
+        ch = this.nextChar();
+      }
+      switch (ch | 0) {
+        case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4'
+        case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9'
+        case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.'
+          return new PostScriptToken(PostScriptTokenTypes.NUMBER,
+                                     this.getNumber());
+        case 0x7B: // '{'
+          this.nextChar();
+          return PostScriptToken.LBRACE;
+        case 0x7D: // '}'
+          this.nextChar();
+          return PostScriptToken.RBRACE;
+      }
+      // operator
+      var strBuf = this.strBuf;
+      strBuf.length = 0;
+      strBuf[0] = String.fromCharCode(ch);
+
+      while ((ch = this.nextChar()) >= 0 && // and 'A'-'Z', 'a'-'z'
+             ((ch >= 0x41 && ch <= 0x5A) || (ch >= 0x61 && ch <= 0x7A))) {
+        strBuf.push(String.fromCharCode(ch));
+      }
+      var str = strBuf.join('');
+      switch (str.toLowerCase()) {
+        case 'if':
+          return PostScriptToken.IF;
+        case 'ifelse':
+          return PostScriptToken.IFELSE;
+        default:
+          return PostScriptToken.getOperator(str);
+      }
+    },
+    getNumber: function PostScriptLexer_getNumber() {
+      var ch = this.currentChar;
+      var strBuf = this.strBuf;
+      strBuf.length = 0;
+      strBuf[0] = String.fromCharCode(ch);
+
+      while ((ch = this.nextChar()) >= 0) {
+        if ((ch >= 0x30 && ch <= 0x39) || // '0'-'9'
+            ch === 0x2D || ch === 0x2E) { // '-', '.'
+          strBuf.push(String.fromCharCode(ch));
+        } else {
+          break;
+        }
+      }
+      var value = parseFloat(strBuf.join(''));
+      if (isNaN(value)) {
+        error('Invalid floating point number: ' + value);
+      }
+      return value;
+    }
+  };
+  return PostScriptLexer;
+})();
+
+
+var Stream = (function StreamClosure() {
+  function Stream(arrayBuffer, start, length, dict) {
+    this.bytes = (arrayBuffer instanceof Uint8Array ?
+                  arrayBuffer : new Uint8Array(arrayBuffer));
+    this.start = start || 0;
+    this.pos = this.start;
+    this.end = (start + length) || this.bytes.length;
+    this.dict = dict;
+  }
+
+  // required methods for a stream. if a particular stream does not
+  // implement these, an error should be thrown
+  Stream.prototype = {
+    get length() {
+      return this.end - this.start;
+    },
+    get isEmpty() {
+      return this.length === 0;
+    },
+    getByte: function Stream_getByte() {
+      if (this.pos >= this.end) {
+        return -1;
+      }
+      return this.bytes[this.pos++];
+    },
+    getUint16: function Stream_getUint16() {
+      var b0 = this.getByte();
+      var b1 = this.getByte();
+      if (b0 === -1 || b1 === -1) {
+        return -1;
+      }
+      return (b0 << 8) + b1;
+    },
+    getInt32: function Stream_getInt32() {
+      var b0 = this.getByte();
+      var b1 = this.getByte();
+      var b2 = this.getByte();
+      var b3 = this.getByte();
+      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
+    },
+    // returns subarray of original buffer
+    // should only be read
+    getBytes: function Stream_getBytes(length) {
+      var bytes = this.bytes;
+      var pos = this.pos;
+      var strEnd = this.end;
+
+      if (!length) {
+        return bytes.subarray(pos, strEnd);
+      }
+      var end = pos + length;
+      if (end > strEnd) {
+        end = strEnd;
+      }
+      this.pos = end;
+      return bytes.subarray(pos, end);
+    },
+    peekByte: function Stream_peekByte() {
+      var peekedByte = this.getByte();
+      this.pos--;
+      return peekedByte;
+    },
+    peekBytes: function Stream_peekBytes(length) {
+      var bytes = this.getBytes(length);
+      this.pos -= bytes.length;
+      return bytes;
+    },
+    skip: function Stream_skip(n) {
+      if (!n) {
+        n = 1;
+      }
+      this.pos += n;
+    },
+    reset: function Stream_reset() {
+      this.pos = this.start;
+    },
+    moveStart: function Stream_moveStart() {
+      this.start = this.pos;
+    },
+    makeSubStream: function Stream_makeSubStream(start, length, dict) {
+      return new Stream(this.bytes.buffer, start, length, dict);
+    },
+    isStream: true
+  };
+
+  return Stream;
+})();
+
+var StringStream = (function StringStreamClosure() {
+  function StringStream(str) {
+    var length = str.length;
+    var bytes = new Uint8Array(length);
+    for (var n = 0; n < length; ++n) {
+      bytes[n] = str.charCodeAt(n);
+    }
+    Stream.call(this, bytes);
+  }
+
+  StringStream.prototype = Stream.prototype;
+
+  return StringStream;
+})();
+
+// super class for the decoding streams
+var DecodeStream = (function DecodeStreamClosure() {
+  // Lots of DecodeStreams are created whose buffers are never used.  For these
+  // we share a single empty buffer. This is (a) space-efficient and (b) avoids
+  // having special cases that would be required if we used |null| for an empty
+  // buffer.
+  var emptyBuffer = new Uint8Array(0);
+
+  function DecodeStream(maybeMinBufferLength) {
+    this.pos = 0;
+    this.bufferLength = 0;
+    this.eof = false;
+    this.buffer = emptyBuffer;
+    this.minBufferLength = 512;
+    if (maybeMinBufferLength) {
+      // Compute the first power of two that is as big as maybeMinBufferLength.
+      while (this.minBufferLength < maybeMinBufferLength) {
+        this.minBufferLength *= 2;
+      }
+    }
+  }
+
+  DecodeStream.prototype = {
+    get isEmpty() {
+      while (!this.eof && this.bufferLength === 0) {
+        this.readBlock();
+      }
+      return this.bufferLength === 0;
+    },
+    ensureBuffer: function DecodeStream_ensureBuffer(requested) {
+      var buffer = this.buffer;
+      if (requested <= buffer.byteLength) {
+        return buffer;
+      }
+      var size = this.minBufferLength;
+      while (size < requested) {
+        size *= 2;
+      }
+      var buffer2 = new Uint8Array(size);
+      buffer2.set(buffer);
+      return (this.buffer = buffer2);
+    },
+    getByte: function DecodeStream_getByte() {
+      var pos = this.pos;
+      while (this.bufferLength <= pos) {
+        if (this.eof) {
+          return -1;
+        }
+        this.readBlock();
+      }
+      return this.buffer[this.pos++];
+    },
+    getUint16: function DecodeStream_getUint16() {
+      var b0 = this.getByte();
+      var b1 = this.getByte();
+      if (b0 === -1 || b1 === -1) {
+        return -1;
+      }
+      return (b0 << 8) + b1;
+    },
+    getInt32: function DecodeStream_getInt32() {
+      var b0 = this.getByte();
+      var b1 = this.getByte();
+      var b2 = this.getByte();
+      var b3 = this.getByte();
+      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
+    },
+    getBytes: function DecodeStream_getBytes(length) {
+      var end, pos = this.pos;
+
+      if (length) {
+        this.ensureBuffer(pos + length);
+        end = pos + length;
+
+        while (!this.eof && this.bufferLength < end) {
+          this.readBlock();
+        }
+        var bufEnd = this.bufferLength;
+        if (end > bufEnd) {
+          end = bufEnd;
+        }
+      } else {
+        while (!this.eof) {
+          this.readBlock();
+        }
+        end = this.bufferLength;
+      }
+
+      this.pos = end;
+      return this.buffer.subarray(pos, end);
+    },
+    peekByte: function DecodeStream_peekByte() {
+      var peekedByte = this.getByte();
+      this.pos--;
+      return peekedByte;
+    },
+    peekBytes: function DecodeStream_peekBytes(length) {
+      var bytes = this.getBytes(length);
+      this.pos -= bytes.length;
+      return bytes;
+    },
+    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {
+      var end = start + length;
+      while (this.bufferLength <= end && !this.eof) {
+        this.readBlock();
+      }
+      return new Stream(this.buffer, start, length, dict);
+    },
+    skip: function DecodeStream_skip(n) {
+      if (!n) {
+        n = 1;
+      }
+      this.pos += n;
+    },
+    reset: function DecodeStream_reset() {
+      this.pos = 0;
+    },
+    getBaseStreams: function DecodeStream_getBaseStreams() {
+      if (this.str && this.str.getBaseStreams) {
+        return this.str.getBaseStreams();
+      }
+      return [];
+    }
+  };
+
+  return DecodeStream;
+})();
+
+var StreamsSequenceStream = (function StreamsSequenceStreamClosure() {
+  function StreamsSequenceStream(streams) {
+    this.streams = streams;
+    DecodeStream.call(this, /* maybeLength = */ null);
+  }
+
+  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);
+
+  StreamsSequenceStream.prototype.readBlock =
+      function streamSequenceStreamReadBlock() {
+
+    var streams = this.streams;
+    if (streams.length === 0) {
+      this.eof = true;
+      return;
+    }
+    var stream = streams.shift();
+    var chunk = stream.getBytes();
+    var bufferLength = this.bufferLength;
+    var newLength = bufferLength + chunk.length;
+    var buffer = this.ensureBuffer(newLength);
+    buffer.set(chunk, bufferLength);
+    this.bufferLength = newLength;
+  };
+
+  StreamsSequenceStream.prototype.getBaseStreams =
+    function StreamsSequenceStream_getBaseStreams() {
+
+    var baseStreams = [];
+    for (var i = 0, ii = this.streams.length; i < ii; i++) {
+      var stream = this.streams[i];
+      if (stream.getBaseStreams) {
+        Util.appendToArray(baseStreams, stream.getBaseStreams());
+      }
+    }
+    return baseStreams;
+  };
+
+  return StreamsSequenceStream;
+})();
+
+var FlateStream = (function FlateStreamClosure() {
+  var codeLenCodeMap = new Int32Array([
+    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15
+  ]);
+
+  var lengthDecode = new Int32Array([
+    0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,
+    0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,
+    0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,
+    0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102
+  ]);
+
+  var distDecode = new Int32Array([
+    0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,
+    0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,
+    0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,
+    0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001
+  ]);
+
+  var fixedLitCodeTab = [new Int32Array([
+    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,
+    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,
+    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,
+    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,
+    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,
+    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,
+    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,
+    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,
+    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,
+    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,
+    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,
+    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,
+    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,
+    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,
+    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,
+    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,
+    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,
+    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,
+    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,
+    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,
+    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,
+    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,
+    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,
+    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,
+    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,
+    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,
+    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,
+    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,
+    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,
+    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,
+    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,
+    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,
+    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,
+    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,
+    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,
+    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,
+    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,
+    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,
+    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,
+    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,
+    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,
+    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,
+    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,
+    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,
+    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,
+    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,
+    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,
+    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,
+    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,
+    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,
+    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,
+    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,
+    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,
+    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,
+    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,
+    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,
+    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,
+    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,
+    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,
+    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,
+    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,
+    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,
+    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,
+    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff
+  ]), 9];
+
+  var fixedDistCodeTab = [new Int32Array([
+    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,
+    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,
+    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,
+    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000
+  ]), 5];
+
+  function FlateStream(str, maybeLength) {
+    this.str = str;
+    this.dict = str.dict;
+
+    var cmf = str.getByte();
+    var flg = str.getByte();
+    if (cmf === -1 || flg === -1) {
+      error('Invalid header in flate stream: ' + cmf + ', ' + flg);
+    }
+    if ((cmf & 0x0f) !== 0x08) {
+      error('Unknown compression method in flate stream: ' + cmf + ', ' + flg);
+    }
+    if ((((cmf << 8) + flg) % 31) !== 0) {
+      error('Bad FCHECK in flate stream: ' + cmf + ', ' + flg);
+    }
+    if (flg & 0x20) {
+      error('FDICT bit set in flate stream: ' + cmf + ', ' + flg);
+    }
+
+    this.codeSize = 0;
+    this.codeBuf = 0;
+
+    DecodeStream.call(this, maybeLength);
+  }
+
+  FlateStream.prototype = Object.create(DecodeStream.prototype);
+
+  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {
+    var str = this.str;
+    var codeSize = this.codeSize;
+    var codeBuf = this.codeBuf;
+
+    var b;
+    while (codeSize < bits) {
+      if ((b = str.getByte()) === -1) {
+        error('Bad encoding in flate stream');
+      }
+      codeBuf |= b << codeSize;
+      codeSize += 8;
+    }
+    b = codeBuf & ((1 << bits) - 1);
+    this.codeBuf = codeBuf >> bits;
+    this.codeSize = codeSize -= bits;
+
+    return b;
+  };
+
+  FlateStream.prototype.getCode = function FlateStream_getCode(table) {
+    var str = this.str;
+    var codes = table[0];
+    var maxLen = table[1];
+    var codeSize = this.codeSize;
+    var codeBuf = this.codeBuf;
+
+    var b;
+    while (codeSize < maxLen) {
+      if ((b = str.getByte()) === -1) {
+        // premature end of stream. code might however still be valid.
+        // codeSize < codeLen check below guards against incomplete codeVal.
+        break;
+      }
+      codeBuf |= (b << codeSize);
+      codeSize += 8;
+    }
+    var code = codes[codeBuf & ((1 << maxLen) - 1)];
+    var codeLen = code >> 16;
+    var codeVal = code & 0xffff;
+    if (codeLen < 1 || codeSize < codeLen) {
+      error('Bad encoding in flate stream');
+    }
+    this.codeBuf = (codeBuf >> codeLen);
+    this.codeSize = (codeSize - codeLen);
+    return codeVal;
+  };
+
+  FlateStream.prototype.generateHuffmanTable =
+      function flateStreamGenerateHuffmanTable(lengths) {
+    var n = lengths.length;
+
+    // find max code length
+    var maxLen = 0;
+    var i;
+    for (i = 0; i < n; ++i) {
+      if (lengths[i] > maxLen) {
+        maxLen = lengths[i];
+      }
+    }
+
+    // build the table
+    var size = 1 << maxLen;
+    var codes = new Int32Array(size);
+    for (var len = 1, code = 0, skip = 2;
+         len <= maxLen;
+         ++len, code <<= 1, skip <<= 1) {
+      for (var val = 0; val < n; ++val) {
+        if (lengths[val] === len) {
+          // bit-reverse the code
+          var code2 = 0;
+          var t = code;
+          for (i = 0; i < len; ++i) {
+            code2 = (code2 << 1) | (t & 1);
+            t >>= 1;
+          }
+
+          // fill the table entries
+          for (i = code2; i < size; i += skip) {
+            codes[i] = (len << 16) | val;
+          }
+          ++code;
+        }
+      }
+    }
+
+    return [codes, maxLen];
+  };
+
+  FlateStream.prototype.readBlock = function FlateStream_readBlock() {
+    var buffer, len;
+    var str = this.str;
+    // read block header
+    var hdr = this.getBits(3);
+    if (hdr & 1) {
+      this.eof = true;
+    }
+    hdr >>= 1;
+
+    if (hdr === 0) { // uncompressed block
+      var b;
+
+      if ((b = str.getByte()) === -1) {
+        error('Bad block header in flate stream');
+      }
+      var blockLen = b;
+      if ((b = str.getByte()) === -1) {
+        error('Bad block header in flate stream');
+      }
+      blockLen |= (b << 8);
+      if ((b = str.getByte()) === -1) {
+        error('Bad block header in flate stream');
+      }
+      var check = b;
+      if ((b = str.getByte()) === -1) {
+        error('Bad block header in flate stream');
+      }
+      check |= (b << 8);
+      if (check !== (~blockLen & 0xffff) &&
+          (blockLen !== 0 || check !== 0)) {
+        // Ignoring error for bad "empty" block (see issue 1277)
+        error('Bad uncompressed block length in flate stream');
+      }
+
+      this.codeBuf = 0;
+      this.codeSize = 0;
+
+      var bufferLength = this.bufferLength;
+      buffer = this.ensureBuffer(bufferLength + blockLen);
+      var end = bufferLength + blockLen;
+      this.bufferLength = end;
+      if (blockLen === 0) {
+        if (str.peekByte() === -1) {
+          this.eof = true;
+        }
+      } else {
+        for (var n = bufferLength; n < end; ++n) {
+          if ((b = str.getByte()) === -1) {
+            this.eof = true;
+            break;
+          }
+          buffer[n] = b;
+        }
+      }
+      return;
+    }
+
+    var litCodeTable;
+    var distCodeTable;
+    if (hdr === 1) { // compressed block, fixed codes
+      litCodeTable = fixedLitCodeTab;
+      distCodeTable = fixedDistCodeTab;
+    } else if (hdr === 2) { // compressed block, dynamic codes
+      var numLitCodes = this.getBits(5) + 257;
+      var numDistCodes = this.getBits(5) + 1;
+      var numCodeLenCodes = this.getBits(4) + 4;
+
+      // build the code lengths code table
+      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);
+
+      var i;
+      for (i = 0; i < numCodeLenCodes; ++i) {
+        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);
+      }
+      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);
+
+      // build the literal and distance code tables
+      len = 0;
+      i = 0;
+      var codes = numLitCodes + numDistCodes;
+      var codeLengths = new Uint8Array(codes);
+      var bitsLength, bitsOffset, what;
+      while (i < codes) {
+        var code = this.getCode(codeLenCodeTab);
+        if (code === 16) {
+          bitsLength = 2; bitsOffset = 3; what = len;
+        } else if (code === 17) {
+          bitsLength = 3; bitsOffset = 3; what = (len = 0);
+        } else if (code === 18) {
+          bitsLength = 7; bitsOffset = 11; what = (len = 0);
+        } else {
+          codeLengths[i++] = len = code;
+          continue;
+        }
+
+        var repeatLength = this.getBits(bitsLength) + bitsOffset;
+        while (repeatLength-- > 0) {
+          codeLengths[i++] = what;
+        }
+      }
+
+      litCodeTable =
+        this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));
+      distCodeTable =
+        this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));
+    } else {
+      error('Unknown block type in flate stream');
+    }
+
+    buffer = this.buffer;
+    var limit = buffer ? buffer.length : 0;
+    var pos = this.bufferLength;
+    while (true) {
+      var code1 = this.getCode(litCodeTable);
+      if (code1 < 256) {
+        if (pos + 1 >= limit) {
+          buffer = this.ensureBuffer(pos + 1);
+          limit = buffer.length;
+        }
+        buffer[pos++] = code1;
+        continue;
+      }
+      if (code1 === 256) {
+        this.bufferLength = pos;
+        return;
+      }
+      code1 -= 257;
+      code1 = lengthDecode[code1];
+      var code2 = code1 >> 16;
+      if (code2 > 0) {
+        code2 = this.getBits(code2);
+      }
+      len = (code1 & 0xffff) + code2;
+      code1 = this.getCode(distCodeTable);
+      code1 = distDecode[code1];
+      code2 = code1 >> 16;
+      if (code2 > 0) {
+        code2 = this.getBits(code2);
+      }
+      var dist = (code1 & 0xffff) + code2;
+      if (pos + len >= limit) {
+        buffer = this.ensureBuffer(pos + len);
+        limit = buffer.length;
+      }
+      for (var k = 0; k < len; ++k, ++pos) {
+        buffer[pos] = buffer[pos - dist];
+      }
+    }
+  };
+
+  return FlateStream;
+})();
+
+var PredictorStream = (function PredictorStreamClosure() {
+  function PredictorStream(str, maybeLength, params) {
+    var predictor = this.predictor = params.get('Predictor') || 1;
+
+    if (predictor <= 1) {
+      return str; // no prediction
+    }
+    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {
+      error('Unsupported predictor: ' + predictor);
+    }
+
+    if (predictor === 2) {
+      this.readBlock = this.readBlockTiff;
+    } else {
+      this.readBlock = this.readBlockPng;
+    }
+
+    this.str = str;
+    this.dict = str.dict;
+
+    var colors = this.colors = params.get('Colors') || 1;
+    var bits = this.bits = params.get('BitsPerComponent') || 8;
+    var columns = this.columns = params.get('Columns') || 1;
+
+    this.pixBytes = (colors * bits + 7) >> 3;
+    this.rowBytes = (columns * colors * bits + 7) >> 3;
+
+    DecodeStream.call(this, maybeLength);
+    return this;
+  }
+
+  PredictorStream.prototype = Object.create(DecodeStream.prototype);
+
+  PredictorStream.prototype.readBlockTiff =
+      function predictorStreamReadBlockTiff() {
+    var rowBytes = this.rowBytes;
+
+    var bufferLength = this.bufferLength;
+    var buffer = this.ensureBuffer(bufferLength + rowBytes);
+
+    var bits = this.bits;
+    var colors = this.colors;
+
+    var rawBytes = this.str.getBytes(rowBytes);
+    this.eof = !rawBytes.length;
+    if (this.eof) {
+      return;
+    }
+
+    var inbuf = 0, outbuf = 0;
+    var inbits = 0, outbits = 0;
+    var pos = bufferLength;
+    var i;
+
+    if (bits === 1) {
+      for (i = 0; i < rowBytes; ++i) {
+        var c = rawBytes[i];
+        inbuf = (inbuf << 8) | c;
+        // bitwise addition is exclusive or
+        // first shift inbuf and then add
+        buffer[pos++] = (c ^ (inbuf >> colors)) & 0xFF;
+        // truncate inbuf (assumes colors < 16)
+        inbuf &= 0xFFFF;
+      }
+    } else if (bits === 8) {
+      for (i = 0; i < colors; ++i) {
+        buffer[pos++] = rawBytes[i];
+      }
+      for (; i < rowBytes; ++i) {
+        buffer[pos] = buffer[pos - colors] + rawBytes[i];
+        pos++;
+      }
+    } else {
+      var compArray = new Uint8Array(colors + 1);
+      var bitMask = (1 << bits) - 1;
+      var j = 0, k = bufferLength;
+      var columns = this.columns;
+      for (i = 0; i < columns; ++i) {
+        for (var kk = 0; kk < colors; ++kk) {
+          if (inbits < bits) {
+            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xFF);
+            inbits += 8;
+          }
+          compArray[kk] = (compArray[kk] +
+                           (inbuf >> (inbits - bits))) & bitMask;
+          inbits -= bits;
+          outbuf = (outbuf << bits) | compArray[kk];
+          outbits += bits;
+          if (outbits >= 8) {
+            buffer[k++] = (outbuf >> (outbits - 8)) & 0xFF;
+            outbits -= 8;
+          }
+        }
+      }
+      if (outbits > 0) {
+        buffer[k++] = (outbuf << (8 - outbits)) +
+                      (inbuf & ((1 << (8 - outbits)) - 1));
+      }
+    }
+    this.bufferLength += rowBytes;
+  };
+
+  PredictorStream.prototype.readBlockPng =
+      function predictorStreamReadBlockPng() {
+
+    var rowBytes = this.rowBytes;
+    var pixBytes = this.pixBytes;
+
+    var predictor = this.str.getByte();
+    var rawBytes = this.str.getBytes(rowBytes);
+    this.eof = !rawBytes.length;
+    if (this.eof) {
+      return;
+    }
+
+    var bufferLength = this.bufferLength;
+    var buffer = this.ensureBuffer(bufferLength + rowBytes);
+
+    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);
+    if (prevRow.length === 0) {
+      prevRow = new Uint8Array(rowBytes);
+    }
+
+    var i, j = bufferLength, up, c;
+    switch (predictor) {
+      case 0:
+        for (i = 0; i < rowBytes; ++i) {
+          buffer[j++] = rawBytes[i];
+        }
+        break;
+      case 1:
+        for (i = 0; i < pixBytes; ++i) {
+          buffer[j++] = rawBytes[i];
+        }
+        for (; i < rowBytes; ++i) {
+          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xFF;
+          j++;
+        }
+        break;
+      case 2:
+        for (i = 0; i < rowBytes; ++i) {
+          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xFF;
+        }
+        break;
+      case 3:
+        for (i = 0; i < pixBytes; ++i) {
+          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];
+        }
+        for (; i < rowBytes; ++i) {
+          buffer[j] = (((prevRow[i] + buffer[j - pixBytes]) >> 1) +
+                           rawBytes[i]) & 0xFF;
+          j++;
+        }
+        break;
+      case 4:
+        // we need to save the up left pixels values. the simplest way
+        // is to create a new buffer
+        for (i = 0; i < pixBytes; ++i) {
+          up = prevRow[i];
+          c = rawBytes[i];
+          buffer[j++] = up + c;
+        }
+        for (; i < rowBytes; ++i) {
+          up = prevRow[i];
+          var upLeft = prevRow[i - pixBytes];
+          var left = buffer[j - pixBytes];
+          var p = left + up - upLeft;
+
+          var pa = p - left;
+          if (pa < 0) {
+            pa = -pa;
+          }
+          var pb = p - up;
+          if (pb < 0) {
+            pb = -pb;
+          }
+          var pc = p - upLeft;
+          if (pc < 0) {
+            pc = -pc;
+          }
+
+          c = rawBytes[i];
+          if (pa <= pb && pa <= pc) {
+            buffer[j++] = left + c;
+          } else if (pb <= pc) {
+            buffer[j++] = up + c;
+          } else {
+            buffer[j++] = upLeft + c;
+          }
+        }
+        break;
+      default:
+        error('Unsupported predictor: ' + predictor);
+    }
+    this.bufferLength += rowBytes;
+  };
+
+  return PredictorStream;
+})();
+
+/**
+ * Depending on the type of JPEG a JpegStream is handled in different ways. For
+ * JPEG's that are supported natively such as DeviceGray and DeviceRGB the image
+ * data is stored and then loaded by the browser.  For unsupported JPEG's we use
+ * a library to decode these images and the stream behaves like all the other
+ * DecodeStreams.
+ */
+var JpegStream = (function JpegStreamClosure() {
+  function JpegStream(stream, maybeLength, dict, xref) {
+    // Some images may contain 'junk' before the SOI (start-of-image) marker.
+    // Note: this seems to mainly affect inline images.
+    var ch;
+    while ((ch = stream.getByte()) !== -1) {
+      if (ch === 0xFF) { // Find the first byte of the SOI marker (0xFFD8).
+        stream.skip(-1); // Reset the stream position to the SOI.
+        break;
+      }
+    }
+    this.stream = stream;
+    this.maybeLength = maybeLength;
+    this.dict = dict;
+
+    DecodeStream.call(this, maybeLength);
+  }
+
+  JpegStream.prototype = Object.create(DecodeStream.prototype);
+
+  Object.defineProperty(JpegStream.prototype, 'bytes', {
+    get: function JpegStream_bytes() {
+      // If this.maybeLength is null, we'll get the entire stream.
+      return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));
+    },
+    configurable: true
+  });
+
+  JpegStream.prototype.ensureBuffer = function JpegStream_ensureBuffer(req) {
+    if (this.bufferLength) {
+      return;
+    }
+    try {
+      var jpegImage = new JpegImage();
+
+      // checking if values needs to be transformed before conversion
+      if (this.forceRGB && this.dict && isArray(this.dict.get('Decode'))) {
+        var decodeArr = this.dict.get('Decode');
+        var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;
+        var decodeArrLength = decodeArr.length;
+        var transform = new Int32Array(decodeArrLength);
+        var transformNeeded = false;
+        var maxValue = (1 << bitsPerComponent) - 1;
+        for (var i = 0; i < decodeArrLength; i += 2) {
+          transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;
+          transform[i + 1] = (decodeArr[i] * maxValue) | 0;
+          if (transform[i] !== 256 || transform[i + 1] !== 0) {
+            transformNeeded = true;
+          }
+        }
+        if (transformNeeded) {
+          jpegImage.decodeTransform = transform;
+        }
+      }
+
+      jpegImage.parse(this.bytes);
+      var data = jpegImage.getData(this.drawWidth, this.drawHeight,
+                                   this.forceRGB);
+      this.buffer = data;
+      this.bufferLength = data.length;
+      this.eof = true;
+    } catch (e) {
+      error('JPEG error: ' + e);
+    }
+  };
+
+  JpegStream.prototype.getBytes = function JpegStream_getBytes(length) {
+    this.ensureBuffer();
+    return this.buffer;
+  };
+
+  JpegStream.prototype.getIR = function JpegStream_getIR() {
+    return PDFJS.createObjectURL(this.bytes, 'image/jpeg');
+  };
+  /**
+   * Checks if the image can be decoded and displayed by the browser without any
+   * further processing such as color space conversions.
+   */
+  JpegStream.prototype.isNativelySupported =
+      function JpegStream_isNativelySupported(xref, res) {
+    var cs = ColorSpace.parse(this.dict.get('ColorSpace', 'CS'), xref, res);
+    return cs.name === 'DeviceGray' || cs.name === 'DeviceRGB';
+  };
+  /**
+   * Checks if the image can be decoded by the browser.
+   */
+  JpegStream.prototype.isNativelyDecodable =
+      function JpegStream_isNativelyDecodable(xref, res) {
+    var cs = ColorSpace.parse(this.dict.get('ColorSpace', 'CS'), xref, res);
+    var numComps = cs.numComps;
+    return numComps === 1 || numComps === 3;
+  };
+
+  return JpegStream;
+})();
+
+/**
+ * For JPEG 2000's we use a library to decode these images and
+ * the stream behaves like all the other DecodeStreams.
+ */
+var JpxStream = (function JpxStreamClosure() {
+  function JpxStream(stream, maybeLength, dict) {
+    this.stream = stream;
+    this.maybeLength = maybeLength;
+    this.dict = dict;
+
+    DecodeStream.call(this, maybeLength);
+  }
+
+  JpxStream.prototype = Object.create(DecodeStream.prototype);
+
+  Object.defineProperty(JpxStream.prototype, 'bytes', {
+    get: function JpxStream_bytes() {
+      // If this.maybeLength is null, we'll get the entire stream.
+      return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));
+    },
+    configurable: true
+  });
+
+  JpxStream.prototype.ensureBuffer = function JpxStream_ensureBuffer(req) {
+    if (this.bufferLength) {
+      return;
+    }
+
+    var jpxImage = new JpxImage();
+    jpxImage.parse(this.bytes);
+
+    var width = jpxImage.width;
+    var height = jpxImage.height;
+    var componentsCount = jpxImage.componentsCount;
+    var tileCount = jpxImage.tiles.length;
+    if (tileCount === 1) {
+      this.buffer = jpxImage.tiles[0].items;
+    } else {
+      var data = new Uint8Array(width * height * componentsCount);
+
+      for (var k = 0; k < tileCount; k++) {
+        var tileComponents = jpxImage.tiles[k];
+        var tileWidth = tileComponents.width;
+        var tileHeight = tileComponents.height;
+        var tileLeft = tileComponents.left;
+        var tileTop = tileComponents.top;
+
+        var src = tileComponents.items;
+        var srcPosition = 0;
+        var dataPosition = (width * tileTop + tileLeft) * componentsCount;
+        var imgRowSize = width * componentsCount;
+        var tileRowSize = tileWidth * componentsCount;
+
+        for (var j = 0; j < tileHeight; j++) {
+          var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);
+          data.set(rowBytes, dataPosition);
+          srcPosition += tileRowSize;
+          dataPosition += imgRowSize;
+        }
+      }
+      this.buffer = data;
+    }
+    this.bufferLength = this.buffer.length;
+    this.eof = true;
+  };
+
+  return JpxStream;
+})();
+
+/**
+ * For JBIG2's we use a library to decode these images and
+ * the stream behaves like all the other DecodeStreams.
+ */
+var Jbig2Stream = (function Jbig2StreamClosure() {
+  function Jbig2Stream(stream, maybeLength, dict) {
+    this.stream = stream;
+    this.maybeLength = maybeLength;
+    this.dict = dict;
+
+    DecodeStream.call(this, maybeLength);
+  }
+
+  Jbig2Stream.prototype = Object.create(DecodeStream.prototype);
+
+  Object.defineProperty(Jbig2Stream.prototype, 'bytes', {
+    get: function Jbig2Stream_bytes() {
+      // If this.maybeLength is null, we'll get the entire stream.
+      return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));
+    },
+    configurable: true
+  });
+
+  Jbig2Stream.prototype.ensureBuffer = function Jbig2Stream_ensureBuffer(req) {
+    if (this.bufferLength) {
+      return;
+    }
+
+    var jbig2Image = new Jbig2Image();
+
+    var chunks = [], xref = this.dict.xref;
+    var decodeParams = xref.fetchIfRef(this.dict.get('DecodeParms'));
+
+    // According to the PDF specification, DecodeParms can be either
+    // a dictionary, or an array whose elements are dictionaries.
+    if (isArray(decodeParams)) {
+      if (decodeParams.length > 1) {
+        warn('JBIG2 - \'DecodeParms\' array with multiple elements ' +
+             'not supported.');
+      }
+      decodeParams = xref.fetchIfRef(decodeParams[0]);
+    }
+    if (decodeParams && decodeParams.has('JBIG2Globals')) {
+      var globalsStream = decodeParams.get('JBIG2Globals');
+      var globals = globalsStream.getBytes();
+      chunks.push({data: globals, start: 0, end: globals.length});
+    }
+    chunks.push({data: this.bytes, start: 0, end: this.bytes.length});
+    var data = jbig2Image.parseChunks(chunks);
+    var dataLength = data.length;
+
+    // JBIG2 had black as 1 and white as 0, inverting the colors
+    for (var i = 0; i < dataLength; i++) {
+      data[i] ^= 0xFF;
+    }
+
+    this.buffer = data;
+    this.bufferLength = dataLength;
+    this.eof = true;
+  };
+
+  return Jbig2Stream;
+})();
+
+var DecryptStream = (function DecryptStreamClosure() {
+  function DecryptStream(str, maybeLength, decrypt) {
+    this.str = str;
+    this.dict = str.dict;
+    this.decrypt = decrypt;
+    this.nextChunk = null;
+    this.initialized = false;
+
+    DecodeStream.call(this, maybeLength);
+  }
+
+  var chunkSize = 512;
+
+  DecryptStream.prototype = Object.create(DecodeStream.prototype);
+
+  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {
+    var chunk;
+    if (this.initialized) {
+      chunk = this.nextChunk;
+    } else {
+      chunk = this.str.getBytes(chunkSize);
+      this.initialized = true;
+    }
+    if (!chunk || chunk.length === 0) {
+      this.eof = true;
+      return;
+    }
+    this.nextChunk = this.str.getBytes(chunkSize);
+    var hasMoreData = this.nextChunk && this.nextChunk.length > 0;
+
+    var decrypt = this.decrypt;
+    chunk = decrypt(chunk, !hasMoreData);
+
+    var bufferLength = this.bufferLength;
+    var i, n = chunk.length;
+    var buffer = this.ensureBuffer(bufferLength + n);
+    for (i = 0; i < n; i++) {
+      buffer[bufferLength++] = chunk[i];
+    }
+    this.bufferLength = bufferLength;
+  };
+
+  return DecryptStream;
+})();
+
+var Ascii85Stream = (function Ascii85StreamClosure() {
+  function Ascii85Stream(str, maybeLength) {
+    this.str = str;
+    this.dict = str.dict;
+    this.input = new Uint8Array(5);
+
+    // Most streams increase in size when decoded, but Ascii85 streams
+    // typically shrink by ~20%.
+    if (maybeLength) {
+      maybeLength = 0.8 * maybeLength;
+    }
+    DecodeStream.call(this, maybeLength);
+  }
+
+  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);
+
+  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {
+    var TILDA_CHAR = 0x7E; // '~'
+    var Z_LOWER_CHAR = 0x7A; // 'z'
+    var EOF = -1;
+
+    var str = this.str;
+
+    var c = str.getByte();
+    while (Lexer.isSpace(c)) {
+      c = str.getByte();
+    }
+
+    if (c === EOF || c === TILDA_CHAR) {
+      this.eof = true;
+      return;
+    }
+
+    var bufferLength = this.bufferLength, buffer;
+    var i;
+
+    // special code for z
+    if (c === Z_LOWER_CHAR) {
+      buffer = this.ensureBuffer(bufferLength + 4);
+      for (i = 0; i < 4; ++i) {
+        buffer[bufferLength + i] = 0;
+      }
+      this.bufferLength += 4;
+    } else {
+      var input = this.input;
+      input[0] = c;
+      for (i = 1; i < 5; ++i) {
+        c = str.getByte();
+        while (Lexer.isSpace(c)) {
+          c = str.getByte();
+        }
+
+        input[i] = c;
+
+        if (c === EOF || c === TILDA_CHAR) {
+          break;
+        }
+      }
+      buffer = this.ensureBuffer(bufferLength + i - 1);
+      this.bufferLength += i - 1;
+
+      // partial ending;
+      if (i < 5) {
+        for (; i < 5; ++i) {
+          input[i] = 0x21 + 84;
+        }
+        this.eof = true;
+      }
+      var t = 0;
+      for (i = 0; i < 5; ++i) {
+        t = t * 85 + (input[i] - 0x21);
+      }
+
+      for (i = 3; i >= 0; --i) {
+        buffer[bufferLength + i] = t & 0xFF;
+        t >>= 8;
+      }
+    }
+  };
+
+  return Ascii85Stream;
+})();
+
+var AsciiHexStream = (function AsciiHexStreamClosure() {
+  function AsciiHexStream(str, maybeLength) {
+    this.str = str;
+    this.dict = str.dict;
+
+    this.firstDigit = -1;
+
+    // Most streams increase in size when decoded, but AsciiHex streams shrink
+    // by 50%.
+    if (maybeLength) {
+      maybeLength = 0.5 * maybeLength;
+    }
+    DecodeStream.call(this, maybeLength);
+  }
+
+  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);
+
+  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {
+    var UPSTREAM_BLOCK_SIZE = 8000;
+    var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);
+    if (!bytes.length) {
+      this.eof = true;
+      return;
+    }
+
+    var maxDecodeLength = (bytes.length + 1) >> 1;
+    var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);
+    var bufferLength = this.bufferLength;
+
+    var firstDigit = this.firstDigit;
+    for (var i = 0, ii = bytes.length; i < ii; i++) {
+      var ch = bytes[i], digit;
+      if (ch >= 0x30 && ch <= 0x39) { // '0'-'9'
+        digit = ch & 0x0F;
+      } else if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {
+        // 'A'-'Z', 'a'-'z'
+        digit = (ch & 0x0F) + 9;
+      } else if (ch === 0x3E) { // '>'
+        this.eof = true;
+        break;
+      } else { // probably whitespace
+        continue; // ignoring
+      }
+      if (firstDigit < 0) {
+        firstDigit = digit;
+      } else {
+        buffer[bufferLength++] = (firstDigit << 4) | digit;
+        firstDigit = -1;
+      }
+    }
+    if (firstDigit >= 0 && this.eof) {
+      // incomplete byte
+      buffer[bufferLength++] = (firstDigit << 4);
+      firstDigit = -1;
+    }
+    this.firstDigit = firstDigit;
+    this.bufferLength = bufferLength;
+  };
+
+  return AsciiHexStream;
+})();
+
+var RunLengthStream = (function RunLengthStreamClosure() {
+  function RunLengthStream(str, maybeLength) {
+    this.str = str;
+    this.dict = str.dict;
+
+    DecodeStream.call(this, maybeLength);
+  }
+
+  RunLengthStream.prototype = Object.create(DecodeStream.prototype);
+
+  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {
+    // The repeatHeader has following format. The first byte defines type of run
+    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes
+    // (in addition to the second byte from the header), n = 129 through 255 -
+    // duplicate the second byte from the header (257 - n) times, n = 128 - end.
+    var repeatHeader = this.str.getBytes(2);
+    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {
+      this.eof = true;
+      return;
+    }
+
+    var buffer;
+    var bufferLength = this.bufferLength;
+    var n = repeatHeader[0];
+    if (n < 128) {
+      // copy n bytes
+      buffer = this.ensureBuffer(bufferLength + n + 1);
+      buffer[bufferLength++] = repeatHeader[1];
+      if (n > 0) {
+        var source = this.str.getBytes(n);
+        buffer.set(source, bufferLength);
+        bufferLength += n;
+      }
+    } else {
+      n = 257 - n;
+      var b = repeatHeader[1];
+      buffer = this.ensureBuffer(bufferLength + n + 1);
+      for (var i = 0; i < n; i++) {
+        buffer[bufferLength++] = b;
+      }
+    }
+    this.bufferLength = bufferLength;
+  };
+
+  return RunLengthStream;
+})();
+
+var CCITTFaxStream = (function CCITTFaxStreamClosure() {
+
+  var ccittEOL = -2;
+  var twoDimPass = 0;
+  var twoDimHoriz = 1;
+  var twoDimVert0 = 2;
+  var twoDimVertR1 = 3;
+  var twoDimVertL1 = 4;
+  var twoDimVertR2 = 5;
+  var twoDimVertL2 = 6;
+  var twoDimVertR3 = 7;
+  var twoDimVertL3 = 8;
+
+  var twoDimTable = [
+    [-1, -1], [-1, -1],                   // 000000x
+    [7, twoDimVertL3],                    // 0000010
+    [7, twoDimVertR3],                    // 0000011
+    [6, twoDimVertL2], [6, twoDimVertL2], // 000010x
+    [6, twoDimVertR2], [6, twoDimVertR2], // 000011x
+    [4, twoDimPass], [4, twoDimPass],     // 0001xxx
+    [4, twoDimPass], [4, twoDimPass],
+    [4, twoDimPass], [4, twoDimPass],
+    [4, twoDimPass], [4, twoDimPass],
+    [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0]
+  ];
+
+  var whiteTable1 = [
+    [-1, -1],                               // 00000
+    [12, ccittEOL],                         // 00001
+    [-1, -1], [-1, -1],                     // 0001x
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx
+    [11, 1792], [11, 1792],                 // 1000x
+    [12, 1984],                             // 10010
+    [12, 2048],                             // 10011
+    [12, 2112],                             // 10100
+    [12, 2176],                             // 10101
+    [12, 2240],                             // 10110
+    [12, 2304],                             // 10111
+    [11, 1856], [11, 1856],                 // 1100x
+    [11, 1920], [11, 1920],                 // 1101x
+    [12, 2368],                             // 11100
+    [12, 2432],                             // 11101
+    [12, 2496],                             // 11110
+    [12, 2560]                              // 11111
+  ];
+
+  var whiteTable2 = [
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx
+    [8, 29], [8, 29],                           // 00000010x
+    [8, 30], [8, 30],                           // 00000011x
+    [8, 45], [8, 45],                           // 00000100x
+    [8, 46], [8, 46],                           // 00000101x
+    [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx
+    [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx
+    [8, 47], [8, 47],                           // 00001010x
+    [8, 48], [8, 48],                           // 00001011x
+    [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx
+    [6, 13], [6, 13], [6, 13], [6, 13],
+    [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx
+    [8, 33], [8, 33],                           // 00010010x
+    [8, 34], [8, 34],                           // 00010011x
+    [8, 35], [8, 35],                           // 00010100x
+    [8, 36], [8, 36],                           // 00010101x
+    [8, 37], [8, 37],                           // 00010110x
+    [8, 38], [8, 38],                           // 00010111x
+    [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx
+    [8, 31], [8, 31],                           // 00011010x
+    [8, 32], [8, 32],                           // 00011011x
+    [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx
+    [6, 1], [6, 1], [6, 1], [6, 1],
+    [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx
+    [6, 12], [6, 12], [6, 12], [6, 12],
+    [8, 53], [8, 53],                           // 00100100x
+    [8, 54], [8, 54],                           // 00100101x
+    [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx
+    [8, 39], [8, 39],                           // 00101000x
+    [8, 40], [8, 40],                           // 00101001x
+    [8, 41], [8, 41],                           // 00101010x
+    [8, 42], [8, 42],                           // 00101011x
+    [8, 43], [8, 43],                           // 00101100x
+    [8, 44], [8, 44],                           // 00101101x
+    [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx
+    [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx
+    [8, 61], [8, 61],                           // 00110010x
+    [8, 62], [8, 62],                           // 00110011x
+    [8, 63], [8, 63],                           // 00110100x
+    [8, 0], [8, 0],                             // 00110101x
+    [8, 320], [8, 320],                         // 00110110x
+    [8, 384], [8, 384],                         // 00110111x
+    [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx
+    [5, 10], [5, 10], [5, 10], [5, 10],
+    [5, 10], [5, 10], [5, 10], [5, 10],
+    [5, 10], [5, 10], [5, 10], [5, 10],
+    [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx
+    [5, 11], [5, 11], [5, 11], [5, 11],
+    [5, 11], [5, 11], [5, 11], [5, 11],
+    [5, 11], [5, 11], [5, 11], [5, 11],
+    [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx
+    [8, 59], [8, 59],                           // 01001010x
+    [8, 60], [8, 60],                           // 01001011x
+    [9, 1472],                                  // 010011000
+    [9, 1536],                                  // 010011001
+    [9, 1600],                                  // 010011010
+    [9, 1728],                                  // 010011011
+    [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx
+    [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx
+    [8, 49], [8, 49],                           // 01010010x
+    [8, 50], [8, 50],                           // 01010011x
+    [8, 51], [8, 51],                           // 01010100x
+    [8, 52], [8, 52],                           // 01010101x
+    [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx
+    [8, 55], [8, 55],                           // 01011000x
+    [8, 56], [8, 56],                           // 01011001x
+    [8, 57], [8, 57],                           // 01011010x
+    [8, 58], [8, 58],                           // 01011011x
+    [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx
+    [6, 192], [6, 192], [6, 192], [6, 192],
+    [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx
+    [6, 1664], [6, 1664], [6, 1664], [6, 1664],
+    [8, 448], [8, 448],                         // 01100100x
+    [8, 512], [8, 512],                         // 01100101x
+    [9, 704],                                   // 011001100
+    [9, 768],                                   // 011001101
+    [8, 640], [8, 640],                         // 01100111x
+    [8, 576], [8, 576],                         // 01101000x
+    [9, 832],                                   // 011010010
+    [9, 896],                                   // 011010011
+    [9, 960],                                   // 011010100
+    [9, 1024],                                  // 011010101
+    [9, 1088],                                  // 011010110
+    [9, 1152],                                  // 011010111
+    [9, 1216],                                  // 011011000
+    [9, 1280],                                  // 011011001
+    [9, 1344],                                  // 011011010
+    [9, 1408],                                  // 011011011
+    [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx
+    [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx
+    [5, 128], [5, 128], [5, 128], [5, 128],
+    [5, 128], [5, 128], [5, 128], [5, 128],
+    [5, 128], [5, 128], [5, 128], [5, 128],
+    [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx
+    [5, 8], [5, 8], [5, 8], [5, 8],
+    [5, 8], [5, 8], [5, 8], [5, 8],
+    [5, 8], [5, 8], [5, 8], [5, 8],
+    [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx
+    [5, 9], [5, 9], [5, 9], [5, 9],
+    [5, 9], [5, 9], [5, 9], [5, 9],
+    [5, 9], [5, 9], [5, 9], [5, 9],
+    [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx
+    [6, 16], [6, 16], [6, 16], [6, 16],
+    [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx
+    [6, 17], [6, 17], [6, 17], [6, 17],
+    [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx
+    [6, 14], [6, 14], [6, 14], [6, 14],
+    [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx
+    [6, 15], [6, 15], [6, 15], [6, 15],
+    [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx
+    [5, 64], [5, 64], [5, 64], [5, 64],
+    [5, 64], [5, 64], [5, 64], [5, 64],
+    [5, 64], [5, 64], [5, 64], [5, 64],
+    [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7]
+  ];
+
+  var blackTable1 = [
+    [-1, -1], [-1, -1],                             // 000000000000x
+    [12, ccittEOL], [12, ccittEOL],                 // 000000000001x
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx
+    [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx
+    [12, 1984], [12, 1984],                         // 000000010010x
+    [12, 2048], [12, 2048],                         // 000000010011x
+    [12, 2112], [12, 2112],                         // 000000010100x
+    [12, 2176], [12, 2176],                         // 000000010101x
+    [12, 2240], [12, 2240],                         // 000000010110x
+    [12, 2304], [12, 2304],                         // 000000010111x
+    [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx
+    [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx
+    [12, 2368], [12, 2368],                         // 000000011100x
+    [12, 2432], [12, 2432],                         // 000000011101x
+    [12, 2496], [12, 2496],                         // 000000011110x
+    [12, 2560], [12, 2560],                         // 000000011111x
+    [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx
+    [10, 18], [10, 18], [10, 18], [10, 18],
+    [12, 52], [12, 52],                             // 000000100100x
+    [13, 640],                                      // 0000001001010
+    [13, 704],                                      // 0000001001011
+    [13, 768],                                      // 0000001001100
+    [13, 832],                                      // 0000001001101
+    [12, 55], [12, 55],                             // 000000100111x
+    [12, 56], [12, 56],                             // 000000101000x
+    [13, 1280],                                     // 0000001010010
+    [13, 1344],                                     // 0000001010011
+    [13, 1408],                                     // 0000001010100
+    [13, 1472],                                     // 0000001010101
+    [12, 59], [12, 59],                             // 000000101011x
+    [12, 60], [12, 60],                             // 000000101100x
+    [13, 1536],                                     // 0000001011010
+    [13, 1600],                                     // 0000001011011
+    [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx
+    [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx
+    [13, 1664],                                     // 0000001100100
+    [13, 1728],                                     // 0000001100101
+    [12, 320], [12, 320],                           // 000000110011x
+    [12, 384], [12, 384],                           // 000000110100x
+    [12, 448], [12, 448],                           // 000000110101x
+    [13, 512],                                      // 0000001101100
+    [13, 576],                                      // 0000001101101
+    [12, 53], [12, 53],                             // 000000110111x
+    [12, 54], [12, 54],                             // 000000111000x
+    [13, 896],                                      // 0000001110010
+    [13, 960],                                      // 0000001110011
+    [13, 1024],                                     // 0000001110100
+    [13, 1088],                                     // 0000001110101
+    [13, 1152],                                     // 0000001110110
+    [13, 1216],                                     // 0000001110111
+    [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx
+    [10, 64], [10, 64], [10, 64], [10, 64]
+  ];
+
+  var blackTable2 = [
+    [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx
+    [8, 13], [8, 13], [8, 13], [8, 13],
+    [8, 13], [8, 13], [8, 13], [8, 13],
+    [8, 13], [8, 13], [8, 13], [8, 13],
+    [11, 23], [11, 23],                     // 00000101000x
+    [12, 50],                               // 000001010010
+    [12, 51],                               // 000001010011
+    [12, 44],                               // 000001010100
+    [12, 45],                               // 000001010101
+    [12, 46],                               // 000001010110
+    [12, 47],                               // 000001010111
+    [12, 57],                               // 000001011000
+    [12, 58],                               // 000001011001
+    [12, 61],                               // 000001011010
+    [12, 256],                              // 000001011011
+    [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx
+    [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx
+    [12, 48],                               // 000001100100
+    [12, 49],                               // 000001100101
+    [12, 62],                               // 000001100110
+    [12, 63],                               // 000001100111
+    [12, 30],                               // 000001101000
+    [12, 31],                               // 000001101001
+    [12, 32],                               // 000001101010
+    [12, 33],                               // 000001101011
+    [12, 40],                               // 000001101100
+    [12, 41],                               // 000001101101
+    [11, 22], [11, 22],                     // 00000110111x
+    [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx
+    [8, 14], [8, 14], [8, 14], [8, 14],
+    [8, 14], [8, 14], [8, 14], [8, 14],
+    [8, 14], [8, 14], [8, 14], [8, 14],
+    [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx
+    [9, 15], [9, 15], [9, 15], [9, 15],
+    [12, 128],                              // 000011001000
+    [12, 192],                              // 000011001001
+    [12, 26],                               // 000011001010
+    [12, 27],                               // 000011001011
+    [12, 28],                               // 000011001100
+    [12, 29],                               // 000011001101
+    [11, 19], [11, 19],                     // 00001100111x
+    [11, 20], [11, 20],                     // 00001101000x
+    [12, 34],                               // 000011010010
+    [12, 35],                               // 000011010011
+    [12, 36],                               // 000011010100
+    [12, 37],                               // 000011010101
+    [12, 38],                               // 000011010110
+    [12, 39],                               // 000011010111
+    [11, 21], [11, 21],                     // 00001101100x
+    [12, 42],                               // 000011011010
+    [12, 43],                               // 000011011011
+    [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx
+    [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12]
+  ];
+
+  var blackTable3 = [
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx
+    [6, 9],                                 // 000100
+    [6, 8],                                 // 000101
+    [5, 7], [5, 7],                         // 00011x
+    [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx
+    [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx
+    [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx
+    [3, 1], [3, 1], [3, 1], [3, 1],
+    [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx
+    [3, 4], [3, 4], [3, 4], [3, 4],
+    [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx
+    [2, 3], [2, 3], [2, 3], [2, 3],
+    [2, 3], [2, 3], [2, 3], [2, 3],
+    [2, 3], [2, 3], [2, 3], [2, 3],
+    [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx
+    [2, 2], [2, 2], [2, 2], [2, 2],
+    [2, 2], [2, 2], [2, 2], [2, 2],
+    [2, 2], [2, 2], [2, 2], [2, 2]
+  ];
+
+  function CCITTFaxStream(str, maybeLength, params) {
+    this.str = str;
+    this.dict = str.dict;
+
+    params = params || Dict.empty;
+
+    this.encoding = params.get('K') || 0;
+    this.eoline = params.get('EndOfLine') || false;
+    this.byteAlign = params.get('EncodedByteAlign') || false;
+    this.columns = params.get('Columns') || 1728;
+    this.rows = params.get('Rows') || 0;
+    var eoblock = params.get('EndOfBlock');
+    if (eoblock === null || eoblock === undefined) {
+      eoblock = true;
+    }
+    this.eoblock = eoblock;
+    this.black = params.get('BlackIs1') || false;
+
+    this.codingLine = new Uint32Array(this.columns + 1);
+    this.refLine = new Uint32Array(this.columns + 2);
+
+    this.codingLine[0] = this.columns;
+    this.codingPos = 0;
+
+    this.row = 0;
+    this.nextLine2D = this.encoding < 0;
+    this.inputBits = 0;
+    this.inputBuf = 0;
+    this.outputBits = 0;
+
+    var code1;
+    while ((code1 = this.lookBits(12)) === 0) {
+      this.eatBits(1);
+    }
+    if (code1 === 1) {
+      this.eatBits(12);
+    }
+    if (this.encoding > 0) {
+      this.nextLine2D = !this.lookBits(1);
+      this.eatBits(1);
+    }
+
+    DecodeStream.call(this, maybeLength);
+  }
+
+  CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);
+
+  CCITTFaxStream.prototype.readBlock = function CCITTFaxStream_readBlock() {
+    while (!this.eof) {
+      var c = this.lookChar();
+      this.ensureBuffer(this.bufferLength + 1);
+      this.buffer[this.bufferLength++] = c;
+    }
+  };
+
+  CCITTFaxStream.prototype.addPixels =
+      function ccittFaxStreamAddPixels(a1, blackPixels) {
+    var codingLine = this.codingLine;
+    var codingPos = this.codingPos;
+
+    if (a1 > codingLine[codingPos]) {
+      if (a1 > this.columns) {
+        info('row is wrong length');
+        this.err = true;
+        a1 = this.columns;
+      }
+      if ((codingPos & 1) ^ blackPixels) {
+        ++codingPos;
+      }
+
+      codingLine[codingPos] = a1;
+    }
+    this.codingPos = codingPos;
+  };
+
+  CCITTFaxStream.prototype.addPixelsNeg =
+      function ccittFaxStreamAddPixelsNeg(a1, blackPixels) {
+    var codingLine = this.codingLine;
+    var codingPos = this.codingPos;
+
+    if (a1 > codingLine[codingPos]) {
+      if (a1 > this.columns) {
+        info('row is wrong length');
+        this.err = true;
+        a1 = this.columns;
+      }
+      if ((codingPos & 1) ^ blackPixels) {
+        ++codingPos;
+      }
+
+      codingLine[codingPos] = a1;
+    } else if (a1 < codingLine[codingPos]) {
+      if (a1 < 0) {
+        info('invalid code');
+        this.err = true;
+        a1 = 0;
+      }
+      while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {
+        --codingPos;
+      }
+      codingLine[codingPos] = a1;
+    }
+
+    this.codingPos = codingPos;
+  };
+
+  CCITTFaxStream.prototype.lookChar = function CCITTFaxStream_lookChar() {
+    var refLine = this.refLine;
+    var codingLine = this.codingLine;
+    var columns = this.columns;
+
+    var refPos, blackPixels, bits, i;
+
+    if (this.outputBits === 0) {
+      if (this.eof) {
+        return null;
+      }
+      this.err = false;
+
+      var code1, code2, code3;
+      if (this.nextLine2D) {
+        for (i = 0; codingLine[i] < columns; ++i) {
+          refLine[i] = codingLine[i];
+        }
+        refLine[i++] = columns;
+        refLine[i] = columns;
+        codingLine[0] = 0;
+        this.codingPos = 0;
+        refPos = 0;
+        blackPixels = 0;
+
+        while (codingLine[this.codingPos] < columns) {
+          code1 = this.getTwoDimCode();
+          switch (code1) {
+            case twoDimPass:
+              this.addPixels(refLine[refPos + 1], blackPixels);
+              if (refLine[refPos + 1] < columns) {
+                refPos += 2;
+              }
+              break;
+            case twoDimHoriz:
+              code1 = code2 = 0;
+              if (blackPixels) {
+                do {
+                  code1 += (code3 = this.getBlackCode());
+                } while (code3 >= 64);
+                do {
+                  code2 += (code3 = this.getWhiteCode());
+                } while (code3 >= 64);
+              } else {
+                do {
+                  code1 += (code3 = this.getWhiteCode());
+                } while (code3 >= 64);
+                do {
+                  code2 += (code3 = this.getBlackCode());
+                } while (code3 >= 64);
+              }
+              this.addPixels(codingLine[this.codingPos] +
+                             code1, blackPixels);
+              if (codingLine[this.codingPos] < columns) {
+                this.addPixels(codingLine[this.codingPos] + code2,
+                               blackPixels ^ 1);
+              }
+              while (refLine[refPos] <= codingLine[this.codingPos] &&
+                     refLine[refPos] < columns) {
+                refPos += 2;
+              }
+              break;
+            case twoDimVertR3:
+              this.addPixels(refLine[refPos] + 3, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+              break;
+            case twoDimVertR2:
+              this.addPixels(refLine[refPos] + 2, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+              break;
+            case twoDimVertR1:
+              this.addPixels(refLine[refPos] + 1, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+              break;
+            case twoDimVert0:
+              this.addPixels(refLine[refPos], blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+              break;
+            case twoDimVertL3:
+              this.addPixelsNeg(refLine[refPos] - 3, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0) {
+                  --refPos;
+                } else {
+                  ++refPos;
+                }
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+              break;
+            case twoDimVertL2:
+              this.addPixelsNeg(refLine[refPos] - 2, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0) {
+                  --refPos;
+                } else {
+                  ++refPos;
+                }
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+              break;
+            case twoDimVertL1:
+              this.addPixelsNeg(refLine[refPos] - 1, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0) {
+                  --refPos;
+                } else {
+                  ++refPos;
+                }
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+              break;
+            case EOF:
+              this.addPixels(columns, 0);
+              this.eof = true;
+              break;
+            default:
+              info('bad 2d code');
+              this.addPixels(columns, 0);
+              this.err = true;
+          }
+        }
+      } else {
+        codingLine[0] = 0;
+        this.codingPos = 0;
+        blackPixels = 0;
+        while (codingLine[this.codingPos] < columns) {
+          code1 = 0;
+          if (blackPixels) {
+            do {
+              code1 += (code3 = this.getBlackCode());
+            } while (code3 >= 64);
+          } else {
+            do {
+              code1 += (code3 = this.getWhiteCode());
+            } while (code3 >= 64);
+          }
+          this.addPixels(codingLine[this.codingPos] + code1, blackPixels);
+          blackPixels ^= 1;
+        }
+      }
+
+      var gotEOL = false;
+
+      if (this.byteAlign) {
+        this.inputBits &= ~7;
+      }
+
+      if (!this.eoblock && this.row === this.rows - 1) {
+        this.eof = true;
+      } else {
+        code1 = this.lookBits(12);
+        if (this.eoline) {
+          while (code1 !== EOF && code1 !== 1) {
+            this.eatBits(1);
+            code1 = this.lookBits(12);
+          }
+        } else {
+          while (code1 === 0) {
+            this.eatBits(1);
+            code1 = this.lookBits(12);
+          }
+        }
+        if (code1 === 1) {
+          this.eatBits(12);
+          gotEOL = true;
+        } else if (code1 === EOF) {
+          this.eof = true;
+        }
+      }
+
+      if (!this.eof && this.encoding > 0) {
+        this.nextLine2D = !this.lookBits(1);
+        this.eatBits(1);
+      }
+
+      if (this.eoblock && gotEOL && this.byteAlign) {
+        code1 = this.lookBits(12);
+        if (code1 === 1) {
+          this.eatBits(12);
+          if (this.encoding > 0) {
+            this.lookBits(1);
+            this.eatBits(1);
+          }
+          if (this.encoding >= 0) {
+            for (i = 0; i < 4; ++i) {
+              code1 = this.lookBits(12);
+              if (code1 !== 1) {
+                info('bad rtc code: ' + code1);
+              }
+              this.eatBits(12);
+              if (this.encoding > 0) {
+                this.lookBits(1);
+                this.eatBits(1);
+              }
+            }
+          }
+          this.eof = true;
+        }
+      } else if (this.err && this.eoline) {
+        while (true) {
+          code1 = this.lookBits(13);
+          if (code1 === EOF) {
+            this.eof = true;
+            return null;
+          }
+          if ((code1 >> 1) === 1) {
+            break;
+          }
+          this.eatBits(1);
+        }
+        this.eatBits(12);
+        if (this.encoding > 0) {
+          this.eatBits(1);
+          this.nextLine2D = !(code1 & 1);
+        }
+      }
+
+      if (codingLine[0] > 0) {
+        this.outputBits = codingLine[this.codingPos = 0];
+      } else {
+        this.outputBits = codingLine[this.codingPos = 1];
+      }
+      this.row++;
+    }
+
+    var c;
+    if (this.outputBits >= 8) {
+      c = (this.codingPos & 1) ? 0 : 0xFF;
+      this.outputBits -= 8;
+      if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {
+        this.codingPos++;
+        this.outputBits = (codingLine[this.codingPos] -
+                           codingLine[this.codingPos - 1]);
+      }
+    } else {
+      bits = 8;
+      c = 0;
+      do {
+        if (this.outputBits > bits) {
+          c <<= bits;
+          if (!(this.codingPos & 1)) {
+            c |= 0xFF >> (8 - bits);
+          }
+          this.outputBits -= bits;
+          bits = 0;
+        } else {
+          c <<= this.outputBits;
+          if (!(this.codingPos & 1)) {
+            c |= 0xFF >> (8 - this.outputBits);
+          }
+          bits -= this.outputBits;
+          this.outputBits = 0;
+          if (codingLine[this.codingPos] < columns) {
+            this.codingPos++;
+            this.outputBits = (codingLine[this.codingPos] -
+                               codingLine[this.codingPos - 1]);
+          } else if (bits > 0) {
+            c <<= bits;
+            bits = 0;
+          }
+        }
+      } while (bits);
+    }
+    if (this.black) {
+      c ^= 0xFF;
+    }
+    return c;
+  };
+
+  // This functions returns the code found from the table.
+  // The start and end parameters set the boundaries for searching the table.
+  // The limit parameter is optional. Function returns an array with three
+  // values. The first array element indicates whether a valid code is being
+  // returned. The second array element is the actual code. The third array
+  // element indicates whether EOF was reached.
+  CCITTFaxStream.prototype.findTableCode =
+      function ccittFaxStreamFindTableCode(start, end, table, limit) {
+
+    var limitValue = limit || 0;
+    for (var i = start; i <= end; ++i) {
+      var code = this.lookBits(i);
+      if (code === EOF) {
+        return [true, 1, false];
+      }
+      if (i < end) {
+        code <<= end - i;
+      }
+      if (!limitValue || code >= limitValue) {
+        var p = table[code - limitValue];
+        if (p[0] === i) {
+          this.eatBits(i);
+          return [true, p[1], true];
+        }
+      }
+    }
+    return [false, 0, false];
+  };
+
+  CCITTFaxStream.prototype.getTwoDimCode =
+      function ccittFaxStreamGetTwoDimCode() {
+
+    var code = 0;
+    var p;
+    if (this.eoblock) {
+      code = this.lookBits(7);
+      p = twoDimTable[code];
+      if (p && p[0] > 0) {
+        this.eatBits(p[0]);
+        return p[1];
+      }
+    } else {
+      var result = this.findTableCode(1, 7, twoDimTable);
+      if (result[0] && result[2]) {
+        return result[1];
+      }
+    }
+    info('Bad two dim code');
+    return EOF;
+  };
+
+  CCITTFaxStream.prototype.getWhiteCode =
+      function ccittFaxStreamGetWhiteCode() {
+
+    var code = 0;
+    var p;
+    if (this.eoblock) {
+      code = this.lookBits(12);
+      if (code === EOF) {
+        return 1;
+      }
+
+      if ((code >> 5) === 0) {
+        p = whiteTable1[code];
+      } else {
+        p = whiteTable2[code >> 3];
+      }
+
+      if (p[0] > 0) {
+        this.eatBits(p[0]);
+        return p[1];
+      }
+    } else {
+      var result = this.findTableCode(1, 9, whiteTable2);
+      if (result[0]) {
+        return result[1];
+      }
+
+      result = this.findTableCode(11, 12, whiteTable1);
+      if (result[0]) {
+        return result[1];
+      }
+    }
+    info('bad white code');
+    this.eatBits(1);
+    return 1;
+  };
+
+  CCITTFaxStream.prototype.getBlackCode =
+      function ccittFaxStreamGetBlackCode() {
+
+    var code, p;
+    if (this.eoblock) {
+      code = this.lookBits(13);
+      if (code === EOF) {
+        return 1;
+      }
+      if ((code >> 7) === 0) {
+        p = blackTable1[code];
+      } else if ((code >> 9) === 0 && (code >> 7) !== 0) {
+        p = blackTable2[(code >> 1) - 64];
+      } else {
+        p = blackTable3[code >> 7];
+      }
+
+      if (p[0] > 0) {
+        this.eatBits(p[0]);
+        return p[1];
+      }
+    } else {
+      var result = this.findTableCode(2, 6, blackTable3);
+      if (result[0]) {
+        return result[1];
+      }
+
+      result = this.findTableCode(7, 12, blackTable2, 64);
+      if (result[0]) {
+        return result[1];
+      }
+
+      result = this.findTableCode(10, 13, blackTable1);
+      if (result[0]) {
+        return result[1];
+      }
+    }
+    info('bad black code');
+    this.eatBits(1);
+    return 1;
+  };
+
+  CCITTFaxStream.prototype.lookBits = function CCITTFaxStream_lookBits(n) {
+    var c;
+    while (this.inputBits < n) {
+      if ((c = this.str.getByte()) === -1) {
+        if (this.inputBits === 0) {
+          return EOF;
+        }
+        return ((this.inputBuf << (n - this.inputBits)) &
+                (0xFFFF >> (16 - n)));
+      }
+      this.inputBuf = (this.inputBuf << 8) + c;
+      this.inputBits += 8;
+    }
+    return (this.inputBuf >> (this.inputBits - n)) & (0xFFFF >> (16 - n));
+  };
+
+  CCITTFaxStream.prototype.eatBits = function CCITTFaxStream_eatBits(n) {
+    if ((this.inputBits -= n) < 0) {
+      this.inputBits = 0;
+    }
+  };
+
+  return CCITTFaxStream;
+})();
+
+var LZWStream = (function LZWStreamClosure() {
+  function LZWStream(str, maybeLength, earlyChange) {
+    this.str = str;
+    this.dict = str.dict;
+    this.cachedData = 0;
+    this.bitsCached = 0;
+
+    var maxLzwDictionarySize = 4096;
+    var lzwState = {
+      earlyChange: earlyChange,
+      codeLength: 9,
+      nextCode: 258,
+      dictionaryValues: new Uint8Array(maxLzwDictionarySize),
+      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),
+      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),
+      currentSequence: new Uint8Array(maxLzwDictionarySize),
+      currentSequenceLength: 0
+    };
+    for (var i = 0; i < 256; ++i) {
+      lzwState.dictionaryValues[i] = i;
+      lzwState.dictionaryLengths[i] = 1;
+    }
+    this.lzwState = lzwState;
+
+    DecodeStream.call(this, maybeLength);
+  }
+
+  LZWStream.prototype = Object.create(DecodeStream.prototype);
+
+  LZWStream.prototype.readBits = function LZWStream_readBits(n) {
+    var bitsCached = this.bitsCached;
+    var cachedData = this.cachedData;
+    while (bitsCached < n) {
+      var c = this.str.getByte();
+      if (c === -1) {
+        this.eof = true;
+        return null;
+      }
+      cachedData = (cachedData << 8) | c;
+      bitsCached += 8;
+    }
+    this.bitsCached = (bitsCached -= n);
+    this.cachedData = cachedData;
+    this.lastCode = null;
+    return (cachedData >>> bitsCached) & ((1 << n) - 1);
+  };
+
+  LZWStream.prototype.readBlock = function LZWStream_readBlock() {
+    var blockSize = 512;
+    var estimatedDecodedSize = blockSize * 2, decodedSizeDelta = blockSize;
+    var i, j, q;
+
+    var lzwState = this.lzwState;
+    if (!lzwState) {
+      return; // eof was found
+    }
+
+    var earlyChange = lzwState.earlyChange;
+    var nextCode = lzwState.nextCode;
+    var dictionaryValues = lzwState.dictionaryValues;
+    var dictionaryLengths = lzwState.dictionaryLengths;
+    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;
+    var codeLength = lzwState.codeLength;
+    var prevCode = lzwState.prevCode;
+    var currentSequence = lzwState.currentSequence;
+    var currentSequenceLength = lzwState.currentSequenceLength;
+
+    var decodedLength = 0;
+    var currentBufferLength = this.bufferLength;
+    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
+
+    for (i = 0; i < blockSize; i++) {
+      var code = this.readBits(codeLength);
+      var hasPrev = currentSequenceLength > 0;
+      if (code < 256) {
+        currentSequence[0] = code;
+        currentSequenceLength = 1;
+      } else if (code >= 258) {
+        if (code < nextCode) {
+          currentSequenceLength = dictionaryLengths[code];
+          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {
+            currentSequence[j] = dictionaryValues[q];
+            q = dictionaryPrevCodes[q];
+          }
+        } else {
+          currentSequence[currentSequenceLength++] = currentSequence[0];
+        }
+      } else if (code === 256) {
+        codeLength = 9;
+        nextCode = 258;
+        currentSequenceLength = 0;
+        continue;
+      } else {
+        this.eof = true;
+        delete this.lzwState;
+        break;
+      }
+
+      if (hasPrev) {
+        dictionaryPrevCodes[nextCode] = prevCode;
+        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;
+        dictionaryValues[nextCode] = currentSequence[0];
+        nextCode++;
+        codeLength = (nextCode + earlyChange) & (nextCode + earlyChange - 1) ?
+          codeLength : Math.min(Math.log(nextCode + earlyChange) /
+          0.6931471805599453 + 1, 12) | 0;
+      }
+      prevCode = code;
+
+      decodedLength += currentSequenceLength;
+      if (estimatedDecodedSize < decodedLength) {
+        do {
+          estimatedDecodedSize += decodedSizeDelta;
+        } while (estimatedDecodedSize < decodedLength);
+        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
+      }
+      for (j = 0; j < currentSequenceLength; j++) {
+        buffer[currentBufferLength++] = currentSequence[j];
+      }
+    }
+    lzwState.nextCode = nextCode;
+    lzwState.codeLength = codeLength;
+    lzwState.prevCode = prevCode;
+    lzwState.currentSequenceLength = currentSequenceLength;
+
+    this.bufferLength = currentBufferLength;
+  };
+
+  return LZWStream;
+})();
+
+var NullStream = (function NullStreamClosure() {
+  function NullStream() {
+    Stream.call(this, new Uint8Array(0));
+  }
+
+  NullStream.prototype = Stream.prototype;
+
+  return NullStream;
+})();
+
+
+var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
+  setup: function wphSetup(handler) {
+    var pdfManager;
+
+    function loadDocument(recoveryMode) {
+      var loadDocumentCapability = createPromiseCapability();
+
+      var parseSuccess = function parseSuccess() {
+        var numPagesPromise = pdfManager.ensureDoc('numPages');
+        var fingerprintPromise = pdfManager.ensureDoc('fingerprint');
+        var encryptedPromise = pdfManager.ensureXRef('encrypt');
+        Promise.all([numPagesPromise, fingerprintPromise,
+                     encryptedPromise]).then(function onDocReady(results) {
+          var doc = {
+            numPages: results[0],
+            fingerprint: results[1],
+            encrypted: !!results[2],
+          };
+          loadDocumentCapability.resolve(doc);
+        },
+        parseFailure);
+      };
+
+      var parseFailure = function parseFailure(e) {
+        loadDocumentCapability.reject(e);
+      };
+
+      pdfManager.ensureDoc('checkHeader', []).then(function() {
+        pdfManager.ensureDoc('parseStartXRef', []).then(function() {
+          pdfManager.ensureDoc('parse', [recoveryMode]).then(
+            parseSuccess, parseFailure);
+        }, parseFailure);
+      }, parseFailure);
+
+      return loadDocumentCapability.promise;
+    }
+
+    function getPdfManager(data) {
+      var pdfManagerCapability = createPromiseCapability();
+
+      var source = data.source;
+      var disableRange = data.disableRange;
+      if (source.data) {
+        try {
+          pdfManager = new LocalPdfManager(source.data, source.password);
+          pdfManagerCapability.resolve();
+        } catch (ex) {
+          pdfManagerCapability.reject(ex);
+        }
+        return pdfManagerCapability.promise;
+      } else if (source.chunkedViewerLoading) {
+        try {
+          pdfManager = new NetworkPdfManager(source, handler);
+          pdfManagerCapability.resolve();
+        } catch (ex) {
+          pdfManagerCapability.reject(ex);
+        }
+        return pdfManagerCapability.promise;
+      }
+
+      var networkManager = new NetworkManager(source.url, {
+        httpHeaders: source.httpHeaders,
+        withCredentials: source.withCredentials
+      });
+      var cachedChunks = [];
+      var fullRequestXhrId = networkManager.requestFull({
+        onHeadersReceived: function onHeadersReceived() {
+          if (disableRange) {
+            return;
+          }
+
+          var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId);
+          if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') {
+            return;
+          }
+
+          var contentEncoding =
+            fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity';
+          if (contentEncoding !== 'identity') {
+            return;
+          }
+
+          var length = fullRequestXhr.getResponseHeader('Content-Length');
+          length = parseInt(length, 10);
+          if (!isInt(length)) {
+            return;
+          }
+          source.length = length;
+          if (length <= 2 * RANGE_CHUNK_SIZE) {
+            // The file size is smaller than the size of two chunks, so it does
+            // not make any sense to abort the request and retry with a range
+            // request.
+            return;
+          }
+
+          if (networkManager.isStreamingRequest(fullRequestXhrId)) {
+            // We can continue fetching when progressive loading is enabled,
+            // and we don't need the autoFetch feature.
+            source.disableAutoFetch = true;
+          } else {
+            // NOTE: by cancelling the full request, and then issuing range
+            // requests, there will be an issue for sites where you can only
+            // request the pdf once. However, if this is the case, then the
+            // server should not be returning that it can support range
+            // requests.
+            networkManager.abortRequest(fullRequestXhrId);
+          }
+
+          try {
+            pdfManager = new NetworkPdfManager(source, handler);
+            pdfManagerCapability.resolve(pdfManager);
+          } catch (ex) {
+            pdfManagerCapability.reject(ex);
+          }
+        },
+
+        onProgressiveData: source.disableStream ? null :
+            function onProgressiveData(chunk) {
+          if (!pdfManager) {
+            cachedChunks.push(chunk);
+            return;
+          }
+          pdfManager.sendProgressiveData(chunk);
+        },
+
+        onDone: function onDone(args) {
+          if (pdfManager) {
+            return; // already processed
+          }
+
+          var pdfFile;
+          if (args === null) {
+            // TODO add some streaming manager, e.g. for unknown length files.
+            // The data was returned in the onProgressiveData, combining...
+            var pdfFileLength = 0, pos = 0;
+            cachedChunks.forEach(function (chunk) {
+              pdfFileLength += chunk.byteLength;
+            });
+            if (source.length && pdfFileLength !== source.length) {
+              warn('reported HTTP length is different from actual');
+            }
+            var pdfFileArray = new Uint8Array(pdfFileLength);
+            cachedChunks.forEach(function (chunk) {
+              pdfFileArray.set(new Uint8Array(chunk), pos);
+              pos += chunk.byteLength;
+            });
+            pdfFile = pdfFileArray.buffer;
+          } else {
+            pdfFile = args.chunk;
+          }
+
+          // the data is array, instantiating directly from it
+          try {
+            pdfManager = new LocalPdfManager(pdfFile, source.password);
+            pdfManagerCapability.resolve();
+          } catch (ex) {
+            pdfManagerCapability.reject(ex);
+          }
+        },
+
+        onError: function onError(status) {
+          var exception;
+          if (status === 404) {
+            exception = new MissingPDFException('Missing PDF "' +
+                                                source.url + '".');
+            handler.send('MissingPDF', exception);
+          } else {
+            exception = new UnexpectedResponseException(
+              'Unexpected server response (' + status +
+              ') while retrieving PDF "' + source.url + '".', status);
+            handler.send('UnexpectedResponse', exception);
+          }
+        },
+
+        onProgress: function onProgress(evt) {
+          handler.send('DocProgress', {
+            loaded: evt.loaded,
+            total: evt.lengthComputable ? evt.total : source.length
+          });
+        }
+      });
+
+      return pdfManagerCapability.promise;
+    }
+
+    handler.on('test', function wphSetupTest(data) {
+      // check if Uint8Array can be sent to worker
+      if (!(data instanceof Uint8Array)) {
+        handler.send('test', false);
+        return;
+      }
+      // making sure postMessage transfers are working
+      var supportTransfers = data[0] === 255;
+      handler.postMessageTransfers = supportTransfers;
+      // check if the response property is supported by xhr
+      var xhr = new XMLHttpRequest();
+      var responseExists = 'response' in xhr;
+      // check if the property is actually implemented
+      try {
+        var dummy = xhr.responseType;
+      } catch (e) {
+        responseExists = false;
+      }
+      if (!responseExists) {
+        handler.send('test', false);
+        return;
+      }
+      handler.send('test', {
+        supportTypedArray: true,
+        supportTransfers: supportTransfers
+      });
+    });
+
+    handler.on('GetDocRequest', function wphSetupDoc(data) {
+
+      var onSuccess = function(doc) {
+        handler.send('GetDoc', { pdfInfo: doc });
+      };
+
+      var onFailure = function(e) {
+        if (e instanceof PasswordException) {
+          if (e.code === PasswordResponses.NEED_PASSWORD) {
+            handler.send('NeedPassword', e);
+          } else if (e.code === PasswordResponses.INCORRECT_PASSWORD) {
+            handler.send('IncorrectPassword', e);
+          }
+        } else if (e instanceof InvalidPDFException) {
+          handler.send('InvalidPDF', e);
+        } else if (e instanceof MissingPDFException) {
+          handler.send('MissingPDF', e);
+        } else if (e instanceof UnexpectedResponseException) {
+          handler.send('UnexpectedResponse', e);
+        } else {
+          handler.send('UnknownError',
+                       new UnknownErrorException(e.message, e.toString()));
+        }
+      };
+
+      PDFJS.maxImageSize = data.maxImageSize === undefined ?
+                           -1 : data.maxImageSize;
+      PDFJS.disableFontFace = data.disableFontFace;
+      PDFJS.disableCreateObjectURL = data.disableCreateObjectURL;
+      PDFJS.verbosity = data.verbosity;
+      PDFJS.cMapUrl = data.cMapUrl === undefined ?
+                           null : data.cMapUrl;
+      PDFJS.cMapPacked = data.cMapPacked === true;
+
+      getPdfManager(data).then(function () {
+        handler.send('PDFManagerReady', null);
+        pdfManager.onLoadedStream().then(function(stream) {
+          handler.send('DataLoaded', { length: stream.bytes.byteLength });
+        });
+      }).then(function pdfManagerReady() {
+        loadDocument(false).then(onSuccess, function loadFailure(ex) {
+          // Try again with recoveryMode == true
+          if (!(ex instanceof XRefParseException)) {
+            if (ex instanceof PasswordException) {
+              // after password exception prepare to receive a new password
+              // to repeat loading
+              pdfManager.passwordChanged().then(pdfManagerReady);
+            }
+
+            onFailure(ex);
+            return;
+          }
+
+          pdfManager.requestLoadedStream();
+          pdfManager.onLoadedStream().then(function() {
+            loadDocument(true).then(onSuccess, onFailure);
+          });
+        }, onFailure);
+      }, onFailure);
+    });
+
+    handler.on('GetPage', function wphSetupGetPage(data) {
+      return pdfManager.getPage(data.pageIndex).then(function(page) {
+        var rotatePromise = pdfManager.ensure(page, 'rotate');
+        var refPromise = pdfManager.ensure(page, 'ref');
+        var viewPromise = pdfManager.ensure(page, 'view');
+
+        return Promise.all([rotatePromise, refPromise, viewPromise]).then(
+            function(results) {
+          return {
+            rotate: results[0],
+            ref: results[1],
+            view: results[2]
+          };
+        });
+      });
+    });
+
+    handler.on('GetPageIndex', function wphSetupGetPageIndex(data) {
+      var ref = new Ref(data.ref.num, data.ref.gen);
+      var catalog = pdfManager.pdfDocument.catalog;
+      return catalog.getPageIndex(ref);
+    });
+
+    handler.on('GetDestinations',
+      function wphSetupGetDestinations(data) {
+        return pdfManager.ensureCatalog('destinations');
+      }
+    );
+
+    handler.on('GetDestination',
+      function wphSetupGetDestination(data) {
+        return pdfManager.ensureCatalog('getDestination', [ data.id ]);
+      }
+    );
+
+    handler.on('GetAttachments',
+      function wphSetupGetAttachments(data) {
+        return pdfManager.ensureCatalog('attachments');
+      }
+    );
+
+    handler.on('GetJavaScript',
+      function wphSetupGetJavaScript(data) {
+        return pdfManager.ensureCatalog('javaScript');
+      }
+    );
+
+    handler.on('GetOutline',
+      function wphSetupGetOutline(data) {
+        return pdfManager.ensureCatalog('documentOutline');
+      }
+    );
+
+    handler.on('GetMetadata',
+      function wphSetupGetMetadata(data) {
+        return Promise.all([pdfManager.ensureDoc('documentInfo'),
+                            pdfManager.ensureCatalog('metadata')]);
+      }
+    );
+
+    handler.on('GetData', function wphSetupGetData(data) {
+      pdfManager.requestLoadedStream();
+      return pdfManager.onLoadedStream().then(function(stream) {
+        return stream.bytes;
+      });
+    });
+
+    handler.on('GetStats',
+      function wphSetupGetStats(data) {
+        return pdfManager.pdfDocument.xref.stats;
+      }
+    );
+
+    handler.on('UpdatePassword', function wphSetupUpdatePassword(data) {
+      pdfManager.updatePassword(data);
+    });
+
+    handler.on('GetAnnotations', function wphSetupGetAnnotations(data) {
+      return pdfManager.getPage(data.pageIndex).then(function(page) {
+        return pdfManager.ensure(page, 'getAnnotationsData', []);
+      });
+    });
+
+    handler.on('RenderPageRequest', function wphSetupRenderPage(data) {
+      pdfManager.getPage(data.pageIndex).then(function(page) {
+
+        var pageNum = data.pageIndex + 1;
+        var start = Date.now();
+        // Pre compile the pdf page and fetch the fonts/images.
+        page.getOperatorList(handler, data.intent).then(function(operatorList) {
+
+          info('page=' + pageNum + ' - getOperatorList: time=' +
+               (Date.now() - start) + 'ms, len=' + operatorList.fnArray.length);
+
+        }, function(e) {
+
+          var minimumStackMessage =
+            'worker.js: while trying to getPage() and getOperatorList()';
+
+          var wrappedException;
+
+          // Turn the error into an obj that can be serialized
+          if (typeof e === 'string') {
+            wrappedException = {
+              message: e,
+              stack: minimumStackMessage
+            };
+          } else if (typeof e === 'object') {
+            wrappedException = {
+              message: e.message || e.toString(),
+              stack: e.stack || minimumStackMessage
+            };
+          } else {
+            wrappedException = {
+              message: 'Unknown exception type: ' + (typeof e),
+              stack: minimumStackMessage
+            };
+          }
+
+          handler.send('PageError', {
+            pageNum: pageNum,
+            error: wrappedException,
+            intent: data.intent
+          });
+        });
+      });
+    }, this);
+
+    handler.on('GetTextContent', function wphExtractText(data) {
+      return pdfManager.getPage(data.pageIndex).then(function(page) {
+        var pageNum = data.pageIndex + 1;
+        var start = Date.now();
+        return page.extractTextContent().then(function(textContent) {
+          info('text indexing: page=' + pageNum + ' - time=' +
+               (Date.now() - start) + 'ms');
+          return textContent;
+        });
+      });
+    });
+
+    handler.on('Cleanup', function wphCleanup(data) {
+      return pdfManager.cleanup();
+    });
+
+    handler.on('Terminate', function wphTerminate(data) {
+      pdfManager.terminate();
+    });
+  }
+};
+
+var consoleTimer = {};
+
+var workerConsole = {
+  log: function log() {
+    var args = Array.prototype.slice.call(arguments);
+    globalScope.postMessage({
+      action: 'console_log',
+      data: args
+    });
+  },
+
+  error: function error() {
+    var args = Array.prototype.slice.call(arguments);
+    globalScope.postMessage({
+      action: 'console_error',
+      data: args
+    });
+    throw 'pdf.js execution error';
+  },
+
+  time: function time(name) {
+    consoleTimer[name] = Date.now();
+  },
+
+  timeEnd: function timeEnd(name) {
+    var time = consoleTimer[name];
+    if (!time) {
+      error('Unknown timer name ' + name);
+    }
+    this.log('Timer:', name, Date.now() - time);
+  }
+};
+
+
+// Worker thread?
+if (typeof window === 'undefined') {
+  if (!('console' in globalScope)) {
+    globalScope.console = workerConsole;
+  }
+
+  // Listen for unsupported features so we can pass them on to the main thread.
+  PDFJS.UnsupportedManager.listen(function (msg) {
+    globalScope.postMessage({
+      action: '_unsupported_feature',
+      data: msg
+    });
+  });
+
+  var handler = new MessageHandler('worker_processor', this);
+  WorkerMessageHandler.setup(handler);
+}
+
+
+/* This class implements the QM Coder decoding as defined in
+ *   JPEG 2000 Part I Final Committee Draft Version 1.0
+ *   Annex C.3 Arithmetic decoding procedure
+ * available at http://www.jpeg.org/public/fcd15444-1.pdf
+ *
+ * The arithmetic decoder is used in conjunction with context models to decode
+ * JPEG2000 and JBIG2 streams.
+ */
+var ArithmeticDecoder = (function ArithmeticDecoderClosure() {
+  // Table C-2
+  var QeTable = [
+    {qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1},
+    {qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0},
+    {qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0},
+    {qe: 0x0AC1, nmps: 4, nlps: 12, switchFlag: 0},
+    {qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0},
+    {qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0},
+    {qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1},
+    {qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0},
+    {qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0},
+    {qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0},
+    {qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0},
+    {qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0},
+    {qe: 0x1C01, nmps: 13, nlps: 20, switchFlag: 0},
+    {qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0},
+    {qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1},
+    {qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0},
+    {qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0},
+    {qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0},
+    {qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0},
+    {qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0},
+    {qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0},
+    {qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0},
+    {qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0},
+    {qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0},
+    {qe: 0x1C01, nmps: 25, nlps: 22, switchFlag: 0},
+    {qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0},
+    {qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0},
+    {qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0},
+    {qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0},
+    {qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0},
+    {qe: 0x0AC1, nmps: 31, nlps: 28, switchFlag: 0},
+    {qe: 0x09C1, nmps: 32, nlps: 29, switchFlag: 0},
+    {qe: 0x08A1, nmps: 33, nlps: 30, switchFlag: 0},
+    {qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0},
+    {qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0},
+    {qe: 0x02A1, nmps: 36, nlps: 33, switchFlag: 0},
+    {qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0},
+    {qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0},
+    {qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0},
+    {qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0},
+    {qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0},
+    {qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0},
+    {qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0},
+    {qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0},
+    {qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0},
+    {qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0},
+    {qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0}
+  ];
+
+  // C.3.5 Initialisation of the decoder (INITDEC)
+  function ArithmeticDecoder(data, start, end) {
+    this.data = data;
+    this.bp = start;
+    this.dataEnd = end;
+
+    this.chigh = data[start];
+    this.clow = 0;
+
+    this.byteIn();
+
+    this.chigh = ((this.chigh << 7) & 0xFFFF) | ((this.clow >> 9) & 0x7F);
+    this.clow = (this.clow << 7) & 0xFFFF;
+    this.ct -= 7;
+    this.a = 0x8000;
+  }
+
+  ArithmeticDecoder.prototype = {
+    // C.3.4 Compressed data input (BYTEIN)
+    byteIn: function ArithmeticDecoder_byteIn() {
+      var data = this.data;
+      var bp = this.bp;
+      if (data[bp] === 0xFF) {
+        var b1 = data[bp + 1];
+        if (b1 > 0x8F) {
+          this.clow += 0xFF00;
+          this.ct = 8;
+        } else {
+          bp++;
+          this.clow += (data[bp] << 9);
+          this.ct = 7;
+          this.bp = bp;
+        }
+      } else {
+        bp++;
+        this.clow += bp < this.dataEnd ? (data[bp] << 8) : 0xFF00;
+        this.ct = 8;
+        this.bp = bp;
+      }
+      if (this.clow > 0xFFFF) {
+        this.chigh += (this.clow >> 16);
+        this.clow &= 0xFFFF;
+      }
+    },
+    // C.3.2 Decoding a decision (DECODE)
+    readBit: function ArithmeticDecoder_readBit(contexts, pos) {
+      // contexts are packed into 1 byte:
+      // highest 7 bits carry cx.index, lowest bit carries cx.mps
+      var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1;
+      var qeTableIcx = QeTable[cx_index];
+      var qeIcx = qeTableIcx.qe;
+      var d;
+      var a = this.a - qeIcx;
+
+      if (this.chigh < qeIcx) {
+        // exchangeLps
+        if (a < qeIcx) {
+          a = qeIcx;
+          d = cx_mps;
+          cx_index = qeTableIcx.nmps;
+        } else {
+          a = qeIcx;
+          d = 1 ^ cx_mps;
+          if (qeTableIcx.switchFlag === 1) {
+            cx_mps = d;
+          }
+          cx_index = qeTableIcx.nlps;
+        }
+      } else {
+        this.chigh -= qeIcx;
+        if ((a & 0x8000) !== 0) {
+          this.a = a;
+          return cx_mps;
+        }
+        // exchangeMps
+        if (a < qeIcx) {
+          d = 1 ^ cx_mps;
+          if (qeTableIcx.switchFlag === 1) {
+            cx_mps = d;
+          }
+          cx_index = qeTableIcx.nlps;
+        } else {
+          d = cx_mps;
+          cx_index = qeTableIcx.nmps;
+        }
+      }
+      // C.3.3 renormD;
+      do {
+        if (this.ct === 0) {
+          this.byteIn();
+        }
+
+        a <<= 1;
+        this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1);
+        this.clow = (this.clow << 1) & 0xFFFF;
+        this.ct--;
+      } while ((a & 0x8000) === 0);
+      this.a = a;
+
+      contexts[pos] = cx_index << 1 | cx_mps;
+      return d;
+    }
+  };
+
+  return ArithmeticDecoder;
+})();
+
+
+var JpegImage = (function jpegImage() {
+  var dctZigZag = 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
+  ]);
+
+  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) {
+          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 getBlockBufferOffset(component, row, col) {
+    return 64 * ((component.blocksPerLine + 1) * row + col);
+  }
+
+  function decodeScan(data, offset, frame, components, resetInterval,
+                      spectralStart, spectralEnd, successivePrev, successive) {
+    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 'unexpected marker: ' +
+            ((bitsData << 8) | nextByte).toString(16);
+        }
+        // unstuff 0
+      }
+      bitsCount = 7;
+      return bitsData >>> 7;
+    }
+
+    function decodeHuffman(tree) {
+      var node = tree;
+      while (true) {
+        node = node[readBit()];
+        if (typeof node === 'number') {
+          return node;
+        }
+        if (typeof node !== 'object') {
+          throw 'invalid huffman sequence';
+        }
+      }
+    }
+
+    function receive(length) {
+      var n = 0;
+      while (length > 0) {
+        n = (n << 1) | readBit();
+        length--;
+      }
+      return n;
+    }
+
+    function receiveAndExtend(length) {
+      if (length === 1) {
+        return readBit() === 1 ? 1 : -1;
+      }
+      var n = receive(length);
+      if (n >= 1 << (length - 1)) {
+        return n;
+      }
+      return n + (-1 << length) + 1;
+    }
+
+    function decodeBaseline(component, offset) {
+      var t = decodeHuffman(component.huffmanTableDC);
+      var diff = t === 0 ? 0 : receiveAndExtend(t);
+      component.blockData[offset] = (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];
+        component.blockData[offset + z] = receiveAndExtend(s);
+        k++;
+      }
+    }
+
+    function decodeDCFirst(component, offset) {
+      var t = decodeHuffman(component.huffmanTableDC);
+      var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);
+      component.blockData[offset] = (component.pred += diff);
+    }
+
+    function decodeDCSuccessive(component, offset) {
+      component.blockData[offset] |= readBit() << successive;
+    }
+
+    var eobrun = 0;
+    function decodeACFirst(component, offset) {
+      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];
+        component.blockData[offset + z] =
+          receiveAndExtend(s) * (1 << successive);
+        k++;
+      }
+    }
+
+    var successiveACState = 0, successiveACNextValue;
+    function decodeACSuccessive(component, offset) {
+      var k = spectralStart;
+      var e = spectralEnd;
+      var r = 0;
+      var s;
+      var rs;
+      while (k <= e) {
+        var z = dctZigZag[k];
+        switch (successiveACState) {
+        case 0: // initial state
+          rs = decodeHuffman(component.huffmanTableAC);
+          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 'invalid ACn encoding';
+            }
+            successiveACNextValue = receiveAndExtend(s);
+            successiveACState = r ? 2 : 3;
+          }
+          continue;
+        case 1: // skipping r zero items
+        case 2:
+          if (component.blockData[offset + z]) {
+            component.blockData[offset + z] += (readBit() << successive);
+          } else {
+            r--;
+            if (r === 0) {
+              successiveACState = successiveACState === 2 ? 3 : 0;
+            }
+          }
+          break;
+        case 3: // set value for a zero item
+          if (component.blockData[offset + z]) {
+            component.blockData[offset + z] += (readBit() << successive);
+          } else {
+            component.blockData[offset + z] =
+              successiveACNextValue << successive;
+            successiveACState = 0;
+          }
+          break;
+        case 4: // eob
+          if (component.blockData[offset + z]) {
+            component.blockData[offset + z] += (readBit() << successive);
+          }
+          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;
+      var offset = getBlockBufferOffset(component, blockRow, blockCol);
+      decode(component, offset);
+    }
+
+    function decodeBlock(component, decode, mcu) {
+      var blockRow = (mcu / component.blocksPerLine) | 0;
+      var blockCol = mcu % component.blocksPerLine;
+      var offset = getBlockBufferOffset(component, blockRow, blockCol);
+      decode(component, offset);
+    }
+
+    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++;
+        }
+      }
+
+      // find marker
+      bitsCount = 0;
+      marker = (data[offset] << 8) | data[offset + 1];
+      if (marker <= 0xFF00) {
+        throw 'marker was not found';
+      }
+
+      if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx
+        offset += 2;
+      } else {
+        break;
+      }
+    }
+
+    return offset - startOffset;
+  }
+
+  // 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(component, blockBufferOffset, p) {
+    var qt = component.quantizationTable, blockData = component.blockData;
+    var v0, v1, v2, v3, v4, v5, v6, v7;
+    var p0, p1, p2, p3, p4, p5, p6, p7;
+    var t;
+
+    // inverse DCT on rows
+    for (var row = 0; row < 64; row += 8) {
+      // gather block data
+      p0 = blockData[blockBufferOffset + row];
+      p1 = blockData[blockBufferOffset + row + 1];
+      p2 = blockData[blockBufferOffset + row + 2];
+      p3 = blockData[blockBufferOffset + row + 3];
+      p4 = blockData[blockBufferOffset + row + 4];
+      p5 = blockData[blockBufferOffset + row + 5];
+      p6 = blockData[blockBufferOffset + row + 6];
+      p7 = blockData[blockBufferOffset + row + 7];
+
+      // dequant p0
+      p0 *= qt[row];
+
+      // check for all-zero AC coefficients
+      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
+        t = (dctSqrt2 * p0 + 512) >> 10;
+        p[row] = t;
+        p[row + 1] = t;
+        p[row + 2] = t;
+        p[row + 3] = t;
+        p[row + 4] = t;
+        p[row + 5] = t;
+        p[row + 6] = t;
+        p[row + 7] = t;
+        continue;
+      }
+      // dequant p1 ... p7
+      p1 *= qt[row + 1];
+      p2 *= qt[row + 2];
+      p3 *= qt[row + 3];
+      p4 *= qt[row + 4];
+      p5 *= qt[row + 5];
+      p6 *= qt[row + 6];
+      p7 *= qt[row + 7];
+
+      // stage 4
+      v0 = (dctSqrt2 * p0 + 128) >> 8;
+      v1 = (dctSqrt2 * p4 + 128) >> 8;
+      v2 = p2;
+      v3 = p6;
+      v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;
+      v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;
+      v5 = p3 << 4;
+      v6 = p5 << 4;
+
+      // stage 3
+      v0 = (v0 + v1 + 1) >> 1;
+      v1 = v0 - v1;
+      t  = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;
+      v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;
+      v3 = t;
+      v4 = (v4 + v6 + 1) >> 1;
+      v6 = v4 - v6;
+      v7 = (v7 + v5 + 1) >> 1;
+      v5 = v7 - v5;
+
+      // stage 2
+      v0 = (v0 + v3 + 1) >> 1;
+      v3 = v0 - v3;
+      v1 = (v1 + v2 + 1) >> 1;
+      v2 = v1 - v2;
+      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[row] = v0 + v7;
+      p[row + 7] = v0 - v7;
+      p[row + 1] = v1 + v6;
+      p[row + 6] = v1 - v6;
+      p[row + 2] = v2 + v5;
+      p[row + 5] = v2 - v5;
+      p[row + 3] = v3 + v4;
+      p[row + 4] = v3 - v4;
+    }
+
+    // inverse DCT on columns
+    for (var col = 0; col < 8; ++col) {
+      p0 = p[col];
+      p1 = p[col +  8];
+      p2 = p[col + 16];
+      p3 = p[col + 24];
+      p4 = p[col + 32];
+      p5 = p[col + 40];
+      p6 = p[col + 48];
+      p7 = p[col + 56];
+
+      // check for all-zero AC coefficients
+      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
+        t = (dctSqrt2 * p0 + 8192) >> 14;
+        // convert to 8 bit
+        t = (t < -2040) ? 0 : (t >= 2024) ? 255 : (t + 2056) >> 4;
+        blockData[blockBufferOffset + col] = t;
+        blockData[blockBufferOffset + col +  8] = t;
+        blockData[blockBufferOffset + col + 16] = t;
+        blockData[blockBufferOffset + col + 24] = t;
+        blockData[blockBufferOffset + col + 32] = t;
+        blockData[blockBufferOffset + col + 40] = t;
+        blockData[blockBufferOffset + col + 48] = t;
+        blockData[blockBufferOffset + col + 56] = t;
+        continue;
+      }
+
+      // stage 4
+      v0 = (dctSqrt2 * p0 + 2048) >> 12;
+      v1 = (dctSqrt2 * p4 + 2048) >> 12;
+      v2 = p2;
+      v3 = p6;
+      v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;
+      v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;
+      v5 = p3;
+      v6 = p5;
+
+      // stage 3
+      // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when
+      // converting to UInt8 range later.
+      v0 = ((v0 + v1 + 1) >> 1) + 4112;
+      v1 = v0 - v1;
+      t  = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;
+      v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;
+      v3 = t;
+      v4 = (v4 + v6 + 1) >> 1;
+      v6 = v4 - v6;
+      v7 = (v7 + v5 + 1) >> 1;
+      v5 = v7 - v5;
+
+      // stage 2
+      v0 = (v0 + v3 + 1) >> 1;
+      v3 = v0 - v3;
+      v1 = (v1 + v2 + 1) >> 1;
+      v2 = v1 - v2;
+      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
+      p0 = v0 + v7;
+      p7 = v0 - v7;
+      p1 = v1 + v6;
+      p6 = v1 - v6;
+      p2 = v2 + v5;
+      p5 = v2 - v5;
+      p3 = v3 + v4;
+      p4 = v3 - v4;
+
+      // convert to 8-bit integers
+      p0 = (p0 < 16) ? 0 : (p0 >= 4080) ? 255 : p0 >> 4;
+      p1 = (p1 < 16) ? 0 : (p1 >= 4080) ? 255 : p1 >> 4;
+      p2 = (p2 < 16) ? 0 : (p2 >= 4080) ? 255 : p2 >> 4;
+      p3 = (p3 < 16) ? 0 : (p3 >= 4080) ? 255 : p3 >> 4;
+      p4 = (p4 < 16) ? 0 : (p4 >= 4080) ? 255 : p4 >> 4;
+      p5 = (p5 < 16) ? 0 : (p5 >= 4080) ? 255 : p5 >> 4;
+      p6 = (p6 < 16) ? 0 : (p6 >= 4080) ? 255 : p6 >> 4;
+      p7 = (p7 < 16) ? 0 : (p7 >= 4080) ? 255 : p7 >> 4;
+
+      // store block data
+      blockData[blockBufferOffset + col] = p0;
+      blockData[blockBufferOffset + col +  8] = p1;
+      blockData[blockBufferOffset + col + 16] = p2;
+      blockData[blockBufferOffset + col + 24] = p3;
+      blockData[blockBufferOffset + col + 32] = p4;
+      blockData[blockBufferOffset + col + 40] = p5;
+      blockData[blockBufferOffset + col + 48] = p6;
+      blockData[blockBufferOffset + col + 56] = p7;
+    }
+  }
+
+  function buildComponentData(frame, component) {
+    var blocksPerLine = component.blocksPerLine;
+    var blocksPerColumn = component.blocksPerColumn;
+    var computationBuffer = new Int16Array(64);
+
+    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
+      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {
+        var offset = getBlockBufferOffset(component, blockRow, blockCol);
+        quantizeAndInverse(component, offset, computationBuffer);
+      }
+    }
+    return component.blockData;
+  }
+
+  function clamp0to255(a) {
+    return a <= 0 ? 0 : a >= 255 ? 255 : a;
+  }
+
+  constructor.prototype = {
+    parse: function parse(data) {
+
+      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 mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);
+        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);
+        for (var i = 0; i < frame.components.length; i++) {
+          component = frame.components[i];
+          var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) *
+                                        component.h / frame.maxH);
+          var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines  / 8) *
+                                          component.v / frame.maxV);
+          var blocksPerLineForMcu = mcusPerLine * component.h;
+          var blocksPerColumnForMcu = mcusPerColumn * component.v;
+
+          var blocksBufferSize = 64 * blocksPerColumnForMcu *
+                                      (blocksPerLineForMcu + 1);
+          component.blockData = new Int16Array(blocksBufferSize);
+          component.blocksPerLine = blocksPerLine;
+          component.blocksPerColumn = blocksPerColumn;
+        }
+        frame.mcusPerLine = mcusPerLine;
+        frame.mcusPerColumn = mcusPerColumn;
+      }
+
+      var offset = 0, length = data.length;
+      var jfif = null;
+      var adobe = null;
+      var pixels = null;
+      var frame, resetInterval;
+      var quantizationTables = [];
+      var huffmanTablesAC = [], huffmanTablesDC = [];
+      var fileMarker = readUint16();
+      if (fileMarker !== 0xFFD8) { // SOI (Start of Image)
+        throw 'SOI not found';
+      }
+
+      fileMarker = readUint16();
+      while (fileMarker !== 0xFFD9) { // EOI (End of image)
+        var i, j, l;
+        switch(fileMarker) {
+          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 === 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 === 0xFFEE) {
+              if (appData[0] === 0x41 && appData[1] === 0x64 &&
+                  appData[2] === 0x6F && appData[3] === 0x62 &&
+                  appData[4] === 0x65) { // 'Adobe'
+                adobe = {
+                  version: (appData[5] << 8) | 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;
+            var z;
+            while (offset < quantizationTablesEnd) {
+              var quantizationTableSpec = data[offset++];
+              var tableData = new Uint16Array(64);
+              if ((quantizationTableSpec >> 4) === 0) { // 8 bit values
+                for (j = 0; j < 64; j++) {
+                  z = dctZigZag[j];
+                  tableData[z] = data[offset++];
+                }
+              } else if ((quantizationTableSpec >> 4) === 1) { //16 bit
+                for (j = 0; j < 64; j++) {
+                  z = dctZigZag[j];
+                  tableData[z] = readUint16();
+                }
+              } else {
+                throw '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)
+            if (frame) {
+              throw 'Only single frame JPEGs supported';
+            }
+            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.componentIds = {};
+            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;
+              if (maxH < h) {
+                maxH = h;
+              }
+              if (maxV < v) {
+                maxV = v;
+              }
+              var qId = data[offset + 2];
+              l = frame.components.push({
+                h: h,
+                v: v,
+                quantizationTable: quantizationTables[qId]
+              });
+              frame.componentIds[componentId] = l - 1;
+              offset += 3;
+            }
+            frame.maxH = maxH;
+            frame.maxV = maxV;
+            prepareComponents(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]);
+              }
+              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 0xFFDA: // SOS (Start of Scan)
+            var scanLength = readUint16();
+            var selectorsCount = data[offset++];
+            var components = [], component;
+            for (i = 0; i < selectorsCount; i++) {
+              var componentIndex = frame.componentIds[data[offset++]];
+              component = frame.components[componentIndex];
+              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);
+            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 'unknown JPEG marker ' + fileMarker.toString(16);
+        }
+        fileMarker = readUint16();
+      }
+
+      this.width = frame.samplesPerLine;
+      this.height = frame.scanLines;
+      this.jfif = jfif;
+      this.adobe = adobe;
+      this.components = [];
+      for (i = 0; i < frame.components.length; i++) {
+        component = frame.components[i];
+        this.components.push({
+          output: buildComponentData(frame, component),
+          scaleX: component.h / frame.maxH,
+          scaleY: component.v / frame.maxV,
+          blocksPerLine: component.blocksPerLine,
+          blocksPerColumn: component.blocksPerColumn
+        });
+      }
+      this.numComponents = this.components.length;
+    },
+
+    _getLinearizedBlockData: function getLinearizedBlockData(width, height) {
+      var scaleX = this.width / width, scaleY = this.height / height;
+
+      var component, componentScaleX, componentScaleY, blocksPerScanline;
+      var x, y, i, j, k;
+      var index;
+      var offset = 0;
+      var output;
+      var numComponents = this.components.length;
+      var dataLength = width * height * numComponents;
+      var data = new Uint8Array(dataLength);
+      var xScaleBlockOffset = new Uint32Array(width);
+      var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs
+
+      for (i = 0; i < numComponents; i++) {
+        component = this.components[i];
+        componentScaleX = component.scaleX * scaleX;
+        componentScaleY = component.scaleY * scaleY;
+        offset = i;
+        output = component.output;
+        blocksPerScanline = (component.blocksPerLine + 1) << 3;
+        // precalculate the xScaleBlockOffset
+        for (x = 0; x < width; x++) {
+          j = 0 | (x * componentScaleX);
+          xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);
+        }
+        // linearize the blocks of the component
+        for (y = 0; y < height; y++) {
+          j = 0 | (y * componentScaleY);
+          index = blocksPerScanline * (j & mask3LSB) | ((j & 7) << 3);
+          for (x = 0; x < width; x++) {
+            data[offset] = output[index + xScaleBlockOffset[x]];
+            offset += numComponents;
+          }
+        }
+      }
+
+      // decodeTransform contains pairs of multiplier (-256..256) and additive
+      var transform = this.decodeTransform;
+      if (transform) {
+        for (i = 0; i < dataLength;) {
+          for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {
+            data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];
+          }
+        }
+      }
+      return data;
+    },
+
+    _isColorConversionNeeded: function isColorConversionNeeded() {
+      if (this.adobe && this.adobe.transformCode) {
+        // The adobe transform marker overrides any previous setting
+        return true;
+      } else if (this.numComponents === 3) {
+        return true;
+      } else {
+        return false;
+      }
+    },
+
+    _convertYccToRgb: function convertYccToRgb(data) {
+      var Y, Cb, Cr;
+      for (var i = 0, length = data.length; i < length; i += 3) {
+        Y  = data[i    ];
+        Cb = data[i + 1];
+        Cr = data[i + 2];
+        data[i    ] = clamp0to255(Y - 179.456 + 1.402 * Cr);
+        data[i + 1] = clamp0to255(Y + 135.459 - 0.344 * Cb - 0.714 * Cr);
+        data[i + 2] = clamp0to255(Y - 226.816 + 1.772 * Cb);
+      }
+      return data;
+    },
+
+    _convertYcckToRgb: function convertYcckToRgb(data) {
+      var Y, Cb, Cr, k;
+      var offset = 0;
+      for (var i = 0, length = data.length; i < length; i += 4) {
+        Y  = data[i];
+        Cb = data[i + 1];
+        Cr = data[i + 2];
+        k = data[i + 3];
+
+        var r = -122.67195406894 +
+          Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr -
+                5.4080610064599e-5 * Y + 0.00048449797120281 * k -
+                0.154362151871126) +
+          Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y -
+                0.00477271405408747 * k + 1.53380253221734) +
+          Y * (0.000961250184130688 * Y - 0.00266257332283933 * k +
+               0.48357088451265) +
+          k * (-0.000336197177618394 * k + 0.484791561490776);
+
+        var g = 107.268039397724 +
+          Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr +
+                0.000659397001245577 * Y + 0.000426105652938837 * k -
+                0.176491792462875) +
+          Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y +
+                0.000770482631801132 * k - 0.151051492775562) +
+          Y * (0.00126935368114843 * Y - 0.00265090189010898 * k +
+               0.25802910206845) +
+          k * (-0.000318913117588328 * k - 0.213742400323665);
+
+        var b = -20.810012546947 +
+          Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr +
+                0.0020741088115012 * Y - 0.00288260236853442 * k +
+                0.814272968359295) +
+          Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y +
+                0.000560833691242812 * k - 0.195152027534049) +
+          Y * (0.00174418132927582 * Y - 0.00255243321439347 * k +
+               0.116935020465145) +
+          k * (-0.000343531996510555 * k + 0.24165260232407);
+
+        data[offset++] = clamp0to255(r);
+        data[offset++] = clamp0to255(g);
+        data[offset++] = clamp0to255(b);
+      }
+      return data;
+    },
+
+    _convertYcckToCmyk: function convertYcckToCmyk(data) {
+      var Y, Cb, Cr;
+      for (var i = 0, length = data.length; i < length; i += 4) {
+        Y  = data[i];
+        Cb = data[i + 1];
+        Cr = data[i + 2];
+        data[i    ] = clamp0to255(434.456 - Y - 1.402 * Cr);
+        data[i + 1] = clamp0to255(119.541 - Y + 0.344 * Cb + 0.714 * Cr);
+        data[i + 2] = clamp0to255(481.816 - Y - 1.772 * Cb);
+        // K in data[i + 3] is unchanged
+      }
+      return data;
+    },
+
+    _convertCmykToRgb: function convertCmykToRgb(data) {
+      var c, m, y, k;
+      var offset = 0;
+      var min = -255 * 255 * 255;
+      var scale = 1 / 255 / 255;
+      for (var i = 0, length = data.length; i < length; i += 4) {
+        c = data[i];
+        m = data[i + 1];
+        y = data[i + 2];
+        k = data[i + 3];
+
+        var r =
+          c * (-4.387332384609988 * c + 54.48615194189176 * m +
+               18.82290502165302 * y + 212.25662451639585 * k -
+               72734.4411664936) +
+          m * (1.7149763477362134 * m - 5.6096736904047315 * y -
+               17.873870861415444 * k - 1401.7366389350734) +
+          y * (-2.5217340131683033 * y - 21.248923337353073 * k +
+               4465.541406466231) -
+          k * (21.86122147463605 * k + 48317.86113160301);
+        var g =
+          c * (8.841041422036149 * c + 60.118027045597366 * m +
+               6.871425592049007 * y + 31.159100130055922 * k -
+               20220.756542821975) +
+          m * (-15.310361306967817 * m + 17.575251261109482 * y +
+               131.35250912493976 * k - 48691.05921601825) +
+          y * (4.444339102852739 * y + 9.8632861493405 * k -
+               6341.191035517494) -
+          k * (20.737325471181034 * k + 47890.15695978492);
+        var b =
+          c * (0.8842522430003296 * c + 8.078677503112928 * m +
+               30.89978309703729 * y - 0.23883238689178934 * k -
+               3616.812083916688) +
+          m * (10.49593273432072 * m + 63.02378494754052 * y +
+               50.606957656360734 * k - 28620.90484698408) +
+          y * (0.03296041114873217 * y + 115.60384449646641 * k -
+               49363.43385999684) -
+          k * (22.33816807309886 * k + 45932.16563550634);
+
+        data[offset++] = r >= 0 ? 255 : r <= min ? 0 : 255 + r * scale | 0;
+        data[offset++] = g >= 0 ? 255 : g <= min ? 0 : 255 + g * scale | 0;
+        data[offset++] = b >= 0 ? 255 : b <= min ? 0 : 255 + b * scale | 0;
+      }
+      return data;
+    },
+
+    getData: function getData(width, height, forceRGBoutput) {
+      if (this.numComponents > 4) {
+        throw 'Unsupported color mode';
+      }
+      // type of data: Uint8Array(width * height * numComponents)
+      var data = this._getLinearizedBlockData(width, height);
+
+      if (this.numComponents === 3) {
+        return this._convertYccToRgb(data);
+      } else if (this.numComponents === 4) {
+        if (this._isColorConversionNeeded()) {
+          if (forceRGBoutput) {
+            return this._convertYcckToRgb(data);
+          } else {
+            return this._convertYcckToCmyk(data);
+          }
+        } else if (forceRGBoutput) {
+          return this._convertCmykToRgb(data);
+        }
+      }
+      return data;
+    }
+  };
+
+  return constructor;
+})();
+
+
+var JpxImage = (function JpxImageClosure() {
+  // Table E.1
+  var SubbandsGainLog2 = {
+    'LL': 0,
+    'LH': 1,
+    'HL': 1,
+    'HH': 2
+  };
+  function JpxImage() {
+    this.failOnCorruptedImage = false;
+  }
+  JpxImage.prototype = {
+    parse: function JpxImage_parse(data) {
+
+      var head = readUint16(data, 0);
+      // No box header, immediate start of codestream (SOC)
+      if (head === 0xFF4F) {
+        this.parseCodestream(data, 0, data.length);
+        return;
+      }
+
+      var position = 0, length = data.length;
+      while (position < length) {
+        var headerSize = 8;
+        var lbox = readUint32(data, position);
+        var tbox = readUint32(data, position + 4);
+        position += headerSize;
+        if (lbox === 1) {
+          // XLBox: read UInt64 according to spec.
+          // JavaScript's int precision of 53 bit should be sufficient here.
+          lbox = readUint32(data, position) * 4294967296 +
+                 readUint32(data, position + 4);
+          position += 8;
+          headerSize += 8;
+        }
+        if (lbox === 0) {
+          lbox = length - position + headerSize;
+        }
+        if (lbox < headerSize) {
+          throw new Error('JPX Error: Invalid box field size');
+        }
+        var dataLength = lbox - headerSize;
+        var jumpDataLength = true;
+        switch (tbox) {
+          case 0x6A703268: // 'jp2h'
+            jumpDataLength = false; // parsing child boxes
+            break;
+          case 0x636F6C72: // 'colr'
+            // Colorspaces are not used, the CS from the PDF is used.
+            var method = data[position];
+            var precedence = data[position + 1];
+            var approximation = data[position + 2];
+            if (method === 1) {
+              // enumerated colorspace
+              var colorspace = readUint32(data, position + 3);
+              switch (colorspace) {
+                case 16: // this indicates a sRGB colorspace
+                case 17: // this indicates a grayscale colorspace
+                case 18: // this indicates a YUV colorspace
+                  break;
+                default:
+                  warn('Unknown colorspace ' + colorspace);
+                  break;
+              }
+            } else if (method === 2) {
+              info('ICC profile not supported');
+            }
+            break;
+          case 0x6A703263: // 'jp2c'
+            this.parseCodestream(data, position, position + dataLength);
+            break;
+          case 0x6A502020: // 'jP\024\024'
+            if (0x0d0a870a !== readUint32(data, position)) {
+              warn('Invalid JP2 signature');
+            }
+            break;
+          // The following header types are valid but currently not used:
+          case 0x6A501A1A: // 'jP\032\032'
+          case 0x66747970: // 'ftyp'
+          case 0x72726571: // 'rreq'
+          case 0x72657320: // 'res '
+          case 0x69686472: // 'ihdr'
+            break;
+          default:
+            var headerType = String.fromCharCode((tbox >> 24) & 0xFF,
+                                                 (tbox >> 16) & 0xFF,
+                                                 (tbox >> 8) & 0xFF,
+                                                 tbox & 0xFF);
+            warn('Unsupported header type ' + tbox + ' (' + headerType + ')');
+            break;
+        }
+        if (jumpDataLength) {
+          position += dataLength;
+        }
+      }
+    },
+    parseImageProperties: function JpxImage_parseImageProperties(stream) {
+      var newByte = stream.getByte();
+      while (newByte >= 0) {
+        var oldByte = newByte;
+        newByte = stream.getByte();
+        var code = (oldByte << 8) | newByte;
+        // Image and tile size (SIZ)
+        if (code === 0xFF51) {
+          stream.skip(4);
+          var Xsiz = stream.getInt32() >>> 0; // Byte 4
+          var Ysiz = stream.getInt32() >>> 0; // Byte 8
+          var XOsiz = stream.getInt32() >>> 0; // Byte 12
+          var YOsiz = stream.getInt32() >>> 0; // Byte 16
+          stream.skip(16);
+          var Csiz = stream.getUint16(); // Byte 36
+          this.width = Xsiz - XOsiz;
+          this.height = Ysiz - YOsiz;
+          this.componentsCount = Csiz;
+          // Results are always returned as Uint8Arrays
+          this.bitsPerComponent = 8;
+          return;
+        }
+      }
+      throw new Error('JPX Error: No size marker found in JPX stream');
+    },
+    parseCodestream: function JpxImage_parseCodestream(data, start, end) {
+      var context = {};
+      try {
+        var doNotRecover = false;
+        var position = start;
+        while (position + 1 < end) {
+          var code = readUint16(data, position);
+          position += 2;
+
+          var length = 0, j, sqcd, spqcds, spqcdSize, scalarExpounded, tile;
+          switch (code) {
+            case 0xFF4F: // Start of codestream (SOC)
+              context.mainHeader = true;
+              break;
+            case 0xFFD9: // End of codestream (EOC)
+              break;
+            case 0xFF51: // Image and tile size (SIZ)
+              length = readUint16(data, position);
+              var siz = {};
+              siz.Xsiz = readUint32(data, position + 4);
+              siz.Ysiz = readUint32(data, position + 8);
+              siz.XOsiz = readUint32(data, position + 12);
+              siz.YOsiz = readUint32(data, position + 16);
+              siz.XTsiz = readUint32(data, position + 20);
+              siz.YTsiz = readUint32(data, position + 24);
+              siz.XTOsiz = readUint32(data, position + 28);
+              siz.YTOsiz = readUint32(data, position + 32);
+              var componentsCount = readUint16(data, position + 36);
+              siz.Csiz = componentsCount;
+              var components = [];
+              j = position + 38;
+              for (var i = 0; i < componentsCount; i++) {
+                var component = {
+                  precision: (data[j] & 0x7F) + 1,
+                  isSigned: !!(data[j] & 0x80),
+                  XRsiz: data[j + 1],
+                  YRsiz: data[j + 1]
+                };
+                calculateComponentDimensions(component, siz);
+                components.push(component);
+              }
+              context.SIZ = siz;
+              context.components = components;
+              calculateTileGrids(context, components);
+              context.QCC = [];
+              context.COC = [];
+              break;
+            case 0xFF5C: // Quantization default (QCD)
+              length = readUint16(data, position);
+              var qcd = {};
+              j = position + 2;
+              sqcd = data[j++];
+              switch (sqcd & 0x1F) {
+                case 0:
+                  spqcdSize = 8;
+                  scalarExpounded = true;
+                  break;
+                case 1:
+                  spqcdSize = 16;
+                  scalarExpounded = false;
+                  break;
+                case 2:
+                  spqcdSize = 16;
+                  scalarExpounded = true;
+                  break;
+                default:
+                  throw new Error('JPX Error: Invalid SQcd value ' + sqcd);
+              }
+              qcd.noQuantization = (spqcdSize === 8);
+              qcd.scalarExpounded = scalarExpounded;
+              qcd.guardBits = sqcd >> 5;
+              spqcds = [];
+              while (j < length + position) {
+                var spqcd = {};
+                if (spqcdSize === 8) {
+                  spqcd.epsilon = data[j++] >> 3;
+                  spqcd.mu = 0;
+                } else {
+                  spqcd.epsilon = data[j] >> 3;
+                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];
+                  j += 2;
+                }
+                spqcds.push(spqcd);
+              }
+              qcd.SPqcds = spqcds;
+              if (context.mainHeader) {
+                context.QCD = qcd;
+              } else {
+                context.currentTile.QCD = qcd;
+                context.currentTile.QCC = [];
+              }
+              break;
+            case 0xFF5D: // Quantization component (QCC)
+              length = readUint16(data, position);
+              var qcc = {};
+              j = position + 2;
+              var cqcc;
+              if (context.SIZ.Csiz < 257) {
+                cqcc = data[j++];
+              } else {
+                cqcc = readUint16(data, j);
+                j += 2;
+              }
+              sqcd = data[j++];
+              switch (sqcd & 0x1F) {
+                case 0:
+                  spqcdSize = 8;
+                  scalarExpounded = true;
+                  break;
+                case 1:
+                  spqcdSize = 16;
+                  scalarExpounded = false;
+                  break;
+                case 2:
+                  spqcdSize = 16;
+                  scalarExpounded = true;
+                  break;
+                default:
+                  throw new Error('JPX Error: Invalid SQcd value ' + sqcd);
+              }
+              qcc.noQuantization = (spqcdSize === 8);
+              qcc.scalarExpounded = scalarExpounded;
+              qcc.guardBits = sqcd >> 5;
+              spqcds = [];
+              while (j < (length + position)) {
+                spqcd = {};
+                if (spqcdSize === 8) {
+                  spqcd.epsilon = data[j++] >> 3;
+                  spqcd.mu = 0;
+                } else {
+                  spqcd.epsilon = data[j] >> 3;
+                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];
+                  j += 2;
+                }
+                spqcds.push(spqcd);
+              }
+              qcc.SPqcds = spqcds;
+              if (context.mainHeader) {
+                context.QCC[cqcc] = qcc;
+              } else {
+                context.currentTile.QCC[cqcc] = qcc;
+              }
+              break;
+            case 0xFF52: // Coding style default (COD)
+              length = readUint16(data, position);
+              var cod = {};
+              j = position + 2;
+              var scod = data[j++];
+              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);
+              cod.sopMarkerUsed = !!(scod & 2);
+              cod.ephMarkerUsed = !!(scod & 4);
+              cod.progressionOrder = data[j++];
+              cod.layersCount = readUint16(data, j);
+              j += 2;
+              cod.multipleComponentTransform = data[j++];
+
+              cod.decompositionLevelsCount = data[j++];
+              cod.xcb = (data[j++] & 0xF) + 2;
+              cod.ycb = (data[j++] & 0xF) + 2;
+              var blockStyle = data[j++];
+              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);
+              cod.resetContextProbabilities = !!(blockStyle & 2);
+              cod.terminationOnEachCodingPass = !!(blockStyle & 4);
+              cod.verticalyStripe = !!(blockStyle & 8);
+              cod.predictableTermination = !!(blockStyle & 16);
+              cod.segmentationSymbolUsed = !!(blockStyle & 32);
+              cod.reversibleTransformation = data[j++];
+              if (cod.entropyCoderWithCustomPrecincts) {
+                var precinctsSizes = [];
+                while (j < length + position) {
+                  var precinctsSize = data[j++];
+                  precinctsSizes.push({
+                    PPx: precinctsSize & 0xF,
+                    PPy: precinctsSize >> 4
+                  });
+                }
+                cod.precinctsSizes = precinctsSizes;
+              }
+              var unsupported = [];
+              if (cod.selectiveArithmeticCodingBypass) {
+                unsupported.push('selectiveArithmeticCodingBypass');
+              }
+              if (cod.resetContextProbabilities) {
+                unsupported.push('resetContextProbabilities');
+              }
+              if (cod.terminationOnEachCodingPass) {
+                unsupported.push('terminationOnEachCodingPass');
+              }
+              if (cod.verticalyStripe) {
+                unsupported.push('verticalyStripe');
+              }
+              if (cod.predictableTermination) {
+                unsupported.push('predictableTermination');
+              }
+              if (unsupported.length > 0) {
+                doNotRecover = true;
+                throw new Error('JPX Error: Unsupported COD options (' +
+                                unsupported.join(', ') + ')');
+              }
+              if (context.mainHeader) {
+                context.COD = cod;
+              } else {
+                context.currentTile.COD = cod;
+                context.currentTile.COC = [];
+              }
+              break;
+            case 0xFF90: // Start of tile-part (SOT)
+              length = readUint16(data, position);
+              tile = {};
+              tile.index = readUint16(data, position + 2);
+              tile.length = readUint32(data, position + 4);
+              tile.dataEnd = tile.length + position - 2;
+              tile.partIndex = data[position + 8];
+              tile.partsCount = data[position + 9];
+
+              context.mainHeader = false;
+              if (tile.partIndex === 0) {
+                // reset component specific settings
+                tile.COD = context.COD;
+                tile.COC = context.COC.slice(0); // clone of the global COC
+                tile.QCD = context.QCD;
+                tile.QCC = context.QCC.slice(0); // clone of the global COC
+              }
+              context.currentTile = tile;
+              break;
+            case 0xFF93: // Start of data (SOD)
+              tile = context.currentTile;
+              if (tile.partIndex === 0) {
+                initializeTile(context, tile.index);
+                buildPackets(context);
+              }
+
+              // moving to the end of the data
+              length = tile.dataEnd - position;
+              parseTilePackets(context, data, position, length);
+              break;
+            case 0xFF55: // Tile-part lengths, main header (TLM)
+            case 0xFF57: // Packet length, main header (PLM)
+            case 0xFF58: // Packet length, tile-part header (PLT)
+            case 0xFF64: // Comment (COM)
+              length = readUint16(data, position);
+              // skipping content
+              break;
+            case 0xFF53: // Coding style component (COC)
+              throw new Error('JPX Error: Codestream code 0xFF53 (COC) is ' +
+                              'not implemented');
+            default:
+              throw new Error('JPX Error: Unknown codestream code: ' +
+                              code.toString(16));
+          }
+          position += length;
+        }
+      } catch (e) {
+        if (doNotRecover || this.failOnCorruptedImage) {
+          throw e;
+        } else {
+          warn('Trying to recover from ' + e.message);
+        }
+      }
+      this.tiles = transformComponents(context);
+      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;
+      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;
+      this.componentsCount = context.SIZ.Csiz;
+    }
+  };
+  function calculateComponentDimensions(component, siz) {
+    // Section B.2 Component mapping
+    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);
+    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);
+    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);
+    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);
+    component.width = component.x1 - component.x0;
+    component.height = component.y1 - component.y0;
+  }
+  function calculateTileGrids(context, components) {
+    var siz = context.SIZ;
+    // Section B.3 Division into tile and tile-components
+    var tile, tiles = [];
+    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);
+    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);
+    for (var q = 0; q < numYtiles; q++) {
+      for (var p = 0; p < numXtiles; p++) {
+        tile = {};
+        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);
+        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);
+        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);
+        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);
+        tile.width = tile.tx1 - tile.tx0;
+        tile.height = tile.ty1 - tile.ty0;
+        tile.components = [];
+        tiles.push(tile);
+      }
+    }
+    context.tiles = tiles;
+
+    var componentsCount = siz.Csiz;
+    for (var i = 0, ii = componentsCount; i < ii; i++) {
+      var component = components[i];
+      for (var j = 0, jj = tiles.length; j < jj; j++) {
+        var tileComponent = {};
+        tile = tiles[j];
+        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);
+        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);
+        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);
+        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);
+        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;
+        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;
+        tile.components[i] = tileComponent;
+      }
+    }
+  }
+  function getBlocksDimensions(context, component, r) {
+    var codOrCoc = component.codingStyleParameters;
+    var result = {};
+    if (!codOrCoc.entropyCoderWithCustomPrecincts) {
+      result.PPx = 15;
+      result.PPy = 15;
+    } else {
+      result.PPx = codOrCoc.precinctsSizes[r].PPx;
+      result.PPy = codOrCoc.precinctsSizes[r].PPy;
+    }
+    // calculate codeblock size as described in section B.7
+    result.xcb_ = (r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) :
+                   Math.min(codOrCoc.xcb, result.PPx));
+    result.ycb_ = (r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) :
+                   Math.min(codOrCoc.ycb, result.PPy));
+    return result;
+  }
+  function buildPrecincts(context, resolution, dimensions) {
+    // Section B.6 Division resolution to precincts
+    var precinctWidth = 1 << dimensions.PPx;
+    var precinctHeight = 1 << dimensions.PPy;
+    // Jasper introduces codeblock groups for mapping each subband codeblocks
+    // to precincts. Precinct partition divides a resolution according to width
+    // and height parameters. The subband that belongs to the resolution level
+    // has a different size than the level, unless it is the zero resolution.
+
+    // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:
+    // The precinct partitioning for a particular subband is derived from a
+    // partitioning of its parent LL band (i.e., the LL band at the next higher
+    // resolution level)... The LL band associated with each resolution level is
+    // divided into precincts... Each of the resulting precinct regions is then
+    // mapped into its child subbands (if any) at the next lower resolution
+    // level. This is accomplished by using the coordinate transformation
+    // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the
+    // coordinates of a point in the LL band and child subband, respectively.
+    var isZeroRes = resolution.resLevel === 0;
+    var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));
+    var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));
+    var numprecinctswide = (resolution.trx1 > resolution.trx0 ?
+      Math.ceil(resolution.trx1 / precinctWidth) -
+      Math.floor(resolution.trx0 / precinctWidth) : 0);
+    var numprecinctshigh = (resolution.try1 > resolution.try0 ?
+      Math.ceil(resolution.try1 / precinctHeight) -
+      Math.floor(resolution.try0 / precinctHeight) : 0);
+    var numprecincts = numprecinctswide * numprecinctshigh;
+
+    resolution.precinctParameters = {
+      precinctWidth: precinctWidth,
+      precinctHeight: precinctHeight,
+      numprecinctswide: numprecinctswide,
+      numprecinctshigh: numprecinctshigh,
+      numprecincts: numprecincts,
+      precinctWidthInSubband: precinctWidthInSubband,
+      precinctHeightInSubband: precinctHeightInSubband
+    };
+  }
+  function buildCodeblocks(context, subband, dimensions) {
+    // Section B.7 Division sub-band into code-blocks
+    var xcb_ = dimensions.xcb_;
+    var ycb_ = dimensions.ycb_;
+    var codeblockWidth = 1 << xcb_;
+    var codeblockHeight = 1 << ycb_;
+    var cbx0 = subband.tbx0 >> xcb_;
+    var cby0 = subband.tby0 >> ycb_;
+    var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;
+    var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;
+    var precinctParameters = subband.resolution.precinctParameters;
+    var codeblocks = [];
+    var precincts = [];
+    var i, j, codeblock, precinctNumber;
+    for (j = cby0; j < cby1; j++) {
+      for (i = cbx0; i < cbx1; i++) {
+        codeblock = {
+          cbx: i,
+          cby: j,
+          tbx0: codeblockWidth * i,
+          tby0: codeblockHeight * j,
+          tbx1: codeblockWidth * (i + 1),
+          tby1: codeblockHeight * (j + 1)
+        };
+
+        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);
+        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);
+        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);
+        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);
+
+        // Calculate precinct number for this codeblock, codeblock position
+        // should be relative to its subband, use actual dimension and position
+        // See comment about codeblock group width and height
+        var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) /
+          precinctParameters.precinctWidthInSubband);
+        var pj = Math.floor((codeblock.tby0_ - subband.tby0) /
+          precinctParameters.precinctHeightInSubband);
+        precinctNumber = pi + (pj * precinctParameters.numprecinctswide);
+
+        codeblock.precinctNumber = precinctNumber;
+        codeblock.subbandType = subband.type;
+        codeblock.Lblock = 3;
+
+        if (codeblock.tbx1_ <= codeblock.tbx0_ ||
+            codeblock.tby1_ <= codeblock.tby0_) {
+          continue;
+        }
+        codeblocks.push(codeblock);
+        // building precinct for the sub-band
+        var precinct = precincts[precinctNumber];
+        if (precinct !== undefined) {
+          if (i < precinct.cbxMin) {
+            precinct.cbxMin = i;
+          } else if (i > precinct.cbxMax) {
+            precinct.cbxMax = i;
+          }
+          if (j < precinct.cbyMin) {
+            precinct.cbxMin = j;
+          } else if (j > precinct.cbyMax) {
+            precinct.cbyMax = j;
+          }
+        } else {
+          precincts[precinctNumber] = precinct = {
+            cbxMin: i,
+            cbyMin: j,
+            cbxMax: i,
+            cbyMax: j
+          };
+        }
+        codeblock.precinct = precinct;
+      }
+    }
+    subband.codeblockParameters = {
+      codeblockWidth: xcb_,
+      codeblockHeight: ycb_,
+      numcodeblockwide: cbx1 - cbx0 + 1,
+      numcodeblockhigh: cby1 - cby0 + 1
+    };
+    subband.codeblocks = codeblocks;
+    subband.precincts = precincts;
+  }
+  function createPacket(resolution, precinctNumber, layerNumber) {
+    var precinctCodeblocks = [];
+    // Section B.10.8 Order of info in packet
+    var subbands = resolution.subbands;
+    // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence
+    for (var i = 0, ii = subbands.length; i < ii; i++) {
+      var subband = subbands[i];
+      var codeblocks = subband.codeblocks;
+      for (var j = 0, jj = codeblocks.length; j < jj; j++) {
+        var codeblock = codeblocks[j];
+        if (codeblock.precinctNumber !== precinctNumber) {
+          continue;
+        }
+        precinctCodeblocks.push(codeblock);
+      }
+    }
+    return {
+      layerNumber: layerNumber,
+      codeblocks: precinctCodeblocks
+    };
+  }
+  function LayerResolutionComponentPositionIterator(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var layersCount = tile.codingStyleDefaultParameters.layersCount;
+    var componentsCount = siz.Csiz;
+    var maxDecompositionLevelsCount = 0;
+    for (var q = 0; q < componentsCount; q++) {
+      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,
+        tile.components[q].codingStyleParameters.decompositionLevelsCount);
+    }
+
+    var l = 0, r = 0, i = 0, k = 0;
+
+    this.nextPacket = function JpxImage_nextPacket() {
+      // Section B.12.1.1 Layer-resolution-component-position
+      for (; l < layersCount; l++) {
+        for (; r <= maxDecompositionLevelsCount; r++) {
+          for (; i < componentsCount; i++) {
+            var component = tile.components[i];
+            if (r > component.codingStyleParameters.decompositionLevelsCount) {
+              continue;
+            }
+
+            var resolution = component.resolutions[r];
+            var numprecincts = resolution.precinctParameters.numprecincts;
+            for (; k < numprecincts;) {
+              var packet = createPacket(resolution, k, l);
+              k++;
+              return packet;
+            }
+            k = 0;
+          }
+          i = 0;
+        }
+        r = 0;
+      }
+      throw new Error('JPX Error: Out of packets');
+    };
+  }
+  function ResolutionLayerComponentPositionIterator(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var layersCount = tile.codingStyleDefaultParameters.layersCount;
+    var componentsCount = siz.Csiz;
+    var maxDecompositionLevelsCount = 0;
+    for (var q = 0; q < componentsCount; q++) {
+      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,
+        tile.components[q].codingStyleParameters.decompositionLevelsCount);
+    }
+
+    var r = 0, l = 0, i = 0, k = 0;
+
+    this.nextPacket = function JpxImage_nextPacket() {
+      // Section B.12.1.2 Resolution-layer-component-position
+      for (; r <= maxDecompositionLevelsCount; r++) {
+        for (; l < layersCount; l++) {
+          for (; i < componentsCount; i++) {
+            var component = tile.components[i];
+            if (r > component.codingStyleParameters.decompositionLevelsCount) {
+              continue;
+            }
+
+            var resolution = component.resolutions[r];
+            var numprecincts = resolution.precinctParameters.numprecincts;
+            for (; k < numprecincts;) {
+              var packet = createPacket(resolution, k, l);
+              k++;
+              return packet;
+            }
+            k = 0;
+          }
+          i = 0;
+        }
+        l = 0;
+      }
+      throw new Error('JPX Error: Out of packets');
+    };
+  }
+  function ResolutionPositionComponentLayerIterator(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var layersCount = tile.codingStyleDefaultParameters.layersCount;
+    var componentsCount = siz.Csiz;
+    var l, r, c, p;
+    var maxDecompositionLevelsCount = 0;
+    for (c = 0; c < componentsCount; c++) {
+      var component = tile.components[c];
+      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,
+        component.codingStyleParameters.decompositionLevelsCount);
+    }
+    var maxNumPrecinctsInLevel = new Int32Array(
+      maxDecompositionLevelsCount + 1);
+    for (r = 0; r <= maxDecompositionLevelsCount; ++r) {
+      var maxNumPrecincts = 0;
+      for (c = 0; c < componentsCount; ++c) {
+        var resolutions = tile.components[c].resolutions;
+        if (r < resolutions.length) {
+          maxNumPrecincts = Math.max(maxNumPrecincts,
+            resolutions[r].precinctParameters.numprecincts);
+        }
+      }
+      maxNumPrecinctsInLevel[r] = maxNumPrecincts;
+    }
+    l = 0;
+    r = 0;
+    c = 0;
+    p = 0;
+
+    this.nextPacket = function JpxImage_nextPacket() {
+      // Section B.12.1.3 Resolution-position-component-layer
+      for (; r <= maxDecompositionLevelsCount; r++) {
+        for (; p < maxNumPrecinctsInLevel[r]; p++) {
+          for (; c < componentsCount; c++) {
+            var component = tile.components[c];
+            if (r > component.codingStyleParameters.decompositionLevelsCount) {
+              continue;
+            }
+            var resolution = component.resolutions[r];
+            var numprecincts = resolution.precinctParameters.numprecincts;
+            if (p >= numprecincts) {
+              continue;
+            }
+            for (; l < layersCount;) {
+              var packet = createPacket(resolution, p, l);
+              l++;
+              return packet;
+            }
+            l = 0;
+          }
+          c = 0;
+        }
+        p = 0;
+      }
+      throw new Error('JPX Error: Out of packets');
+    };
+  }
+  function PositionComponentResolutionLayerIterator(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var layersCount = tile.codingStyleDefaultParameters.layersCount;
+    var componentsCount = siz.Csiz;
+    var precinctsSizes = getPrecinctSizesInImageScale(tile);
+    var precinctsIterationSizes = precinctsSizes;
+    var l = 0, r = 0, c = 0, px = 0, py = 0;
+
+    this.nextPacket = function JpxImage_nextPacket() {
+      // Section B.12.1.4 Position-component-resolution-layer
+      for (; py < precinctsIterationSizes.maxNumHigh; py++) {
+        for (; px < precinctsIterationSizes.maxNumWide; px++) {
+          for (; c < componentsCount; c++) {
+            var component = tile.components[c];
+            var decompositionLevelsCount =
+              component.codingStyleParameters.decompositionLevelsCount;
+            for (; r <= decompositionLevelsCount; r++) {
+              var resolution = component.resolutions[r];
+              var sizeInImageScale =
+                precinctsSizes.components[c].resolutions[r];
+              var k = getPrecinctIndexIfExist(
+                px,
+                py,
+                sizeInImageScale,
+                precinctsIterationSizes,
+                resolution);
+              if (k === null) {
+                continue;
+              }
+              for (; l < layersCount;) {
+                var packet = createPacket(resolution, k, l);
+                l++;
+                return packet;
+              }
+              l = 0;
+            }
+            r = 0;
+          }
+          c = 0;
+        }
+        px = 0;
+      }
+      throw new Error('JPX Error: Out of packets');
+    };
+  }
+  function ComponentPositionResolutionLayerIterator(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var layersCount = tile.codingStyleDefaultParameters.layersCount;
+    var componentsCount = siz.Csiz;
+    var precinctsSizes = getPrecinctSizesInImageScale(tile);
+    var l = 0, r = 0, c = 0, px = 0, py = 0;
+
+    this.nextPacket = function JpxImage_nextPacket() {
+      // Section B.12.1.5 Component-position-resolution-layer
+      for (; c < componentsCount; ++c) {
+        var component = tile.components[c];
+        var precinctsIterationSizes = precinctsSizes.components[c];
+        var decompositionLevelsCount =
+          component.codingStyleParameters.decompositionLevelsCount;
+        for (; py < precinctsIterationSizes.maxNumHigh; py++) {
+          for (; px < precinctsIterationSizes.maxNumWide; px++) {
+            for (; r <= decompositionLevelsCount; r++) {
+              var resolution = component.resolutions[r];
+              var sizeInImageScale = precinctsIterationSizes.resolutions[r];
+              var k = getPrecinctIndexIfExist(
+                px,
+                py,
+                sizeInImageScale,
+                precinctsIterationSizes,
+                resolution);
+              if (k === null) {
+                continue;
+              }
+              for (; l < layersCount;) {
+                var packet = createPacket(resolution, k, l);
+                l++;
+                return packet;
+              }
+              l = 0;
+            }
+            r = 0;
+          }
+          px = 0;
+        }
+        py = 0;
+      }
+      throw new Error('JPX Error: Out of packets');
+    };
+  }
+  function getPrecinctIndexIfExist(
+    pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {
+    var posX = pxIndex * precinctIterationSizes.minWidth;
+    var posY = pyIndex * precinctIterationSizes.minHeight;
+    if (posX % sizeInImageScale.width !== 0 ||
+        posY % sizeInImageScale.height !== 0) {
+      return null;
+    }
+    var startPrecinctRowIndex =
+      (posY / sizeInImageScale.width) *
+      resolution.precinctParameters.numprecinctswide;
+    return (posX / sizeInImageScale.height) + startPrecinctRowIndex;
+  }
+  function getPrecinctSizesInImageScale(tile) {
+    var componentsCount = tile.components.length;
+    var minWidth = Number.MAX_VALUE;
+    var minHeight = Number.MAX_VALUE;
+    var maxNumWide = 0;
+    var maxNumHigh = 0;
+    var sizePerComponent = new Array(componentsCount);
+    for (var c = 0; c < componentsCount; c++) {
+      var component = tile.components[c];
+      var decompositionLevelsCount =
+        component.codingStyleParameters.decompositionLevelsCount;
+      var sizePerResolution = new Array(decompositionLevelsCount + 1);
+      var minWidthCurrentComponent = Number.MAX_VALUE;
+      var minHeightCurrentComponent = Number.MAX_VALUE;
+      var maxNumWideCurrentComponent = 0;
+      var maxNumHighCurrentComponent = 0;
+      var scale = 1;
+      for (var r = decompositionLevelsCount; r >= 0; --r) {
+        var resolution = component.resolutions[r];
+        var widthCurrentResolution =
+          scale * resolution.precinctParameters.precinctWidth;
+        var heightCurrentResolution =
+          scale * resolution.precinctParameters.precinctHeight;
+        minWidthCurrentComponent = Math.min(
+          minWidthCurrentComponent,
+          widthCurrentResolution);
+        minHeightCurrentComponent = Math.min(
+          minHeightCurrentComponent,
+          heightCurrentResolution);
+        maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent,
+          resolution.precinctParameters.numprecinctswide);
+        maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent,
+          resolution.precinctParameters.numprecinctshigh);
+        sizePerResolution[r] = {
+          width: widthCurrentResolution,
+          height: heightCurrentResolution
+        };
+        scale <<= 1;
+      }
+      minWidth = Math.min(minWidth, minWidthCurrentComponent);
+      minHeight = Math.min(minHeight, minHeightCurrentComponent);
+      maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);
+      maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);
+      sizePerComponent[c] = {
+        resolutions: sizePerResolution,
+        minWidth: minWidthCurrentComponent,
+        minHeight: minHeightCurrentComponent,
+        maxNumWide: maxNumWideCurrentComponent,
+        maxNumHigh: maxNumHighCurrentComponent
+      };
+    }
+    return {
+      components: sizePerComponent,
+      minWidth: minWidth,
+      minHeight: minHeight,
+      maxNumWide: maxNumWide,
+      maxNumHigh: maxNumHigh
+    };
+  }
+  function buildPackets(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var componentsCount = siz.Csiz;
+    // Creating resolutions and sub-bands for each component
+    for (var c = 0; c < componentsCount; c++) {
+      var component = tile.components[c];
+      var decompositionLevelsCount =
+        component.codingStyleParameters.decompositionLevelsCount;
+      // Section B.5 Resolution levels and sub-bands
+      var resolutions = [];
+      var subbands = [];
+      for (var r = 0; r <= decompositionLevelsCount; r++) {
+        var blocksDimensions = getBlocksDimensions(context, component, r);
+        var resolution = {};
+        var scale = 1 << (decompositionLevelsCount - r);
+        resolution.trx0 = Math.ceil(component.tcx0 / scale);
+        resolution.try0 = Math.ceil(component.tcy0 / scale);
+        resolution.trx1 = Math.ceil(component.tcx1 / scale);
+        resolution.try1 = Math.ceil(component.tcy1 / scale);
+        resolution.resLevel = r;
+        buildPrecincts(context, resolution, blocksDimensions);
+        resolutions.push(resolution);
+
+        var subband;
+        if (r === 0) {
+          // one sub-band (LL) with last decomposition
+          subband = {};
+          subband.type = 'LL';
+          subband.tbx0 = Math.ceil(component.tcx0 / scale);
+          subband.tby0 = Math.ceil(component.tcy0 / scale);
+          subband.tbx1 = Math.ceil(component.tcx1 / scale);
+          subband.tby1 = Math.ceil(component.tcy1 / scale);
+          subband.resolution = resolution;
+          buildCodeblocks(context, subband, blocksDimensions);
+          subbands.push(subband);
+          resolution.subbands = [subband];
+        } else {
+          var bscale = 1 << (decompositionLevelsCount - r + 1);
+          var resolutionSubbands = [];
+          // three sub-bands (HL, LH and HH) with rest of decompositions
+          subband = {};
+          subband.type = 'HL';
+          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
+          subband.tby0 = Math.ceil(component.tcy0 / bscale);
+          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
+          subband.tby1 = Math.ceil(component.tcy1 / bscale);
+          subband.resolution = resolution;
+          buildCodeblocks(context, subband, blocksDimensions);
+          subbands.push(subband);
+          resolutionSubbands.push(subband);
+
+          subband = {};
+          subband.type = 'LH';
+          subband.tbx0 = Math.ceil(component.tcx0 / bscale);
+          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
+          subband.tbx1 = Math.ceil(component.tcx1 / bscale);
+          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
+          subband.resolution = resolution;
+          buildCodeblocks(context, subband, blocksDimensions);
+          subbands.push(subband);
+          resolutionSubbands.push(subband);
+
+          subband = {};
+          subband.type = 'HH';
+          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
+          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
+          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
+          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
+          subband.resolution = resolution;
+          buildCodeblocks(context, subband, blocksDimensions);
+          subbands.push(subband);
+          resolutionSubbands.push(subband);
+
+          resolution.subbands = resolutionSubbands;
+        }
+      }
+      component.resolutions = resolutions;
+      component.subbands = subbands;
+    }
+    // Generate the packets sequence
+    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;
+    switch (progressionOrder) {
+      case 0:
+        tile.packetsIterator =
+          new LayerResolutionComponentPositionIterator(context);
+        break;
+      case 1:
+        tile.packetsIterator =
+          new ResolutionLayerComponentPositionIterator(context);
+        break;
+      case 2:
+        tile.packetsIterator =
+          new ResolutionPositionComponentLayerIterator(context);
+        break;
+      case 3:
+        tile.packetsIterator =
+          new PositionComponentResolutionLayerIterator(context);
+        break;
+      case 4:
+        tile.packetsIterator =
+          new ComponentPositionResolutionLayerIterator(context);
+        break;
+      default:
+        throw new Error('JPX Error: Unsupported progression order ' +
+                        progressionOrder);
+    }
+  }
+  function parseTilePackets(context, data, offset, dataLength) {
+    var position = 0;
+    var buffer, bufferSize = 0, skipNextBit = false;
+    function readBits(count) {
+      while (bufferSize < count) {
+        var b = data[offset + position];
+        position++;
+        if (skipNextBit) {
+          buffer = (buffer << 7) | b;
+          bufferSize += 7;
+          skipNextBit = false;
+        } else {
+          buffer = (buffer << 8) | b;
+          bufferSize += 8;
+        }
+        if (b === 0xFF) {
+          skipNextBit = true;
+        }
+      }
+      bufferSize -= count;
+      return (buffer >>> bufferSize) & ((1 << count) - 1);
+    }
+    function skipMarkerIfEqual(value) {
+      if (data[offset + position - 1] === 0xFF &&
+          data[offset + position] === value) {
+        skipBytes(1);
+        return true;
+      } else if (data[offset + position] === 0xFF &&
+                 data[offset + position + 1] === value) {
+        skipBytes(2);
+        return true;
+      }
+      return false;
+    }
+    function skipBytes(count) {
+      position += count;
+    }
+    function alignToByte() {
+      bufferSize = 0;
+      if (skipNextBit) {
+        position++;
+        skipNextBit = false;
+      }
+    }
+    function readCodingpasses() {
+      if (readBits(1) === 0) {
+        return 1;
+      }
+      if (readBits(1) === 0) {
+        return 2;
+      }
+      var value = readBits(2);
+      if (value < 3) {
+        return value + 3;
+      }
+      value = readBits(5);
+      if (value < 31) {
+        return value + 6;
+      }
+      value = readBits(7);
+      return value + 37;
+    }
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var sopMarkerUsed = context.COD.sopMarkerUsed;
+    var ephMarkerUsed = context.COD.ephMarkerUsed;
+    var packetsIterator = tile.packetsIterator;
+    while (position < dataLength) {
+      alignToByte();
+      if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {
+        // Skip also marker segment length and packet sequence ID
+        skipBytes(4);
+      }
+      var packet = packetsIterator.nextPacket();
+      if (!readBits(1)) {
+        continue;
+      }
+      var layerNumber = packet.layerNumber;
+      var queue = [], codeblock;
+      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {
+        codeblock = packet.codeblocks[i];
+        var precinct = codeblock.precinct;
+        var codeblockColumn = codeblock.cbx - precinct.cbxMin;
+        var codeblockRow = codeblock.cby - precinct.cbyMin;
+        var codeblockIncluded = false;
+        var firstTimeInclusion = false;
+        var valueReady;
+        if (codeblock['included'] !== undefined) {
+          codeblockIncluded = !!readBits(1);
+        } else {
+          // reading inclusion tree
+          precinct = codeblock.precinct;
+          var inclusionTree, zeroBitPlanesTree;
+          if (precinct['inclusionTree'] !== undefined) {
+            inclusionTree = precinct.inclusionTree;
+          } else {
+            // building inclusion and zero bit-planes trees
+            var width = precinct.cbxMax - precinct.cbxMin + 1;
+            var height = precinct.cbyMax - precinct.cbyMin + 1;
+            inclusionTree = new InclusionTree(width, height, layerNumber);
+            zeroBitPlanesTree = new TagTree(width, height);
+            precinct.inclusionTree = inclusionTree;
+            precinct.zeroBitPlanesTree = zeroBitPlanesTree;
+          }
+
+          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {
+            while (true) {
+              if (readBits(1)) {
+                valueReady = !inclusionTree.nextLevel();
+                if (valueReady) {
+                  codeblock.included = true;
+                  codeblockIncluded = firstTimeInclusion = true;
+                  break;
+                }
+              } else {
+                inclusionTree.incrementValue(layerNumber);
+                break;
+              }
+            }
+          }
+        }
+        if (!codeblockIncluded) {
+          continue;
+        }
+        if (firstTimeInclusion) {
+          zeroBitPlanesTree = precinct.zeroBitPlanesTree;
+          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);
+          while (true) {
+            if (readBits(1)) {
+              valueReady = !zeroBitPlanesTree.nextLevel();
+              if (valueReady) {
+                break;
+              }
+            } else {
+              zeroBitPlanesTree.incrementValue();
+            }
+          }
+          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;
+        }
+        var codingpasses = readCodingpasses();
+        while (readBits(1)) {
+          codeblock.Lblock++;
+        }
+        var codingpassesLog2 = log2(codingpasses);
+        // rounding down log2
+        var bits = ((codingpasses < (1 << codingpassesLog2)) ?
+          codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;
+        var codedDataLength = readBits(bits);
+        queue.push({
+          codeblock: codeblock,
+          codingpasses: codingpasses,
+          dataLength: codedDataLength
+        });
+      }
+      alignToByte();
+      if (ephMarkerUsed) {
+        skipMarkerIfEqual(0x92);
+      }
+      while (queue.length > 0) {
+        var packetItem = queue.shift();
+        codeblock = packetItem.codeblock;
+        if (codeblock['data'] === undefined) {
+          codeblock.data = [];
+        }
+        codeblock.data.push({
+          data: data,
+          start: offset + position,
+          end: offset + position + packetItem.dataLength,
+          codingpasses: packetItem.codingpasses
+        });
+        position += packetItem.dataLength;
+      }
+    }
+    return position;
+  }
+  function copyCoefficients(coefficients, levelWidth, levelHeight, subband,
+                            delta, mb, reversible, segmentationSymbolUsed) {
+    var x0 = subband.tbx0;
+    var y0 = subband.tby0;
+    var width = subband.tbx1 - subband.tbx0;
+    var codeblocks = subband.codeblocks;
+    var right = subband.type.charAt(0) === 'H' ? 1 : 0;
+    var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0;
+
+    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {
+      var codeblock = codeblocks[i];
+      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;
+      var blockHeight = codeblock.tby1_ - codeblock.tby0_;
+      if (blockWidth === 0 || blockHeight === 0) {
+        continue;
+      }
+      if (codeblock['data'] === undefined) {
+        continue;
+      }
+
+      var bitModel, currentCodingpassType;
+      bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType,
+                              codeblock.zeroBitPlanes, mb);
+      currentCodingpassType = 2; // first bit plane starts from cleanup
+
+      // collect data
+      var data = codeblock.data, totalLength = 0, codingpasses = 0;
+      var j, jj, dataItem;
+      for (j = 0, jj = data.length; j < jj; j++) {
+        dataItem = data[j];
+        totalLength += dataItem.end - dataItem.start;
+        codingpasses += dataItem.codingpasses;
+      }
+      var encodedData = new Uint8Array(totalLength);
+      var position = 0;
+      for (j = 0, jj = data.length; j < jj; j++) {
+        dataItem = data[j];
+        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);
+        encodedData.set(chunk, position);
+        position += chunk.length;
+      }
+      // decoding the item
+      var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);
+      bitModel.setDecoder(decoder);
+
+      for (j = 0; j < codingpasses; j++) {
+        switch (currentCodingpassType) {
+          case 0:
+            bitModel.runSignificancePropogationPass();
+            break;
+          case 1:
+            bitModel.runMagnitudeRefinementPass();
+            break;
+          case 2:
+            bitModel.runCleanupPass();
+            if (segmentationSymbolUsed) {
+              bitModel.checkSegmentationSymbol();
+            }
+            break;
+        }
+        currentCodingpassType = (currentCodingpassType + 1) % 3;
+      }
+
+      var offset = (codeblock.tbx0_ - x0) + (codeblock.tby0_ - y0) * width;
+      var sign = bitModel.coefficentsSign;
+      var magnitude = bitModel.coefficentsMagnitude;
+      var bitsDecoded = bitModel.bitsDecoded;
+      var magnitudeCorrection = reversible ? 0 : 0.5;
+      var k, n, nb;
+      position = 0;
+      // Do the interleaving of Section F.3.3 here, so we do not need
+      // to copy later. LL level is not interleaved, just copied.
+      var interleave = (subband.type !== 'LL');
+      for (j = 0; j < blockHeight; j++) {
+        var row = (offset / width) | 0; // row in the non-interleaved subband
+        var levelOffset = 2 * row * (levelWidth - width) + right + bottom;
+        for (k = 0; k < blockWidth; k++) {
+          n = magnitude[position];
+          if (n !== 0) {
+            n = (n + magnitudeCorrection) * delta;
+            if (sign[position] !== 0) {
+              n = -n;
+            }
+            nb = bitsDecoded[position];
+            var pos = interleave ? (levelOffset + (offset << 1)) : offset;
+            if (reversible && (nb >= mb)) {
+              coefficients[pos] = n;
+            } else {
+              coefficients[pos] = n * (1 << (mb - nb));
+            }
+          }
+          offset++;
+          position++;
+        }
+        offset += width - blockWidth;
+      }
+    }
+  }
+  function transformTile(context, tile, c) {
+    var component = tile.components[c];
+    var codingStyleParameters = component.codingStyleParameters;
+    var quantizationParameters = component.quantizationParameters;
+    var decompositionLevelsCount =
+      codingStyleParameters.decompositionLevelsCount;
+    var spqcds = quantizationParameters.SPqcds;
+    var scalarExpounded = quantizationParameters.scalarExpounded;
+    var guardBits = quantizationParameters.guardBits;
+    var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;
+    var precision = context.components[c].precision;
+
+    var reversible = codingStyleParameters.reversibleTransformation;
+    var transform = (reversible ? new ReversibleTransform() :
+                                  new IrreversibleTransform());
+
+    var subbandCoefficients = [];
+    var b = 0;
+    for (var i = 0; i <= decompositionLevelsCount; i++) {
+      var resolution = component.resolutions[i];
+
+      var width = resolution.trx1 - resolution.trx0;
+      var height = resolution.try1 - resolution.try0;
+      // Allocate space for the whole sublevel.
+      var coefficients = new Float32Array(width * height);
+
+      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {
+        var mu, epsilon;
+        if (!scalarExpounded) {
+          // formula E-5
+          mu = spqcds[0].mu;
+          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);
+        } else {
+          mu = spqcds[b].mu;
+          epsilon = spqcds[b].epsilon;
+          b++;
+        }
+
+        var subband = resolution.subbands[j];
+        var gainLog2 = SubbandsGainLog2[subband.type];
+
+        // calulate quantization coefficient (Section E.1.1.1)
+        var delta = (reversible ? 1 :
+          Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048));
+        var mb = (guardBits + epsilon - 1);
+
+        // In the first resolution level, copyCoefficients will fill the
+        // whole array with coefficients. In the succeding passes,
+        // copyCoefficients will consecutively fill in the values that belong
+        // to the interleaved positions of the HL, LH, and HH coefficients.
+        // The LL coefficients will then be interleaved in Transform.iterate().
+        copyCoefficients(coefficients, width, height, subband, delta, mb,
+                         reversible, segmentationSymbolUsed);
+      }
+      subbandCoefficients.push({
+        width: width,
+        height: height,
+        items: coefficients
+      });
+    }
+
+    var result = transform.calculate(subbandCoefficients,
+                                     component.tcx0, component.tcy0);
+    return {
+      left: component.tcx0,
+      top: component.tcy0,
+      width: result.width,
+      height: result.height,
+      items: result.items
+    };
+  }
+  function transformComponents(context) {
+    var siz = context.SIZ;
+    var components = context.components;
+    var componentsCount = siz.Csiz;
+    var resultImages = [];
+    for (var i = 0, ii = context.tiles.length; i < ii; i++) {
+      var tile = context.tiles[i];
+      var transformedTiles = [];
+      var c;
+      for (c = 0; c < componentsCount; c++) {
+        transformedTiles[c] = transformTile(context, tile, c);
+      }
+      var tile0 = transformedTiles[0];
+      var out = new Uint8Array(tile0.items.length * componentsCount);
+      var result = {
+        left: tile0.left,
+        top: tile0.top,
+        width: tile0.width,
+        height: tile0.height,
+        items: out
+      };
+
+      // Section G.2.2 Inverse multi component transform
+      var shift, offset, max, min, maxK;
+      var pos = 0, j, jj, y0, y1, y2, r, g, b, k, val;
+      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {
+        var fourComponents = componentsCount === 4;
+        var y0items = transformedTiles[0].items;
+        var y1items = transformedTiles[1].items;
+        var y2items = transformedTiles[2].items;
+        var y3items = fourComponents ? transformedTiles[3].items : null;
+
+        // HACK: The multiple component transform formulas below assume that
+        // all components have the same precision. With this in mind, we
+        // compute shift and offset only once.
+        shift = components[0].precision - 8;
+        offset = (128 << shift) + 0.5;
+        max = 255 * (1 << shift);
+        maxK = max * 0.5;
+        min = -maxK;
+
+        var component0 = tile.components[0];
+        var alpha01 = componentsCount - 3;
+        jj = y0items.length;
+        if (!component0.codingStyleParameters.reversibleTransformation) {
+          // inverse irreversible multiple component transform
+          for (j = 0; j < jj; j++, pos += alpha01) {
+            y0 = y0items[j] + offset;
+            y1 = y1items[j];
+            y2 = y2items[j];
+            r = y0 + 1.402 * y2;
+            g = y0 - 0.34413 * y1 - 0.71414 * y2;
+            b = y0 + 1.772 * y1;
+            out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift;
+            out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift;
+            out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift;
+          }
+        } else {
+          // inverse reversible multiple component transform
+          for (j = 0; j < jj; j++, pos += alpha01) {
+            y0 = y0items[j] + offset;
+            y1 = y1items[j];
+            y2 = y2items[j];
+            g = y0 - ((y2 + y1) >> 2);
+            r = g + y2;
+            b = g + y1;
+            out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift;
+            out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift;
+            out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift;
+          }
+        }
+        if (fourComponents) {
+          for (j = 0, pos = 3; j < jj; j++, pos += 4) {
+            k = y3items[j];
+            out[pos] = k <= min ? 0 : k >= maxK ? 255 : (k + offset) >> shift;
+          }
+        }
+      } else { // no multi-component transform
+        for (c = 0; c < componentsCount; c++) {
+          var items = transformedTiles[c].items;
+          shift = components[c].precision - 8;
+          offset = (128 << shift) + 0.5;
+          max = (127.5 * (1 << shift));
+          min = -max;
+          for (pos = c, j = 0, jj = items.length; j < jj; j++) {
+            val = items[j];
+            out[pos] = val <= min ? 0 :
+                       val >= max ? 255 : (val + offset) >> shift;
+            pos += componentsCount;
+          }
+        }
+      }
+      resultImages.push(result);
+    }
+    return resultImages;
+  }
+  function initializeTile(context, tileIndex) {
+    var siz = context.SIZ;
+    var componentsCount = siz.Csiz;
+    var tile = context.tiles[tileIndex];
+    for (var c = 0; c < componentsCount; c++) {
+      var component = tile.components[c];
+      var qcdOrQcc = (context.currentTile.QCC[c] !== undefined ?
+        context.currentTile.QCC[c] : context.currentTile.QCD);
+      component.quantizationParameters = qcdOrQcc;
+      var codOrCoc = (context.currentTile.COC[c] !== undefined  ?
+        context.currentTile.COC[c] : context.currentTile.COD);
+      component.codingStyleParameters = codOrCoc;
+    }
+    tile.codingStyleDefaultParameters = context.currentTile.COD;
+  }
+
+  // Section B.10.2 Tag trees
+  var TagTree = (function TagTreeClosure() {
+    function TagTree(width, height) {
+      var levelsLength = log2(Math.max(width, height)) + 1;
+      this.levels = [];
+      for (var i = 0; i < levelsLength; i++) {
+        var level = {
+          width: width,
+          height: height,
+          items: []
+        };
+        this.levels.push(level);
+        width = Math.ceil(width / 2);
+        height = Math.ceil(height / 2);
+      }
+    }
+    TagTree.prototype = {
+      reset: function TagTree_reset(i, j) {
+        var currentLevel = 0, value = 0, level;
+        while (currentLevel < this.levels.length) {
+          level = this.levels[currentLevel];
+          var index = i + j * level.width;
+          if (level.items[index] !== undefined) {
+            value = level.items[index];
+            break;
+          }
+          level.index = index;
+          i >>= 1;
+          j >>= 1;
+          currentLevel++;
+        }
+        currentLevel--;
+        level = this.levels[currentLevel];
+        level.items[level.index] = value;
+        this.currentLevel = currentLevel;
+        delete this.value;
+      },
+      incrementValue: function TagTree_incrementValue() {
+        var level = this.levels[this.currentLevel];
+        level.items[level.index]++;
+      },
+      nextLevel: function TagTree_nextLevel() {
+        var currentLevel = this.currentLevel;
+        var level = this.levels[currentLevel];
+        var value = level.items[level.index];
+        currentLevel--;
+        if (currentLevel < 0) {
+          this.value = value;
+          return false;
+        }
+
+        this.currentLevel = currentLevel;
+        level = this.levels[currentLevel];
+        level.items[level.index] = value;
+        return true;
+      }
+    };
+    return TagTree;
+  })();
+
+  var InclusionTree = (function InclusionTreeClosure() {
+    function InclusionTree(width, height,  defaultValue) {
+      var levelsLength = log2(Math.max(width, height)) + 1;
+      this.levels = [];
+      for (var i = 0; i < levelsLength; i++) {
+        var items = new Uint8Array(width * height);
+        for (var j = 0, jj = items.length; j < jj; j++) {
+          items[j] = defaultValue;
+        }
+
+        var level = {
+          width: width,
+          height: height,
+          items: items
+        };
+        this.levels.push(level);
+
+        width = Math.ceil(width / 2);
+        height = Math.ceil(height / 2);
+      }
+    }
+    InclusionTree.prototype = {
+      reset: function InclusionTree_reset(i, j, stopValue) {
+        var currentLevel = 0;
+        while (currentLevel < this.levels.length) {
+          var level = this.levels[currentLevel];
+          var index = i + j * level.width;
+          level.index = index;
+          var value = level.items[index];
+
+          if (value === 0xFF) {
+            break;
+          }
+
+          if (value > stopValue) {
+            this.currentLevel = currentLevel;
+            // already know about this one, propagating the value to top levels
+            this.propagateValues();
+            return false;
+          }
+
+          i >>= 1;
+          j >>= 1;
+          currentLevel++;
+        }
+        this.currentLevel = currentLevel - 1;
+        return true;
+      },
+      incrementValue: function InclusionTree_incrementValue(stopValue) {
+        var level = this.levels[this.currentLevel];
+        level.items[level.index] = stopValue + 1;
+        this.propagateValues();
+      },
+      propagateValues: function InclusionTree_propagateValues() {
+        var levelIndex = this.currentLevel;
+        var level = this.levels[levelIndex];
+        var currentValue = level.items[level.index];
+        while (--levelIndex >= 0) {
+          level = this.levels[levelIndex];
+          level.items[level.index] = currentValue;
+        }
+      },
+      nextLevel: function InclusionTree_nextLevel() {
+        var currentLevel = this.currentLevel;
+        var level = this.levels[currentLevel];
+        var value = level.items[level.index];
+        level.items[level.index] = 0xFF;
+        currentLevel--;
+        if (currentLevel < 0) {
+          return false;
+        }
+
+        this.currentLevel = currentLevel;
+        level = this.levels[currentLevel];
+        level.items[level.index] = value;
+        return true;
+      }
+    };
+    return InclusionTree;
+  })();
+
+  // Section D. Coefficient bit modeling
+  var BitModel = (function BitModelClosure() {
+    var UNIFORM_CONTEXT = 17;
+    var RUNLENGTH_CONTEXT = 18;
+    // Table D-1
+    // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),
+    // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)
+    var LLAndLHContextsLabel = new Uint8Array([
+      0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,
+      7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,
+      8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8
+    ]);
+    var HLContextLabel = new Uint8Array([
+      0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,
+      8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,
+      4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8
+    ]);
+    var HHContextLabel = new Uint8Array([
+      0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,
+      5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,
+      8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8
+    ]);
+
+    function BitModel(width, height, subband, zeroBitPlanes, mb) {
+      this.width = width;
+      this.height = height;
+
+      this.contextLabelTable = (subband === 'HH' ? HHContextLabel :
+        (subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel));
+
+      var coefficientCount = width * height;
+
+      // coefficients outside the encoding region treated as insignificant
+      // add border state cells for significanceState
+      this.neighborsSignificance = new Uint8Array(coefficientCount);
+      this.coefficentsSign = new Uint8Array(coefficientCount);
+      this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) :
+                                  mb > 6 ? new Uint16Array(coefficientCount) :
+                                  new Uint8Array(coefficientCount);
+      this.processingFlags = new Uint8Array(coefficientCount);
+
+      var bitsDecoded = new Uint8Array(coefficientCount);
+      if (zeroBitPlanes !== 0) {
+        for (var i = 0; i < coefficientCount; i++) {
+          bitsDecoded[i] = zeroBitPlanes;
+        }
+      }
+      this.bitsDecoded = bitsDecoded;
+
+      this.reset();
+    }
+
+    BitModel.prototype = {
+      setDecoder: function BitModel_setDecoder(decoder) {
+        this.decoder = decoder;
+      },
+      reset: function BitModel_reset() {
+        // We have 17 contexts that are accessed via context labels,
+        // plus the uniform and runlength context.
+        this.contexts = new Int8Array(19);
+
+        // Contexts are packed into 1 byte:
+        // highest 7 bits carry the index, lowest bit carries mps
+        this.contexts[0] = (4 << 1) | 0;
+        this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;
+        this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;
+      },
+      setNeighborsSignificance:
+        function BitModel_setNeighborsSignificance(row, column, index) {
+        var neighborsSignificance = this.neighborsSignificance;
+        var width = this.width, height = this.height;
+        var left = (column > 0);
+        var right = (column + 1 < width);
+        var i;
+
+        if (row > 0) {
+          i = index - width;
+          if (left) {
+            neighborsSignificance[i - 1] += 0x10;
+          }
+          if (right) {
+            neighborsSignificance[i + 1] += 0x10;
+          }
+          neighborsSignificance[i] += 0x04;
+        }
+
+        if (row + 1 < height) {
+          i = index + width;
+          if (left) {
+            neighborsSignificance[i - 1] += 0x10;
+          }
+          if (right) {
+            neighborsSignificance[i + 1] += 0x10;
+          }
+          neighborsSignificance[i] += 0x04;
+        }
+
+        if (left) {
+          neighborsSignificance[index - 1] += 0x01;
+        }
+        if (right) {
+          neighborsSignificance[index + 1] += 0x01;
+        }
+        neighborsSignificance[index] |= 0x80;
+      },
+      runSignificancePropogationPass:
+        function BitModel_runSignificancePropogationPass() {
+        var decoder = this.decoder;
+        var width = this.width, height = this.height;
+        var coefficentsMagnitude = this.coefficentsMagnitude;
+        var coefficentsSign = this.coefficentsSign;
+        var neighborsSignificance = this.neighborsSignificance;
+        var processingFlags = this.processingFlags;
+        var contexts = this.contexts;
+        var labels = this.contextLabelTable;
+        var bitsDecoded = this.bitsDecoded;
+        var processedInverseMask = ~1;
+        var processedMask = 1;
+        var firstMagnitudeBitMask = 2;
+
+        for (var i0 = 0; i0 < height; i0 += 4) {
+          for (var j = 0; j < width; j++) {
+            var index = i0 * width + j;
+            for (var i1 = 0; i1 < 4; i1++, index += width) {
+              var i = i0 + i1;
+              if (i >= height) {
+                break;
+              }
+              // clear processed flag first
+              processingFlags[index] &= processedInverseMask;
+
+              if (coefficentsMagnitude[index] ||
+                  !neighborsSignificance[index]) {
+                continue;
+              }
+
+              var contextLabel = labels[neighborsSignificance[index]];
+              var decision = decoder.readBit(contexts, contextLabel);
+              if (decision) {
+                var sign = this.decodeSignBit(i, j, index);
+                coefficentsSign[index] = sign;
+                coefficentsMagnitude[index] = 1;
+                this.setNeighborsSignificance(i, j, index);
+                processingFlags[index] |= firstMagnitudeBitMask;
+              }
+              bitsDecoded[index]++;
+              processingFlags[index] |= processedMask;
+            }
+          }
+        }
+      },
+      decodeSignBit: function BitModel_decodeSignBit(row, column, index) {
+        var width = this.width, height = this.height;
+        var coefficentsMagnitude = this.coefficentsMagnitude;
+        var coefficentsSign = this.coefficentsSign;
+        var contribution, sign0, sign1, significance1;
+        var contextLabel, decoded;
+
+        // calculate horizontal contribution
+        significance1 = (column > 0 && coefficentsMagnitude[index - 1] !== 0);
+        if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {
+          sign1 = coefficentsSign[index + 1];
+          if (significance1) {
+            sign0 = coefficentsSign[index - 1];
+            contribution = 1 - sign1 - sign0;
+          } else {
+            contribution = 1 - sign1 - sign1;
+          }
+        } else if (significance1) {
+          sign0 = coefficentsSign[index - 1];
+          contribution = 1 - sign0 - sign0;
+        } else {
+          contribution = 0;
+        }
+        var horizontalContribution = 3 * contribution;
+
+        // calculate vertical contribution and combine with the horizontal
+        significance1 = (row > 0 && coefficentsMagnitude[index - width] !== 0);
+        if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {
+          sign1 = coefficentsSign[index + width];
+          if (significance1) {
+            sign0 = coefficentsSign[index - width];
+            contribution = 1 - sign1 - sign0 + horizontalContribution;
+          } else {
+            contribution = 1 - sign1 - sign1 + horizontalContribution;
+          }
+        } else if (significance1) {
+          sign0 = coefficentsSign[index - width];
+          contribution = 1 - sign0 - sign0 + horizontalContribution;
+        } else {
+          contribution = horizontalContribution;
+        }
+
+        if (contribution >= 0) {
+          contextLabel = 9 + contribution;
+          decoded = this.decoder.readBit(this.contexts, contextLabel);
+        } else {
+          contextLabel = 9 - contribution;
+          decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;
+        }
+        return decoded;
+      },
+      runMagnitudeRefinementPass:
+        function BitModel_runMagnitudeRefinementPass() {
+        var decoder = this.decoder;
+        var width = this.width, height = this.height;
+        var coefficentsMagnitude = this.coefficentsMagnitude;
+        var neighborsSignificance = this.neighborsSignificance;
+        var contexts = this.contexts;
+        var bitsDecoded = this.bitsDecoded;
+        var processingFlags = this.processingFlags;
+        var processedMask = 1;
+        var firstMagnitudeBitMask = 2;
+        var length = width * height;
+        var width4 = width * 4;
+
+        for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {
+          indexNext = Math.min(length, index0 + width4);
+          for (var j = 0; j < width; j++) {
+            for (var index = index0 + j; index < indexNext; index += width) {
+
+              // significant but not those that have just become
+              if (!coefficentsMagnitude[index] ||
+                (processingFlags[index] & processedMask) !== 0) {
+                continue;
+              }
+
+              var contextLabel = 16;
+              if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {
+                processingFlags[index] ^= firstMagnitudeBitMask;
+                // first refinement
+               var significance = neighborsSignificance[index] & 127;
+               contextLabel = significance === 0 ? 15 : 14;
+              }
+
+              var bit = decoder.readBit(contexts, contextLabel);
+              coefficentsMagnitude[index] =
+                (coefficentsMagnitude[index] << 1) | bit;
+              bitsDecoded[index]++;
+              processingFlags[index] |= processedMask;
+            }
+          }
+        }
+      },
+      runCleanupPass: function BitModel_runCleanupPass() {
+        var decoder = this.decoder;
+        var width = this.width, height = this.height;
+        var neighborsSignificance = this.neighborsSignificance;
+        var coefficentsMagnitude = this.coefficentsMagnitude;
+        var coefficentsSign = this.coefficentsSign;
+        var contexts = this.contexts;
+        var labels = this.contextLabelTable;
+        var bitsDecoded = this.bitsDecoded;
+        var processingFlags = this.processingFlags;
+        var processedMask = 1;
+        var firstMagnitudeBitMask = 2;
+        var oneRowDown = width;
+        var twoRowsDown = width * 2;
+        var threeRowsDown = width * 3;
+        var iNext;
+        for (var i0 = 0; i0 < height; i0 = iNext) {
+          iNext = Math.min(i0 + 4, height);
+          var indexBase = i0 * width;
+          var checkAllEmpty = i0 + 3 < height;
+          for (var j = 0; j < width; j++) {
+            var index0 = indexBase + j;
+            // using the property: labels[neighborsSignificance[index]] === 0
+            // when neighborsSignificance[index] === 0
+            var allEmpty = (checkAllEmpty &&
+              processingFlags[index0] === 0 &&
+              processingFlags[index0 + oneRowDown] === 0 &&
+              processingFlags[index0 + twoRowsDown] === 0 &&
+              processingFlags[index0 + threeRowsDown] === 0 &&
+              neighborsSignificance[index0] === 0 &&
+              neighborsSignificance[index0 + oneRowDown] === 0 &&
+              neighborsSignificance[index0 + twoRowsDown] === 0 &&
+              neighborsSignificance[index0 + threeRowsDown] === 0);
+            var i1 = 0, index = index0;
+            var i = i0, sign;
+            if (allEmpty) {
+              var hasSignificantCoefficent =
+                decoder.readBit(contexts, RUNLENGTH_CONTEXT);
+              if (!hasSignificantCoefficent) {
+                bitsDecoded[index0]++;
+                bitsDecoded[index0 + oneRowDown]++;
+                bitsDecoded[index0 + twoRowsDown]++;
+                bitsDecoded[index0 + threeRowsDown]++;
+                continue; // next column
+              }
+              i1 = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |
+                    decoder.readBit(contexts, UNIFORM_CONTEXT);
+              if (i1 !== 0) {
+                i = i0 + i1;
+                index += i1 * width;
+              }
+
+              sign = this.decodeSignBit(i, j, index);
+              coefficentsSign[index] = sign;
+              coefficentsMagnitude[index] = 1;
+              this.setNeighborsSignificance(i, j, index);
+              processingFlags[index] |= firstMagnitudeBitMask;
+
+              index = index0;
+              for (var i2 = i0; i2 <= i; i2++, index += width) {
+                bitsDecoded[index]++;
+              }
+
+              i1++;
+            }
+            for (i = i0 + i1; i < iNext; i++, index += width) {
+              if (coefficentsMagnitude[index] ||
+                (processingFlags[index] & processedMask) !== 0) {
+                continue;
+              }
+
+              var contextLabel = labels[neighborsSignificance[index]];
+              var decision = decoder.readBit(contexts, contextLabel);
+              if (decision === 1) {
+                sign = this.decodeSignBit(i, j, index);
+                coefficentsSign[index] = sign;
+                coefficentsMagnitude[index] = 1;
+                this.setNeighborsSignificance(i, j, index);
+                processingFlags[index] |= firstMagnitudeBitMask;
+              }
+              bitsDecoded[index]++;
+            }
+          }
+        }
+      },
+      checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {
+        var decoder = this.decoder;
+        var contexts = this.contexts;
+        var symbol = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |
+                     (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |
+                     (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |
+                      decoder.readBit(contexts, UNIFORM_CONTEXT);
+        if (symbol !== 0xA) {
+          throw new Error('JPX Error: Invalid segmentation symbol');
+        }
+      }
+    };
+
+    return BitModel;
+  })();
+
+  // Section F, Discrete wavelet transformation
+  var Transform = (function TransformClosure() {
+    function Transform() {}
+
+    Transform.prototype.calculate =
+      function transformCalculate(subbands, u0, v0) {
+      var ll = subbands[0];
+      for (var i = 1, ii = subbands.length; i < ii; i++) {
+        ll = this.iterate(ll, subbands[i], u0, v0);
+      }
+      return ll;
+    };
+    Transform.prototype.extend = function extend(buffer, offset, size) {
+      // Section F.3.7 extending... using max extension of 4
+      var i1 = offset - 1, j1 = offset + 1;
+      var i2 = offset + size - 2, j2 = offset + size;
+      buffer[i1--] = buffer[j1++];
+      buffer[j2++] = buffer[i2--];
+      buffer[i1--] = buffer[j1++];
+      buffer[j2++] = buffer[i2--];
+      buffer[i1--] = buffer[j1++];
+      buffer[j2++] = buffer[i2--];
+      buffer[i1] = buffer[j1];
+      buffer[j2] = buffer[i2];
+    };
+    Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh,
+                                                             u0, v0) {
+      var llWidth = ll.width, llHeight = ll.height, llItems = ll.items;
+      var width = hl_lh_hh.width;
+      var height = hl_lh_hh.height;
+      var items = hl_lh_hh.items;
+      var i, j, k, l, u, v;
+
+      // Interleave LL according to Section F.3.3
+      for (k = 0, i = 0; i < llHeight; i++) {
+        l = i * 2 * width;
+        for (j = 0; j < llWidth; j++, k++, l += 2) {
+          items[l] = llItems[k];
+        }
+      }
+      // The LL band is not needed anymore.
+      llItems = ll.items = null;
+
+      var bufferPadding = 4;
+      var rowBuffer = new Float32Array(width + 2 * bufferPadding);
+
+      // Section F.3.4 HOR_SR
+      if (width === 1) {
+        // if width = 1, when u0 even keep items as is, when odd divide by 2
+        if ((u0 & 1) !== 0) {
+          for (v = 0, k = 0; v < height; v++, k += width) {
+            items[k] *= 0.5;
+          }
+        }
+      } else {
+        for (v = 0, k = 0; v < height; v++, k += width) {
+          rowBuffer.set(items.subarray(k, k + width), bufferPadding);
+
+          this.extend(rowBuffer, bufferPadding, width);
+          this.filter(rowBuffer, bufferPadding, width);
+
+          items.set(
+            rowBuffer.subarray(bufferPadding, bufferPadding + width),
+            k);
+        }
+      }
+
+      // Accesses to the items array can take long, because it may not fit into
+      // CPU cache and has to be fetched from main memory. Since subsequent
+      // accesses to the items array are not local when reading columns, we
+      // have a cache miss every time. To reduce cache misses, get up to
+      // 'numBuffers' items at a time and store them into the individual
+      // buffers. The colBuffers should be small enough to fit into CPU cache.
+      var numBuffers = 16;
+      var colBuffers = [];
+      for (i = 0; i < numBuffers; i++) {
+        colBuffers.push(new Float32Array(height + 2 * bufferPadding));
+      }
+      var b, currentBuffer = 0;
+      ll = bufferPadding + height;
+
+      // Section F.3.5 VER_SR
+      if (height === 1) {
+          // if height = 1, when v0 even keep items as is, when odd divide by 2
+        if ((v0 & 1) !== 0) {
+          for (u = 0; u < width; u++) {
+            items[u] *= 0.5;
+          }
+        }
+      } else {
+        for (u = 0; u < width; u++) {
+          // if we ran out of buffers, copy several image columns at once
+          if (currentBuffer === 0) {
+            numBuffers = Math.min(width - u, numBuffers);
+            for (k = u, l = bufferPadding; l < ll; k += width, l++) {
+              for (b = 0; b < numBuffers; b++) {
+                colBuffers[b][l] = items[k + b];
+              }
+            }
+            currentBuffer = numBuffers;
+          }
+
+          currentBuffer--;
+          var buffer = colBuffers[currentBuffer];
+          this.extend(buffer, bufferPadding, height);
+          this.filter(buffer, bufferPadding, height);
+
+          // If this is last buffer in this group of buffers, flush all buffers.
+          if (currentBuffer === 0) {
+            k = u - numBuffers + 1;
+            for (l = bufferPadding; l < ll; k += width, l++) {
+              for (b = 0; b < numBuffers; b++) {
+                items[k + b] = colBuffers[b][l];
+              }
+            }
+          }
+        }
+      }
+
+      return {
+        width: width,
+        height: height,
+        items: items
+      };
+    };
+    return Transform;
+  })();
+
+  // Section 3.8.2 Irreversible 9-7 filter
+  var IrreversibleTransform = (function IrreversibleTransformClosure() {
+    function IrreversibleTransform() {
+      Transform.call(this);
+    }
+
+    IrreversibleTransform.prototype = Object.create(Transform.prototype);
+    IrreversibleTransform.prototype.filter =
+      function irreversibleTransformFilter(x, offset, length) {
+      var len = length >> 1;
+      offset = offset | 0;
+      var j, n, current, next;
+
+      var alpha = -1.586134342059924;
+      var beta = -0.052980118572961;
+      var gamma = 0.882911075530934;
+      var delta = 0.443506852043971;
+      var K = 1.230174104914001;
+      var K_ = 1 / K;
+
+      // step 1 is combined with step 3
+
+      // step 2
+      j = offset - 3;
+      for (n = len + 4; n--; j += 2) {
+        x[j] *= K_;
+      }
+
+      // step 1 & 3
+      j = offset - 2;
+      current = delta * x[j -1];
+      for (n = len + 3; n--; j += 2) {
+        next = delta * x[j + 1];
+        x[j] = K * x[j] - current - next;
+        if (n--) {
+          j += 2;
+          current = delta * x[j + 1];
+          x[j] = K * x[j] - current - next;
+        } else {
+          break;
+        }
+      }
+
+      // step 4
+      j = offset - 1;
+      current = gamma * x[j - 1];
+      for (n = len + 2; n--; j += 2) {
+        next = gamma * x[j + 1];
+        x[j] -= current + next;
+        if (n--) {
+          j += 2;
+          current = gamma * x[j + 1];
+          x[j] -= current + next;
+        } else {
+          break;
+        }
+      }
+
+      // step 5
+      j = offset;
+      current = beta * x[j - 1];
+      for (n = len + 1; n--; j += 2) {
+        next = beta * x[j + 1];
+        x[j] -= current + next;
+        if (n--) {
+          j += 2;
+          current = beta * x[j + 1];
+          x[j] -= current + next;
+        } else {
+          break;
+        }
+      }
+
+      // step 6
+      if (len !== 0) {
+        j = offset + 1;
+        current = alpha * x[j - 1];
+        for (n = len; n--; j += 2) {
+          next = alpha * x[j + 1];
+          x[j] -= current + next;
+          if (n--) {
+            j += 2;
+            current = alpha * x[j + 1];
+            x[j] -= current + next;
+          } else {
+            break;
+          }
+        }
+      }
+    };
+
+    return IrreversibleTransform;
+  })();
+
+  // Section 3.8.1 Reversible 5-3 filter
+  var ReversibleTransform = (function ReversibleTransformClosure() {
+    function ReversibleTransform() {
+      Transform.call(this);
+    }
+
+    ReversibleTransform.prototype = Object.create(Transform.prototype);
+    ReversibleTransform.prototype.filter =
+      function reversibleTransformFilter(x, offset, length) {
+      var len = length >> 1;
+      offset = offset | 0;
+      var j, n;
+
+      for (j = offset, n = len + 1; n--; j += 2) {
+        x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;
+      }
+
+      for (j = offset + 1, n = len; n--; j += 2) {
+        x[j] += (x[j - 1] + x[j + 1]) >> 1;
+      }
+    };
+
+    return ReversibleTransform;
+  })();
+
+  return JpxImage;
+})();
+
+
+var Jbig2Image = (function Jbig2ImageClosure() {
+  // Utility data structures
+  function ContextCache() {}
+
+  ContextCache.prototype = {
+    getContexts: function(id) {
+      if (id in this) {
+        return this[id];
+      }
+      return (this[id] = new Int8Array(1 << 16));
+    }
+  };
+
+  function DecodingContext(data, start, end) {
+    this.data = data;
+    this.start = start;
+    this.end = end;
+  }
+
+  DecodingContext.prototype = {
+    get decoder() {
+      var decoder = new ArithmeticDecoder(this.data, this.start, this.end);
+      return shadow(this, 'decoder', decoder);
+    },
+    get contextCache() {
+      var cache = new ContextCache();
+      return shadow(this, 'contextCache', cache);
+    }
+  };
+
+  // Annex A. Arithmetic Integer Decoding Procedure
+  // A.2 Procedure for decoding values
+  function decodeInteger(contextCache, procedure, decoder) {
+    var contexts = contextCache.getContexts(procedure);
+    var prev = 1;
+
+    function readBits(length) {
+      var v = 0;
+      for (var i = 0; i < length; i++) {
+        var bit = decoder.readBit(contexts, prev);
+        prev = (prev < 256 ? (prev << 1) | bit :
+                (((prev << 1) | bit) & 511) | 256);
+        v = (v << 1) | bit;
+      }
+      return v >>> 0;
+    }
+
+    var sign = readBits(1);
+    var value = readBits(1) ?
+                  (readBits(1) ?
+                    (readBits(1) ?
+                      (readBits(1) ?
+                        (readBits(1) ?
+                          (readBits(32) + 4436) :
+                        readBits(12) + 340) :
+                      readBits(8) + 84) :
+                    readBits(6) + 20) :
+                  readBits(4) + 4) :
+                readBits(2);
+    return (sign === 0 ? value : (value > 0 ? -value : null));
+  }
+
+  // A.3 The IAID decoding procedure
+  function decodeIAID(contextCache, decoder, codeLength) {
+    var contexts = contextCache.getContexts('IAID');
+
+    var prev = 1;
+    for (var i = 0; i < codeLength; i++) {
+      var bit = decoder.readBit(contexts, prev);
+      prev = (prev << 1) | bit;
+    }
+    if (codeLength < 31) {
+      return prev & ((1 << codeLength) - 1);
+    }
+    return prev & 0x7FFFFFFF;
+  }
+
+  // 7.3 Segment types
+  var SegmentTypes = [
+    'SymbolDictionary', null, null, null, 'IntermediateTextRegion', null,
+    'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null,
+    null, null, null, null, null, 'patternDictionary', null, null, null,
+    'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion',
+    'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null,
+    null, null, null, null, null, 'IntermediateGenericRegion', null,
+    'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion',
+    'IntermediateGenericRefinementRegion', null,
+    'ImmediateGenericRefinementRegion',
+    'ImmediateLosslessGenericRefinementRegion', null, null, null, null,
+    'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles',
+    'Tables', null, null, null, null, null, null, null, null,
+    'Extension'
+  ];
+
+  var CodingTemplates = [
+    [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: -2, y: -1},
+     {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: 2, y: -1},
+     {x: -4, y: 0}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}],
+    [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: 2, y: -2},
+     {x: -2, y: -1}, {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1},
+     {x: 2, y: -1}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}],
+    [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: -2, y: -1},
+     {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: -2, y: 0},
+     {x: -1, y: 0}],
+    [{x: -3, y: -1}, {x: -2, y: -1}, {x: -1, y: -1}, {x: 0, y: -1},
+     {x: 1, y: -1}, {x: -4, y: 0}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}]
+  ];
+
+  var RefinementTemplates = [
+    {
+      coding: [{x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}],
+      reference: [{x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}, {x: 0, y: 0},
+                  {x: 1, y: 0}, {x: -1, y: 1}, {x: 0, y: 1}, {x: 1, y: 1}]
+    },
+    {
+      coding: [{x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}],
+      reference: [{x: 0, y: -1}, {x: -1, y: 0}, {x: 0, y: 0}, {x: 1, y: 0},
+                  {x: 0, y: 1}, {x: 1, y: 1}]
+    }
+  ];
+
+  // See 6.2.5.7 Decoding the bitmap.
+  var ReusedContexts = [
+    0x9B25, // 10011 0110010 0101
+    0x0795, // 0011 110010 101
+    0x00E5, // 001 11001 01
+    0x0195  // 011001 0101
+  ];
+
+  var RefinementReusedContexts = [
+    0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)
+    0x0008  // '0000' + '001000'
+  ];
+
+  function decodeBitmapTemplate0(width, height, decodingContext) {
+    var decoder = decodingContext.decoder;
+    var contexts = decodingContext.contextCache.getContexts('GB');
+    var contextLabel, i, j, pixel, row, row1, row2, bitmap = [];
+
+    // ...ooooo....
+    // ..ooooooo... Context template for current pixel (X)
+    // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)
+    var OLD_PIXEL_MASK = 0x7BF7; // 01111 0111111 0111
+
+    for (i = 0; i < height; i++) {
+      row = bitmap[i] = new Uint8Array(width);
+      row1 = (i < 1) ? row : bitmap[i - 1];
+      row2 = (i < 2) ? row : bitmap[i - 2];
+
+      // At the beginning of each row:
+      // Fill contextLabel with pixels that are above/right of (X)
+      contextLabel = (row2[0] << 13) | (row2[1] << 12) | (row2[2] << 11) |
+                     (row1[0] << 7) | (row1[1] << 6) | (row1[2] << 5) |
+                     (row1[3] << 4);
+
+      for (j = 0; j < width; j++) {
+        row[j] = pixel = decoder.readBit(contexts, contextLabel);
+
+        // At each pixel: Clear contextLabel pixels that are shifted
+        // out of the context, then add new ones.
+        contextLabel = ((contextLabel & OLD_PIXEL_MASK) << 1) |
+                       (j + 3 < width ? row2[j + 3] << 11 : 0) |
+                       (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;
+      }
+    }
+
+    return bitmap;
+  }
+
+  // 6.2 Generic Region Decoding Procedure
+  function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at,
+                        decodingContext) {
+    if (mmr) {
+      error('JBIG2 error: MMR encoding is not supported');
+    }
+
+    // Use optimized version for the most common case
+    if (templateIndex === 0 && !skip && !prediction && at.length === 4 &&
+        at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 &&
+        at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {
+      return decodeBitmapTemplate0(width, height, decodingContext);
+    }
+
+    var useskip = !!skip;
+    var template = CodingTemplates[templateIndex].concat(at);
+
+    // Sorting is non-standard, and it is not required. But sorting increases
+    // the number of template bits that can be reused from the previous
+    // contextLabel in the main loop.
+    template.sort(function (a, b) {
+      return (a.y - b.y) || (a.x - b.x);
+    });
+
+    var templateLength = template.length;
+    var templateX = new Int8Array(templateLength);
+    var templateY = new Int8Array(templateLength);
+    var changingTemplateEntries = [];
+    var reuseMask = 0, minX = 0, maxX = 0, minY = 0;
+    var c, k;
+
+    for (k = 0; k < templateLength; k++) {
+      templateX[k] = template[k].x;
+      templateY[k] = template[k].y;
+      minX = Math.min(minX, template[k].x);
+      maxX = Math.max(maxX, template[k].x);
+      minY = Math.min(minY, template[k].y);
+      // Check if the template pixel appears in two consecutive context labels,
+      // so it can be reused. Otherwise, we add it to the list of changing
+      // template entries.
+      if (k < templateLength - 1 &&
+          template[k].y === template[k + 1].y &&
+          template[k].x === template[k + 1].x - 1) {
+        reuseMask |= 1 << (templateLength - 1 - k);
+      } else {
+        changingTemplateEntries.push(k);
+      }
+    }
+    var changingEntriesLength = changingTemplateEntries.length;
+
+    var changingTemplateX = new Int8Array(changingEntriesLength);
+    var changingTemplateY = new Int8Array(changingEntriesLength);
+    var changingTemplateBit = new Uint16Array(changingEntriesLength);
+    for (c = 0; c < changingEntriesLength; c++) {
+      k = changingTemplateEntries[c];
+      changingTemplateX[c] = template[k].x;
+      changingTemplateY[c] = template[k].y;
+      changingTemplateBit[c] = 1 << (templateLength - 1 - k);
+    }
+
+    // Get the safe bounding box edges from the width, height, minX, maxX, minY
+    var sbb_left = -minX;
+    var sbb_top = -minY;
+    var sbb_right = width - maxX;
+
+    var pseudoPixelContext = ReusedContexts[templateIndex];
+    var row = new Uint8Array(width);
+    var bitmap = [];
+
+    var decoder = decodingContext.decoder;
+    var contexts = decodingContext.contextCache.getContexts('GB');
+
+    var ltp = 0, j, i0, j0, contextLabel = 0, bit, shift;
+    for (var i = 0; i < height; i++) {
+      if (prediction) {
+        var sltp = decoder.readBit(contexts, pseudoPixelContext);
+        ltp ^= sltp;
+        if (ltp) {
+          bitmap.push(row); // duplicate previous row
+          continue;
+        }
+      }
+      row = new Uint8Array(row);
+      bitmap.push(row);
+      for (j = 0; j < width; j++) {
+        if (useskip && skip[i][j]) {
+          row[j] = 0;
+          continue;
+        }
+        // Are we in the middle of a scanline, so we can reuse contextLabel
+        // bits?
+        if (j >= sbb_left && j < sbb_right && i >= sbb_top) {
+          // If yes, we can just shift the bits that are reusable and only
+          // fetch the remaining ones.
+          contextLabel = (contextLabel << 1) & reuseMask;
+          for (k = 0; k < changingEntriesLength; k++) {
+            i0 = i + changingTemplateY[k];
+            j0 = j + changingTemplateX[k];
+            bit = bitmap[i0][j0];
+            if (bit) {
+              bit = changingTemplateBit[k];
+              contextLabel |= bit;
+            }
+          }
+        } else {
+          // compute the contextLabel from scratch
+          contextLabel = 0;
+          shift = templateLength - 1;
+          for (k = 0; k < templateLength; k++, shift--) {
+            j0 = j + templateX[k];
+            if (j0 >= 0 && j0 < width) {
+              i0 = i + templateY[k];
+              if (i0 >= 0) {
+                bit = bitmap[i0][j0];
+                if (bit) {
+                  contextLabel |= bit << shift;
+                }
+              }
+            }
+          }
+        }
+        var pixel = decoder.readBit(contexts, contextLabel);
+        row[j] = pixel;
+      }
+    }
+    return bitmap;
+  }
+
+  // 6.3.2 Generic Refinement Region Decoding Procedure
+  function decodeRefinement(width, height, templateIndex, referenceBitmap,
+                            offsetX, offsetY, prediction, at,
+                            decodingContext) {
+    var codingTemplate = RefinementTemplates[templateIndex].coding;
+    if (templateIndex === 0) {
+      codingTemplate = codingTemplate.concat([at[0]]);
+    }
+    var codingTemplateLength = codingTemplate.length;
+    var codingTemplateX = new Int32Array(codingTemplateLength);
+    var codingTemplateY = new Int32Array(codingTemplateLength);
+    var k;
+    for (k = 0; k < codingTemplateLength; k++) {
+      codingTemplateX[k] = codingTemplate[k].x;
+      codingTemplateY[k] = codingTemplate[k].y;
+    }
+
+    var referenceTemplate = RefinementTemplates[templateIndex].reference;
+    if (templateIndex === 0) {
+      referenceTemplate = referenceTemplate.concat([at[1]]);
+    }
+    var referenceTemplateLength = referenceTemplate.length;
+    var referenceTemplateX = new Int32Array(referenceTemplateLength);
+    var referenceTemplateY = new Int32Array(referenceTemplateLength);
+    for (k = 0; k < referenceTemplateLength; k++) {
+      referenceTemplateX[k] = referenceTemplate[k].x;
+      referenceTemplateY[k] = referenceTemplate[k].y;
+    }
+    var referenceWidth = referenceBitmap[0].length;
+    var referenceHeight = referenceBitmap.length;
+
+    var pseudoPixelContext = RefinementReusedContexts[templateIndex];
+    var bitmap = [];
+
+    var decoder = decodingContext.decoder;
+    var contexts = decodingContext.contextCache.getContexts('GR');
+
+    var ltp = 0;
+    for (var i = 0; i < height; i++) {
+      if (prediction) {
+        var sltp = decoder.readBit(contexts, pseudoPixelContext);
+        ltp ^= sltp;
+        if (ltp) {
+          error('JBIG2 error: prediction is not supported');
+        }
+      }
+      var row = new Uint8Array(width);
+      bitmap.push(row);
+      for (var j = 0; j < width; j++) {
+        var i0, j0;
+        var contextLabel = 0;
+        for (k = 0; k < codingTemplateLength; k++) {
+          i0 = i + codingTemplateY[k];
+          j0 = j + codingTemplateX[k];
+          if (i0 < 0 || j0 < 0 || j0 >= width) {
+            contextLabel <<= 1; // out of bound pixel
+          } else {
+            contextLabel = (contextLabel << 1) | bitmap[i0][j0];
+          }
+        }
+        for (k = 0; k < referenceTemplateLength; k++) {
+          i0 = i + referenceTemplateY[k] + offsetY;
+          j0 = j + referenceTemplateX[k] + offsetX;
+          if (i0 < 0 || i0 >= referenceHeight || j0 < 0 ||
+              j0 >= referenceWidth) {
+            contextLabel <<= 1; // out of bound pixel
+          } else {
+            contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];
+          }
+        }
+        var pixel = decoder.readBit(contexts, contextLabel);
+        row[j] = pixel;
+      }
+    }
+
+    return bitmap;
+  }
+
+  // 6.5.5 Decoding the symbol dictionary
+  function decodeSymbolDictionary(huffman, refinement, symbols,
+                                  numberOfNewSymbols, numberOfExportedSymbols,
+                                  huffmanTables, templateIndex, at,
+                                  refinementTemplateIndex, refinementAt,
+                                  decodingContext) {
+    if (huffman) {
+      error('JBIG2 error: huffman is not supported');
+    }
+
+    var newSymbols = [];
+    var currentHeight = 0;
+    var symbolCodeLength = log2(symbols.length + numberOfNewSymbols);
+
+    var decoder = decodingContext.decoder;
+    var contextCache = decodingContext.contextCache;
+
+    while (newSymbols.length < numberOfNewSymbols) {
+      var deltaHeight = decodeInteger(contextCache, 'IADH', decoder); // 6.5.6
+      currentHeight += deltaHeight;
+      var currentWidth = 0;
+      var totalWidth = 0;
+      while (true) {
+        var deltaWidth = decodeInteger(contextCache, 'IADW', decoder); // 6.5.7
+        if (deltaWidth === null) {
+          break; // OOB
+        }
+        currentWidth += deltaWidth;
+        totalWidth += currentWidth;
+        var bitmap;
+        if (refinement) {
+          // 6.5.8.2 Refinement/aggregate-coded symbol bitmap
+          var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);
+          if (numberOfInstances > 1) {
+            bitmap = decodeTextRegion(huffman, refinement,
+                                      currentWidth, currentHeight, 0,
+                                      numberOfInstances, 1, //strip size
+                                      symbols.concat(newSymbols),
+                                      symbolCodeLength,
+                                      0, //transposed
+                                      0, //ds offset
+                                      1, //top left 7.4.3.1.1
+                                      0, //OR operator
+                                      huffmanTables,
+                                      refinementTemplateIndex, refinementAt,
+                                      decodingContext);
+          } else {
+            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
+            var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3
+            var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4
+            var symbol = (symbolId < symbols.length ? symbols[symbolId] :
+                          newSymbols[symbolId - symbols.length]);
+            bitmap = decodeRefinement(currentWidth, currentHeight,
+            refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt,
+            decodingContext);
+          }
+        } else {
+          // 6.5.8.1 Direct-coded symbol bitmap
+          bitmap = decodeBitmap(false, currentWidth, currentHeight,
+            templateIndex, false, null, at, decodingContext);
+        }
+        newSymbols.push(bitmap);
+      }
+    }
+    // 6.5.10 Exported symbols
+    var exportedSymbols = [];
+    var flags = [], currentFlag = false;
+    var totalSymbolsLength = symbols.length + numberOfNewSymbols;
+    while (flags.length < totalSymbolsLength) {
+      var runLength = decodeInteger(contextCache, 'IAEX', decoder);
+      while (runLength--) {
+        flags.push(currentFlag);
+      }
+      currentFlag = !currentFlag;
+    }
+    for (var i = 0, ii = symbols.length; i < ii; i++) {
+      if (flags[i]) {
+        exportedSymbols.push(symbols[i]);
+      }
+    }
+    for (var j = 0; j < numberOfNewSymbols; i++, j++) {
+      if (flags[i]) {
+        exportedSymbols.push(newSymbols[j]);
+      }
+    }
+    return exportedSymbols;
+  }
+
+  function decodeTextRegion(huffman, refinement, width, height,
+                            defaultPixelValue, numberOfSymbolInstances,
+                            stripSize, inputSymbols, symbolCodeLength,
+                            transposed, dsOffset, referenceCorner,
+                            combinationOperator, huffmanTables,
+                            refinementTemplateIndex, refinementAt,
+                            decodingContext) {
+    if (huffman) {
+      error('JBIG2 error: huffman is not supported');
+    }
+
+    // Prepare bitmap
+    var bitmap = [];
+    var i, row;
+    for (i = 0; i < height; i++) {
+      row = new Uint8Array(width);
+      if (defaultPixelValue) {
+        for (var j = 0; j < width; j++) {
+          row[j] = defaultPixelValue;
+        }
+      }
+      bitmap.push(row);
+    }
+
+    var decoder = decodingContext.decoder;
+    var contextCache = decodingContext.contextCache;
+    var stripT = -decodeInteger(contextCache, 'IADT', decoder); // 6.4.6
+    var firstS = 0;
+    i = 0;
+    while (i < numberOfSymbolInstances) {
+      var deltaT = decodeInteger(contextCache, 'IADT', decoder); // 6.4.6
+      stripT += deltaT;
+
+      var deltaFirstS = decodeInteger(contextCache, 'IAFS', decoder); // 6.4.7
+      firstS += deltaFirstS;
+      var currentS = firstS;
+      do {
+        var currentT = (stripSize === 1 ? 0 :
+                        decodeInteger(contextCache, 'IAIT', decoder)); // 6.4.9
+        var t = stripSize * stripT + currentT;
+        var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
+        var applyRefinement = (refinement &&
+                               decodeInteger(contextCache, 'IARI', decoder));
+        var symbolBitmap = inputSymbols[symbolId];
+        var symbolWidth = symbolBitmap[0].length;
+        var symbolHeight = symbolBitmap.length;
+        if (applyRefinement) {
+          var rdw = decodeInteger(contextCache, 'IARDW', decoder); // 6.4.11.1
+          var rdh = decodeInteger(contextCache, 'IARDH', decoder); // 6.4.11.2
+          var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3
+          var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4
+          symbolWidth += rdw;
+          symbolHeight += rdh;
+          symbolBitmap = decodeRefinement(symbolWidth, symbolHeight,
+            refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx,
+            (rdh >> 1) + rdy, false, refinementAt,
+            decodingContext);
+        }
+        var offsetT = t - ((referenceCorner & 1) ? 0 : symbolHeight);
+        var offsetS = currentS - ((referenceCorner & 2) ? symbolWidth : 0);
+        var s2, t2, symbolRow;
+        if (transposed) {
+          // Place Symbol Bitmap from T1,S1
+          for (s2 = 0; s2 < symbolHeight; s2++) {
+            row = bitmap[offsetS + s2];
+            if (!row) {
+              continue;
+            }
+            symbolRow = symbolBitmap[s2];
+            // To ignore Parts of Symbol bitmap which goes
+            // outside bitmap region
+            var maxWidth = Math.min(width - offsetT, symbolWidth);
+            switch (combinationOperator) {
+              case 0: // OR
+                for (t2 = 0; t2 < maxWidth; t2++) {
+                  row[offsetT + t2] |= symbolRow[t2];
+                }
+                break;
+              case 2: // XOR
+                for (t2 = 0; t2 < maxWidth; t2++) {
+                  row[offsetT + t2] ^= symbolRow[t2];
+                }
+                break;
+              default:
+                error('JBIG2 error: operator ' + combinationOperator +
+                      ' is not supported');
+            }
+          }
+          currentS += symbolHeight - 1;
+        } else {
+          for (t2 = 0; t2 < symbolHeight; t2++) {
+            row = bitmap[offsetT + t2];
+            if (!row) {
+              continue;
+            }
+            symbolRow = symbolBitmap[t2];
+            switch (combinationOperator) {
+              case 0: // OR
+                for (s2 = 0; s2 < symbolWidth; s2++) {
+                  row[offsetS + s2] |= symbolRow[s2];
+                }
+                break;
+              case 2: // XOR
+                for (s2 = 0; s2 < symbolWidth; s2++) {
+                  row[offsetS + s2] ^= symbolRow[s2];
+                }
+                break;
+              default:
+                error('JBIG2 error: operator ' + combinationOperator +
+                      ' is not supported');
+            }
+          }
+          currentS += symbolWidth - 1;
+        }
+        i++;
+        var deltaS = decodeInteger(contextCache, 'IADS', decoder); // 6.4.8
+        if (deltaS === null) {
+          break; // OOB
+        }
+        currentS += deltaS + dsOffset;
+      } while (true);
+    }
+    return bitmap;
+  }
+
+  function readSegmentHeader(data, start) {
+    var segmentHeader = {};
+    segmentHeader.number = readUint32(data, start);
+    var flags = data[start + 4];
+    var segmentType = flags & 0x3F;
+    if (!SegmentTypes[segmentType]) {
+      error('JBIG2 error: invalid segment type: ' + segmentType);
+    }
+    segmentHeader.type = segmentType;
+    segmentHeader.typeName = SegmentTypes[segmentType];
+    segmentHeader.deferredNonRetain = !!(flags & 0x80);
+
+    var pageAssociationFieldSize = !!(flags & 0x40);
+    var referredFlags = data[start + 5];
+    var referredToCount = (referredFlags >> 5) & 7;
+    var retainBits = [referredFlags & 31];
+    var position = start + 6;
+    if (referredFlags === 7) {
+      referredToCount = readUint32(data, position - 1) & 0x1FFFFFFF;
+      position += 3;
+      var bytes = (referredToCount + 7) >> 3;
+      retainBits[0] = data[position++];
+      while (--bytes > 0) {
+        retainBits.push(data[position++]);
+      }
+    } else if (referredFlags === 5 || referredFlags === 6) {
+      error('JBIG2 error: invalid referred-to flags');
+    }
+
+    segmentHeader.retainBits = retainBits;
+    var referredToSegmentNumberSize = (segmentHeader.number <= 256 ? 1 :
+      (segmentHeader.number <= 65536 ? 2 : 4));
+    var referredTo = [];
+    var i, ii;
+    for (i = 0; i < referredToCount; i++) {
+      var number = (referredToSegmentNumberSize === 1 ? data[position] :
+        (referredToSegmentNumberSize === 2 ? readUint16(data, position) :
+        readUint32(data, position)));
+      referredTo.push(number);
+      position += referredToSegmentNumberSize;
+    }
+    segmentHeader.referredTo = referredTo;
+    if (!pageAssociationFieldSize) {
+      segmentHeader.pageAssociation = data[position++];
+    } else {
+      segmentHeader.pageAssociation = readUint32(data, position);
+      position += 4;
+    }
+    segmentHeader.length = readUint32(data, position);
+    position += 4;
+
+    if (segmentHeader.length === 0xFFFFFFFF) {
+      // 7.2.7 Segment data length, unknown segment length
+      if (segmentType === 38) { // ImmediateGenericRegion
+        var genericRegionInfo = readRegionSegmentInformation(data, position);
+        var genericRegionSegmentFlags = data[position +
+          RegionSegmentInformationFieldLength];
+        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);
+        // searching for the segment end
+        var searchPatternLength = 6;
+        var searchPattern = new Uint8Array(searchPatternLength);
+        if (!genericRegionMmr) {
+          searchPattern[0] = 0xFF;
+          searchPattern[1] = 0xAC;
+        }
+        searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xFF;
+        searchPattern[3] = (genericRegionInfo.height >> 16) & 0xFF;
+        searchPattern[4] = (genericRegionInfo.height >> 8) & 0xFF;
+        searchPattern[5] = genericRegionInfo.height & 0xFF;
+        for (i = position, ii = data.length; i < ii; i++) {
+          var j = 0;
+          while (j < searchPatternLength && searchPattern[j] === data[i + j]) {
+            j++;
+          }
+          if (j === searchPatternLength) {
+            segmentHeader.length = i + searchPatternLength;
+            break;
+          }
+        }
+        if (segmentHeader.length === 0xFFFFFFFF) {
+          error('JBIG2 error: segment end was not found');
+        }
+      } else {
+        error('JBIG2 error: invalid unknown segment length');
+      }
+    }
+    segmentHeader.headerEnd = position;
+    return segmentHeader;
+  }
+
+  function readSegments(header, data, start, end) {
+    var segments = [];
+    var position = start;
+    while (position < end) {
+      var segmentHeader = readSegmentHeader(data, position);
+      position = segmentHeader.headerEnd;
+      var segment = {
+        header: segmentHeader,
+        data: data
+      };
+      if (!header.randomAccess) {
+        segment.start = position;
+        position += segmentHeader.length;
+        segment.end = position;
+      }
+      segments.push(segment);
+      if (segmentHeader.type === 51) {
+        break; // end of file is found
+      }
+    }
+    if (header.randomAccess) {
+      for (var i = 0, ii = segments.length; i < ii; i++) {
+        segments[i].start = position;
+        position += segments[i].header.length;
+        segments[i].end = position;
+      }
+    }
+    return segments;
+  }
+
+  // 7.4.1 Region segment information field
+  function readRegionSegmentInformation(data, start) {
+    return {
+      width: readUint32(data, start),
+      height: readUint32(data, start + 4),
+      x: readUint32(data, start + 8),
+      y: readUint32(data, start + 12),
+      combinationOperator: data[start + 16] & 7
+    };
+  }
+  var RegionSegmentInformationFieldLength = 17;
+
+  function processSegment(segment, visitor) {
+    var header = segment.header;
+
+    var data = segment.data, position = segment.start, end = segment.end;
+    var args, at, i, atLength;
+    switch (header.type) {
+      case 0: // SymbolDictionary
+        // 7.4.2 Symbol dictionary segment syntax
+        var dictionary = {};
+        var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1
+        dictionary.huffman = !!(dictionaryFlags & 1);
+        dictionary.refinement = !!(dictionaryFlags & 2);
+        dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;
+        dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;
+        dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;
+        dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;
+        dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);
+        dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);
+        dictionary.template = (dictionaryFlags >> 10) & 3;
+        dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;
+        position += 2;
+        if (!dictionary.huffman) {
+          atLength = dictionary.template === 0 ? 4 : 1;
+          at = [];
+          for (i = 0; i < atLength; i++) {
+            at.push({
+              x: readInt8(data, position),
+              y: readInt8(data, position + 1)
+            });
+            position += 2;
+          }
+          dictionary.at = at;
+        }
+        if (dictionary.refinement && !dictionary.refinementTemplate) {
+          at = [];
+          for (i = 0; i < 2; i++) {
+            at.push({
+              x: readInt8(data, position),
+              y: readInt8(data, position + 1)
+            });
+            position += 2;
+          }
+          dictionary.refinementAt = at;
+        }
+        dictionary.numberOfExportedSymbols = readUint32(data, position);
+        position += 4;
+        dictionary.numberOfNewSymbols = readUint32(data, position);
+        position += 4;
+        args = [dictionary, header.number, header.referredTo,
+                data, position, end];
+        break;
+      case 6: // ImmediateTextRegion
+      case 7: // ImmediateLosslessTextRegion
+        var textRegion = {};
+        textRegion.info = readRegionSegmentInformation(data, position);
+        position += RegionSegmentInformationFieldLength;
+        var textRegionSegmentFlags = readUint16(data, position);
+        position += 2;
+        textRegion.huffman = !!(textRegionSegmentFlags & 1);
+        textRegion.refinement = !!(textRegionSegmentFlags & 2);
+        textRegion.stripSize = 1 << ((textRegionSegmentFlags >> 2) & 3);
+        textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;
+        textRegion.transposed = !!(textRegionSegmentFlags & 64);
+        textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;
+        textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;
+        textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;
+        textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;
+        if (textRegion.huffman) {
+          var textRegionHuffmanFlags = readUint16(data, position);
+          position += 2;
+          textRegion.huffmanFS = (textRegionHuffmanFlags) & 3;
+          textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;
+          textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;
+          textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;
+          textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;
+          textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;
+          textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;
+          textRegion.huffmanRefinementSizeSelector =
+            !!(textRegionHuffmanFlags & 14);
+        }
+        if (textRegion.refinement && !textRegion.refinementTemplate) {
+          at = [];
+          for (i = 0; i < 2; i++) {
+            at.push({
+              x: readInt8(data, position),
+              y: readInt8(data, position + 1)
+            });
+            position += 2;
+          }
+          textRegion.refinementAt = at;
+        }
+        textRegion.numberOfSymbolInstances = readUint32(data, position);
+        position += 4;
+        // TODO 7.4.3.1.7 Symbol ID Huffman table decoding
+        if (textRegion.huffman) {
+          error('JBIG2 error: huffman is not supported');
+        }
+        args = [textRegion, header.referredTo, data, position, end];
+        break;
+      case 38: // ImmediateGenericRegion
+      case 39: // ImmediateLosslessGenericRegion
+        var genericRegion = {};
+        genericRegion.info = readRegionSegmentInformation(data, position);
+        position += RegionSegmentInformationFieldLength;
+        var genericRegionSegmentFlags = data[position++];
+        genericRegion.mmr = !!(genericRegionSegmentFlags & 1);
+        genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;
+        genericRegion.prediction = !!(genericRegionSegmentFlags & 8);
+        if (!genericRegion.mmr) {
+          atLength = genericRegion.template === 0 ? 4 : 1;
+          at = [];
+          for (i = 0; i < atLength; i++) {
+            at.push({
+              x: readInt8(data, position),
+              y: readInt8(data, position + 1)
+            });
+            position += 2;
+          }
+          genericRegion.at = at;
+        }
+        args = [genericRegion, data, position, end];
+        break;
+      case 48: // PageInformation
+        var pageInfo = {
+          width: readUint32(data, position),
+          height: readUint32(data, position + 4),
+          resolutionX: readUint32(data, position + 8),
+          resolutionY: readUint32(data, position + 12)
+        };
+        if (pageInfo.height === 0xFFFFFFFF) {
+          delete pageInfo.height;
+        }
+        var pageSegmentFlags = data[position + 16];
+        var pageStripingInformatiom = readUint16(data, position + 17);
+        pageInfo.lossless = !!(pageSegmentFlags & 1);
+        pageInfo.refinement = !!(pageSegmentFlags & 2);
+        pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;
+        pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;
+        pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);
+        pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);
+        args = [pageInfo];
+        break;
+      case 49: // EndOfPage
+        break;
+      case 50: // EndOfStripe
+        break;
+      case 51: // EndOfFile
+        break;
+      case 62: // 7.4.15 defines 2 extension types which
+               // are comments and can be ignored.
+        break;
+      default:
+        error('JBIG2 error: segment type ' + header.typeName + '(' +
+              header.type + ') is not implemented');
+    }
+    var callbackName = 'on' + header.typeName;
+    if (callbackName in visitor) {
+      visitor[callbackName].apply(visitor, args);
+    }
+  }
+
+  function processSegments(segments, visitor) {
+    for (var i = 0, ii = segments.length; i < ii; i++) {
+      processSegment(segments[i], visitor);
+    }
+  }
+
+  function parseJbig2(data, start, end) {
+    var position = start;
+    if (data[position] !== 0x97 || data[position + 1] !== 0x4A ||
+        data[position + 2] !== 0x42 || data[position + 3] !== 0x32 ||
+        data[position + 4] !== 0x0D || data[position + 5] !== 0x0A ||
+        data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) {
+      error('JBIG2 error: invalid header');
+    }
+    var header = {};
+    position += 8;
+    var flags = data[position++];
+    header.randomAccess = !(flags & 1);
+    if (!(flags & 2)) {
+      header.numberOfPages = readUint32(data, position);
+      position += 4;
+    }
+    var segments = readSegments(header, data, position, end);
+    error('Not implemented');
+    // processSegments(segments, new SimpleSegmentVisitor());
+  }
+
+  function parseJbig2Chunks(chunks) {
+    var visitor = new SimpleSegmentVisitor();
+    for (var i = 0, ii = chunks.length; i < ii; i++) {
+      var chunk = chunks[i];
+      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);
+      processSegments(segments, visitor);
+    }
+    return visitor.buffer;
+  }
+
+  function SimpleSegmentVisitor() {}
+
+  SimpleSegmentVisitor.prototype = {
+    onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {
+      this.currentPageInfo = info;
+      var rowSize = (info.width + 7) >> 3;
+      var buffer = new Uint8Array(rowSize * info.height);
+      // The contents of ArrayBuffers are initialized to 0.
+      // Fill the buffer with 0xFF only if info.defaultPixelValue is set
+      if (info.defaultPixelValue) {
+        for (var i = 0, ii = buffer.length; i < ii; i++) {
+          buffer[i] = 0xFF;
+        }
+      }
+      this.buffer = buffer;
+    },
+    drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {
+      var pageInfo = this.currentPageInfo;
+      var width = regionInfo.width, height = regionInfo.height;
+      var rowSize = (pageInfo.width + 7) >> 3;
+      var combinationOperator = pageInfo.combinationOperatorOverride ?
+        regionInfo.combinationOperator : pageInfo.combinationOperator;
+      var buffer = this.buffer;
+      var mask0 =  128 >> (regionInfo.x & 7);
+      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);
+      var i, j, mask, offset;
+      switch (combinationOperator) {
+        case 0: // OR
+          for (i = 0; i < height; i++) {
+            mask = mask0;
+            offset = offset0;
+            for (j = 0; j < width; j++) {
+              if (bitmap[i][j]) {
+                buffer[offset] |= mask;
+              }
+              mask >>= 1;
+              if (!mask) {
+                mask = 128;
+                offset++;
+              }
+            }
+            offset0 += rowSize;
+          }
+        break;
+        case 2: // XOR
+          for (i = 0; i < height; i++) {
+            mask = mask0;
+            offset = offset0;
+            for (j = 0; j < width; j++) {
+              if (bitmap[i][j]) {
+                buffer[offset] ^= mask;
+              }
+              mask >>= 1;
+              if (!mask) {
+                mask = 128;
+                offset++;
+              }
+            }
+            offset0 += rowSize;
+          }
+          break;
+        default:
+          error('JBIG2 error: operator ' + combinationOperator +
+                ' is not supported');
+      }
+    },
+    onImmediateGenericRegion:
+      function SimpleSegmentVisitor_onImmediateGenericRegion(region, data,
+                                                             start, end) {
+      var regionInfo = region.info;
+      var decodingContext = new DecodingContext(data, start, end);
+      var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height,
+                                region.template, region.prediction, null,
+                                region.at, decodingContext);
+      this.drawBitmap(regionInfo, bitmap);
+    },
+    onImmediateLosslessGenericRegion:
+      function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {
+      this.onImmediateGenericRegion.apply(this, arguments);
+    },
+    onSymbolDictionary:
+      function SimpleSegmentVisitor_onSymbolDictionary(dictionary,
+                                                       currentSegment,
+                                                       referredSegments,
+                                                       data, start, end) {
+      var huffmanTables;
+      if (dictionary.huffman) {
+        error('JBIG2 error: huffman is not supported');
+      }
+
+      // Combines exported symbols from all referred segments
+      var symbols = this.symbols;
+      if (!symbols) {
+        this.symbols = symbols = {};
+      }
+
+      var inputSymbols = [];
+      for (var i = 0, ii = referredSegments.length; i < ii; i++) {
+        inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]);
+      }
+
+      var decodingContext = new DecodingContext(data, start, end);
+      symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman,
+        dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols,
+        dictionary.numberOfExportedSymbols, huffmanTables,
+        dictionary.template, dictionary.at,
+        dictionary.refinementTemplate, dictionary.refinementAt,
+        decodingContext);
+    },
+    onImmediateTextRegion:
+      function SimpleSegmentVisitor_onImmediateTextRegion(region,
+                                                          referredSegments,
+                                                          data, start, end) {
+      var regionInfo = region.info;
+      var huffmanTables;
+
+      // Combines exported symbols from all referred segments
+      var symbols = this.symbols;
+      var inputSymbols = [];
+      for (var i = 0, ii = referredSegments.length; i < ii; i++) {
+        inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]);
+      }
+      var symbolCodeLength = log2(inputSymbols.length);
+
+      var decodingContext = new DecodingContext(data, start, end);
+      var bitmap = decodeTextRegion(region.huffman, region.refinement,
+        regionInfo.width, regionInfo.height, region.defaultPixelValue,
+        region.numberOfSymbolInstances, region.stripSize, inputSymbols,
+        symbolCodeLength, region.transposed, region.dsOffset,
+        region.referenceCorner, region.combinationOperator, huffmanTables,
+        region.refinementTemplate, region.refinementAt, decodingContext);
+      this.drawBitmap(regionInfo, bitmap);
+    },
+    onImmediateLosslessTextRegion:
+      function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {
+      this.onImmediateTextRegion.apply(this, arguments);
+    }
+  };
+
+  function Jbig2Image() {}
+
+  Jbig2Image.prototype = {
+    parseChunks: function Jbig2Image_parseChunks(chunks) {
+      return parseJbig2Chunks(chunks);
+    }
+  };
+
+  return Jbig2Image;
+})();
+
+
+var bidi = PDFJS.bidi = (function bidiClosure() {
+  // Character types for symbols from 0000 to 00FF.
+  var baseTypes = [
+    'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS',
+    'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',
+    'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON',
+    'ON', 'ON', 'ON', 'ON', 'ON', 'CS', 'ON', 'CS', 'ON', 'EN', 'EN', 'EN',
+    'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'ON', 'ON', 'ON', 'ON', 'ON',
+    'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON',
+    'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN',
+    'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',
+    'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',
+    'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON',
+    'ON', 'ON', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON',
+    'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'
+  ];
+
+  // Character types for symbols from 0600 to 06FF
+  var arabicTypes = [
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',
+    'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN',
+    'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',
+    'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'ON', 'NSM',
+    'NSM', 'NSM', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL'
+  ];
+
+  function isOdd(i) {
+    return (i & 1) !== 0;
+  }
+
+  function isEven(i) {
+    return (i & 1) === 0;
+  }
+
+  function findUnequal(arr, start, value) {
+    for (var j = start, jj = arr.length; j < jj; ++j) {
+      if (arr[j] !== value) {
+        return j;
+      }
+    }
+    return j;
+  }
+
+  function setValues(arr, start, end, value) {
+    for (var j = start; j < end; ++j) {
+      arr[j] = value;
+    }
+  }
+
+  function reverseValues(arr, start, end) {
+    for (var i = start, j = end - 1; i < j; ++i, --j) {
+      var temp = arr[i];
+      arr[i] = arr[j];
+      arr[j] = temp;
+    }
+  }
+
+  function createBidiText(str, isLTR, vertical) {
+    return {
+      str: str,
+      dir: (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl'))
+    };
+  }
+
+  // These are used in bidi(), which is called frequently. We re-use them on
+  // each call to avoid unnecessary allocations.
+  var chars = [];
+  var types = [];
+
+  function bidi(str, startLevel, vertical) {
+    var isLTR = true;
+    var strLength = str.length;
+    if (strLength === 0 || vertical) {
+      return createBidiText(str, isLTR, vertical);
+    }
+
+    // Get types and fill arrays
+    chars.length = strLength;
+    types.length = strLength;
+    var numBidi = 0;
+
+    var i, ii;
+    for (i = 0; i < strLength; ++i) {
+      chars[i] = str.charAt(i);
+
+      var charCode = str.charCodeAt(i);
+      var charType = 'L';
+      if (charCode <= 0x00ff) {
+        charType = baseTypes[charCode];
+      } else if (0x0590 <= charCode && charCode <= 0x05f4) {
+        charType = 'R';
+      } else if (0x0600 <= charCode && charCode <= 0x06ff) {
+        charType = arabicTypes[charCode & 0xff];
+      } else if (0x0700 <= charCode && charCode <= 0x08AC) {
+        charType = 'AL';
+      }
+      if (charType === 'R' || charType === 'AL' || charType === 'AN') {
+        numBidi++;
+      }
+      types[i] = charType;
+    }
+
+    // Detect the bidi method
+    // - If there are no rtl characters then no bidi needed
+    // - If less than 30% chars are rtl then string is primarily ltr
+    // - If more than 30% chars are rtl then string is primarily rtl
+    if (numBidi === 0) {
+      isLTR = true;
+      return createBidiText(str, isLTR);
+    }
+
+    if (startLevel === -1) {
+      if ((strLength / numBidi) < 0.3) {
+        isLTR = true;
+        startLevel = 0;
+      } else {
+        isLTR = false;
+        startLevel = 1;
+      }
+    }
+
+    var levels = [];
+    for (i = 0; i < strLength; ++i) {
+      levels[i] = startLevel;
+    }
+
+    /*
+     X1-X10: skip most of this, since we are NOT doing the embeddings.
+     */
+    var e = (isOdd(startLevel) ? 'R' : 'L');
+    var sor = e;
+    var eor = sor;
+
+    /*
+     W1. Examine each non-spacing mark (NSM) in the level run, and change the
+     type of the NSM to the type of the previous character. If the NSM is at the
+     start of the level run, it will get the type of sor.
+     */
+    var lastType = sor;
+    for (i = 0; i < strLength; ++i) {
+      if (types[i] === 'NSM') {
+        types[i] = lastType;
+      } else {
+        lastType = types[i];
+      }
+    }
+
+    /*
+     W2. Search backwards from each instance of a European number until the
+     first strong type (R, L, AL, or sor) is found.  If an AL is found, change
+     the type of the European number to Arabic number.
+     */
+    lastType = sor;
+    var t;
+    for (i = 0; i < strLength; ++i) {
+      t = types[i];
+      if (t === 'EN') {
+        types[i] = (lastType === 'AL') ? 'AN' : 'EN';
+      } else if (t === 'R' || t === 'L' || t === 'AL') {
+        lastType = t;
+      }
+    }
+
+    /*
+     W3. Change all ALs to R.
+     */
+    for (i = 0; i < strLength; ++i) {
+      t = types[i];
+      if (t === 'AL') {
+        types[i] = 'R';
+      }
+    }
+
+    /*
+     W4. A single European separator between two European numbers changes to a
+     European number. A single common separator between two numbers of the same
+     type changes to that type:
+     */
+    for (i = 1; i < strLength - 1; ++i) {
+      if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {
+        types[i] = 'EN';
+      }
+      if (types[i] === 'CS' &&
+          (types[i - 1] === 'EN' || types[i - 1] === 'AN') &&
+          types[i + 1] === types[i - 1]) {
+        types[i] = types[i - 1];
+      }
+    }
+
+    /*
+     W5. A sequence of European terminators adjacent to European numbers changes
+     to all European numbers:
+     */
+    for (i = 0; i < strLength; ++i) {
+      if (types[i] === 'EN') {
+        // do before
+        var j;
+        for (j = i - 1; j >= 0; --j) {
+          if (types[j] !== 'ET') {
+            break;
+          }
+          types[j] = 'EN';
+        }
+        // do after
+        for (j = i + 1; j < strLength; --j) {
+          if (types[j] !== 'ET') {
+            break;
+          }
+          types[j] = 'EN';
+        }
+      }
+    }
+
+    /*
+     W6. Otherwise, separators and terminators change to Other Neutral:
+     */
+    for (i = 0; i < strLength; ++i) {
+      t = types[i];
+      if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') {
+        types[i] = 'ON';
+      }
+    }
+
+    /*
+     W7. Search backwards from each instance of a European number until the
+     first strong type (R, L, or sor) is found. If an L is found,  then change
+     the type of the European number to L.
+     */
+    lastType = sor;
+    for (i = 0; i < strLength; ++i) {
+      t = types[i];
+      if (t === 'EN') {
+        types[i] = ((lastType === 'L') ? 'L' : 'EN');
+      } else if (t === 'R' || t === 'L') {
+        lastType = t;
+      }
+    }
+
+    /*
+     N1. A sequence of neutrals takes the direction of the surrounding strong
+     text if the text on both sides has the same direction. European and Arabic
+     numbers are treated as though they were R. Start-of-level-run (sor) and
+     end-of-level-run (eor) are used at level run boundaries.
+     */
+    for (i = 0; i < strLength; ++i) {
+      if (types[i] === 'ON') {
+        var end = findUnequal(types, i + 1, 'ON');
+        var before = sor;
+        if (i > 0) {
+          before = types[i - 1];
+        }
+
+        var after = eor;
+        if (end + 1 < strLength) {
+          after = types[end + 1];
+        }
+        if (before !== 'L') {
+          before = 'R';
+        }
+        if (after !== 'L') {
+          after = 'R';
+        }
+        if (before === after) {
+          setValues(types, i, end, before);
+        }
+        i = end - 1; // reset to end (-1 so next iteration is ok)
+      }
+    }
+
+    /*
+     N2. Any remaining neutrals take the embedding direction.
+     */
+    for (i = 0; i < strLength; ++i) {
+      if (types[i] === 'ON') {
+        types[i] = e;
+      }
+    }
+
+    /*
+     I1. For all characters with an even (left-to-right) embedding direction,
+     those of type R go up one level and those of type AN or EN go up two
+     levels.
+     I2. For all characters with an odd (right-to-left) embedding direction,
+     those of type L, EN or AN go up one level.
+     */
+    for (i = 0; i < strLength; ++i) {
+      t = types[i];
+      if (isEven(levels[i])) {
+        if (t === 'R') {
+          levels[i] += 1;
+        } else if (t === 'AN' || t === 'EN') {
+          levels[i] += 2;
+        }
+      } else { // isOdd
+        if (t === 'L' || t === 'AN' || t === 'EN') {
+          levels[i] += 1;
+        }
+      }
+    }
+
+    /*
+     L1. On each line, reset the embedding level of the following characters to
+     the paragraph embedding level:
+
+     segment separators,
+     paragraph separators,
+     any sequence of whitespace characters preceding a segment separator or
+     paragraph separator, and any sequence of white space characters at the end
+     of the line.
+     */
+
+    // don't bother as text is only single line
+
+    /*
+     L2. From the highest level found in the text to the lowest odd level on
+     each line, reverse any contiguous sequence of characters that are at that
+     level or higher.
+     */
+
+    // find highest level & lowest odd level
+    var highestLevel = -1;
+    var lowestOddLevel = 99;
+    var level;
+    for (i = 0, ii = levels.length; i < ii; ++i) {
+      level = levels[i];
+      if (highestLevel < level) {
+        highestLevel = level;
+      }
+      if (lowestOddLevel > level && isOdd(level)) {
+        lowestOddLevel = level;
+      }
+    }
+
+    // now reverse between those limits
+    for (level = highestLevel; level >= lowestOddLevel; --level) {
+      // find segments to reverse
+      var start = -1;
+      for (i = 0, ii = levels.length; i < ii; ++i) {
+        if (levels[i] < level) {
+          if (start >= 0) {
+            reverseValues(chars, start, i);
+            start = -1;
+          }
+        } else if (start < 0) {
+          start = i;
+        }
+      }
+      if (start >= 0) {
+        reverseValues(chars, start, levels.length);
+      }
+    }
+
+    /*
+     L3. Combining marks applied to a right-to-left base character will at this
+     point precede their base character. If the rendering engine expects them to
+     follow the base characters in the final display process, then the ordering
+     of the marks and the base character must be reversed.
+     */
+
+    // don't bother for now
+
+    /*
+     L4. A character that possesses the mirrored property as specified by
+     Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved
+     directionality of that character is R.
+     */
+
+    // don't mirror as characters are already mirrored in the pdf
+
+    // Finally, return string
+    var result = '';
+    for (i = 0, ii = chars.length; i < ii; ++i) {
+      var ch = chars[i];
+      if (ch !== '<' && ch !== '>') {
+        result += ch;
+      }
+    }
+    return createBidiText(result, isLTR);
+  }
+
+  return bidi;
+})();
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+/* Copyright 2014 Opera Software ASA
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *
+ * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.
+ * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.
+ */
+/* globals Uint32ArrayView */
+
+'use strict';
+
+var MurmurHash3_64 = (function MurmurHash3_64Closure (seed) {
+  // Workaround for missing math precison in JS.
+  var MASK_HIGH = 0xffff0000;
+  var MASK_LOW = 0xffff;
+
+  function MurmurHash3_64 (seed) {
+    var SEED = 0xc3d2e1f0;
+    this.h1 = seed ? seed & 0xffffffff : SEED;
+    this.h2 = seed ? seed & 0xffffffff : SEED;
+  }
+
+  var alwaysUseUint32ArrayView = false;
+//#if !(FIREFOX || MOZCENTRAL || B2G || CHROME)
+  // old webkits have issues with non-aligned arrays
+  try {
+    new Uint32Array(new Uint8Array(5).buffer, 0, 1);
+  } catch (e) {
+    alwaysUseUint32ArrayView = true;
+  }
+//#endif
+
+  MurmurHash3_64.prototype = {
+    update: function MurmurHash3_64_update(input) {
+      var useUint32ArrayView = alwaysUseUint32ArrayView;
+      var i;
+      if (typeof input === 'string') {
+        var data = new Uint8Array(input.length * 2);
+        var length = 0;
+        for (i = 0; i < input.length; i++) {
+          var code = input.charCodeAt(i);
+          if (code <= 0xff) {
+            data[length++] = code;
+          }
+          else {
+            data[length++] = code >>> 8;
+            data[length++] = code & 0xff;
+          }
+        }
+      } else if (input instanceof Uint8Array) {
+        data = input;
+        length = data.length;
+      } else if (typeof input === 'object' && ('length' in input)) {
+        // processing regular arrays as well, e.g. for IE9
+        data = input;
+        length = data.length;
+        useUint32ArrayView = true;
+      } else {
+        throw new Error('Wrong data format in MurmurHash3_64_update. ' +
+                        'Input must be a string or array.');
+      }
+
+      var blockCounts = length >> 2;
+      var tailLength = length - blockCounts * 4;
+      // we don't care about endianness here
+      var dataUint32 = useUint32ArrayView ?
+        new Uint32ArrayView(data, blockCounts) :
+        new Uint32Array(data.buffer, 0, blockCounts);
+      var k1 = 0;
+      var k2 = 0;
+      var h1 = this.h1;
+      var h2 = this.h2;
+      var C1 = 0xcc9e2d51;
+      var C2 = 0x1b873593;
+      var C1_LOW = C1 & MASK_LOW;
+      var C2_LOW = C2 & MASK_LOW;
+
+      for (i = 0; i < blockCounts; i++) {
+        if (i & 1) {
+          k1 = dataUint32[i];
+          k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW);
+          k1 = k1 << 15 | k1 >>> 17;
+          k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW);
+          h1 ^= k1;
+          h1 = h1 << 13 | h1 >>> 19;
+          h1 = h1 * 5 + 0xe6546b64;
+        } else {
+          k2 = dataUint32[i];
+          k2 = (k2 * C1 & MASK_HIGH) | (k2 * C1_LOW & MASK_LOW);
+          k2 = k2 << 15 | k2 >>> 17;
+          k2 = (k2 * C2 & MASK_HIGH) | (k2 * C2_LOW & MASK_LOW);
+          h2 ^= k2;
+          h2 = h2 << 13 | h2 >>> 19;
+          h2 = h2 * 5 + 0xe6546b64;
+        }
+      }
+
+      k1 = 0;
+
+      switch (tailLength) {
+        case 3:
+          k1 ^= data[blockCounts * 4 + 2] << 16;
+          /* falls through */
+        case 2:
+          k1 ^= data[blockCounts * 4 + 1] << 8;
+          /* falls through */
+        case 1:
+          k1 ^= data[blockCounts * 4];
+          /* falls through */
+        k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW);
+        k1 = k1 << 15 | k1 >>> 17;
+        k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW);
+        if (blockCounts & 1) {
+          h1 ^= k1;
+        } else {
+          h2 ^= k1;
+        }
+      }
+
+      this.h1 = h1;
+      this.h2 = h2;
+      return this;
+    },
+
+    hexdigest: function MurmurHash3_64_hexdigest () {
+      var h1 = this.h1;
+      var h2 = this.h2;
+
+      h1 ^= h2 >>> 1;
+      h1 = (h1 * 0xed558ccd & MASK_HIGH) | (h1 * 0x8ccd & MASK_LOW);
+      h2 = (h2 * 0xff51afd7 & MASK_HIGH) |
+           (((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16);
+      h1 ^= h2 >>> 1;
+      h1 = (h1 * 0x1a85ec53 & MASK_HIGH) | (h1 * 0xec53 & MASK_LOW);
+      h2 = (h2 * 0xc4ceb9fe & MASK_HIGH) |
+           (((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16);
+      h1 ^= h2 >>> 1;
+
+      for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) {
+        var hex = (arr[i] >>> 0).toString(16);
+        while (hex.length < 8) {
+          hex = '0' + hex;
+        }
+        str += hex;
+      }
+
+      return str;
+    }
+  };
+
+  return MurmurHash3_64;
+})();
+
+
+}).call((typeof window === 'undefined') ? this : window);
+
+if (!PDFJS.workerSrc && typeof document !== 'undefined') {
+  // workerSrc is not set -- using last script url to define default location
+  PDFJS.workerSrc = (function () {
+    'use strict';
+    var scriptTagContainer = document.body ||
+                             document.getElementsByTagName('head')[0];
+    var pdfjsSrc = scriptTagContainer.lastChild.src;
+    return pdfjsSrc && pdfjsSrc.replace(/\.js$/i, '.worker.js');
+  })();
+}
+
diff --git a/source/ViewerJS/pdfjsversion.js b/source/ViewerJS/pdfjsversion.js
new file mode 100644
index 0000000..7aefe44
--- /dev/null
+++ b/source/ViewerJS/pdfjsversion.js
@@ -0,0 +1 @@
+var /**@const{!string}*/pdfjs_version = "v1.1.114";
diff --git a/source/ViewerJS/text_layer_builder.js b/source/ViewerJS/text_layer_builder.js
new file mode 100644
index 0000000..7483c02
--- /dev/null
+++ b/source/ViewerJS/text_layer_builder.js
@@ -0,0 +1,419 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* Copyright 2012 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* globals CustomStyle, PDFJS */
+
+'use strict';
+
+var MAX_TEXT_DIVS_TO_RENDER = 100000;
+
+var NonWhitespaceRegexp = /\S/;
+
+function isAllWhitespace(str) {
+  return !NonWhitespaceRegexp.test(str);
+}
+
+/**
+ * @typedef {Object} TextLayerBuilderOptions
+ * @property {HTMLDivElement} textLayerDiv - The text layer container.
+ * @property {number} pageIndex - The page index.
+ * @property {PageViewport} viewport - The viewport of the text layer.
+ * @property {PDFFindController} findController
+ */
+
+/**
+ * TextLayerBuilder provides text-selection functionality for the PDF.
+ * It does this by creating overlay divs over the PDF text. These divs
+ * contain text that matches the PDF text they are overlaying. This object
+ * also provides a way to highlight text that is being searched for.
+ * @class
+ */
+var TextLayerBuilder = (function TextLayerBuilderClosure() {
+  function TextLayerBuilder(options) {
+    this.textLayerDiv = options.textLayerDiv;
+    this.renderingDone = false;
+    this.divContentDone = false;
+    this.pageIdx = options.pageIndex;
+    this.pageNumber = this.pageIdx + 1;
+    this.matches = [];
+    this.viewport = options.viewport;
+    this.textDivs = [];
+    this.findController = options.findController || null;
+  }
+
+  TextLayerBuilder.prototype = {
+    _finishRendering: function TextLayerBuilder_finishRendering() {
+      this.renderingDone = true;
+
+      var event = document.createEvent('CustomEvent');
+      event.initCustomEvent('textlayerrendered', true, true, {
+        pageNumber: this.pageNumber
+      });
+      this.textLayerDiv.dispatchEvent(event);
+    },
+
+    renderLayer: function TextLayerBuilder_renderLayer() {
+      var textLayerFrag = document.createDocumentFragment();
+      var textDivs = this.textDivs;
+      var textDivsLength = textDivs.length;
+      var canvas = document.createElement('canvas');
+      var ctx = canvas.getContext('2d');
+
+      // No point in rendering many divs as it would make the browser
+      // unusable even after the divs are rendered.
+      if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
+        this._finishRendering();
+        return;
+      }
+
+      var lastFontSize;
+      var lastFontFamily;
+      for (var i = 0; i < textDivsLength; i++) {
+        var textDiv = textDivs[i];
+        if (textDiv.dataset.isWhitespace !== undefined) {
+          continue;
+        }
+
+        var fontSize = textDiv.style.fontSize;
+        var fontFamily = textDiv.style.fontFamily;
+
+        // Only build font string and set to context if different from last.
+        if (fontSize !== lastFontSize || fontFamily !== lastFontFamily) {
+          ctx.font = fontSize + ' ' + fontFamily;
+          lastFontSize = fontSize;
+          lastFontFamily = fontFamily;
+        }
+
+        var width = ctx.measureText(textDiv.textContent).width;
+        if (width > 0) {
+          textLayerFrag.appendChild(textDiv);
+          var transform;
+          if (textDiv.dataset.canvasWidth !== undefined) {
+            // Dataset values come of type string.
+            var textScale = textDiv.dataset.canvasWidth / width;
+            transform = 'scaleX(' + textScale + ')';
+          } else {
+            transform = '';
+          }
+          var rotation = textDiv.dataset.angle;
+          if (rotation) {
+            transform = 'rotate(' + rotation + 'deg) ' + transform;
+          }
+          if (transform) {
+            CustomStyle.setProp('transform' , textDiv, transform);
+          }
+        }
+      }
+
+      this.textLayerDiv.appendChild(textLayerFrag);
+      this._finishRendering();
+      this.updateMatches();
+    },
+
+    /**
+     * Renders the text layer.
+     * @param {number} timeout (optional) if specified, the rendering waits
+     *   for specified amount of ms.
+     */
+    render: function TextLayerBuilder_render(timeout) {
+      if (!this.divContentDone || this.renderingDone) {
+        return;
+      }
+
+      if (this.renderTimer) {
+        clearTimeout(this.renderTimer);
+        this.renderTimer = null;
+      }
+
+      if (!timeout) { // Render right away
+        this.renderLayer();
+      } else { // Schedule
+        var self = this;
+        this.renderTimer = setTimeout(function() {
+          self.renderLayer();
+          self.renderTimer = null;
+        }, timeout);
+      }
+    },
+
+    appendText: function TextLayerBuilder_appendText(geom, styles) {
+      var style = styles[geom.fontName];
+      var textDiv = document.createElement('div');
+      this.textDivs.push(textDiv);
+      if (isAllWhitespace(geom.str)) {
+        textDiv.dataset.isWhitespace = true;
+        return;
+      }
+      var tx = PDFJS.Util.transform(this.viewport.transform, geom.transform);
+      var angle = Math.atan2(tx[1], tx[0]);
+      if (style.vertical) {
+        angle += Math.PI / 2;
+      }
+      var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));
+      var fontAscent = fontHeight;
+      if (style.ascent) {
+        fontAscent = style.ascent * fontAscent;
+      } else if (style.descent) {
+        fontAscent = (1 + style.descent) * fontAscent;
+      }
+
+      var left;
+      var top;
+      if (angle === 0) {
+        left = tx[4];
+        top = tx[5] - fontAscent;
+      } else {
+        left = tx[4] + (fontAscent * Math.sin(angle));
+        top = tx[5] - (fontAscent * Math.cos(angle));
+      }
+      textDiv.style.left = left + 'px';
+      textDiv.style.top = top + 'px';
+      textDiv.style.fontSize = fontHeight + 'px';
+      textDiv.style.fontFamily = style.fontFamily;
+
+      textDiv.textContent = geom.str;
+      // |fontName| is only used by the Font Inspector. This test will succeed
+      // when e.g. the Font Inspector is off but the Stepper is on, but it's
+      // not worth the effort to do a more accurate test.
+      if (PDFJS.pdfBug) {
+        textDiv.dataset.fontName = geom.fontName;
+      }
+      // Storing into dataset will convert number into string.
+      if (angle !== 0) {
+        textDiv.dataset.angle = angle * (180 / Math.PI);
+      }
+      // We don't bother scaling single-char text divs, because it has very
+      // little effect on text highlighting. This makes scrolling on docs with
+      // lots of such divs a lot faster.
+      if (textDiv.textContent.length > 1) {
+        if (style.vertical) {
+          textDiv.dataset.canvasWidth = geom.height * this.viewport.scale;
+        } else {
+          textDiv.dataset.canvasWidth = geom.width * this.viewport.scale;
+        }
+      }
+    },
+
+    setTextContent: function TextLayerBuilder_setTextContent(textContent) {
+      this.textContent = textContent;
+
+      var textItems = textContent.items;
+      for (var i = 0, len = textItems.length; i < len; i++) {
+        this.appendText(textItems[i], textContent.styles);
+      }
+      this.divContentDone = true;
+    },
+
+    convertMatches: function TextLayerBuilder_convertMatches(matches) {
+      var i = 0;
+      var iIndex = 0;
+      var bidiTexts = this.textContent.items;
+      var end = bidiTexts.length - 1;
+      var queryLen = (this.findController === null ?
+                      0 : this.findController.state.query.length);
+      var ret = [];
+
+      for (var m = 0, len = matches.length; m < len; m++) {
+        // Calculate the start position.
+        var matchIdx = matches[m];
+
+        // Loop over the divIdxs.
+        while (i !== end && matchIdx >= (iIndex + bidiTexts[i].str.length)) {
+          iIndex += bidiTexts[i].str.length;
+          i++;
+        }
+
+        if (i === bidiTexts.length) {
+          console.error('Could not find a matching mapping');
+        }
+
+        var match = {
+          begin: {
+            divIdx: i,
+            offset: matchIdx - iIndex
+          }
+        };
+
+        // Calculate the end position.
+        matchIdx += queryLen;
+
+        // Somewhat the same array as above, but use > instead of >= to get
+        // the end position right.
+        while (i !== end && matchIdx > (iIndex + bidiTexts[i].str.length)) {
+          iIndex += bidiTexts[i].str.length;
+          i++;
+        }
+
+        match.end = {
+          divIdx: i,
+          offset: matchIdx - iIndex
+        };
+        ret.push(match);
+      }
+
+      return ret;
+    },
+
+    renderMatches: function TextLayerBuilder_renderMatches(matches) {
+      // Early exit if there is nothing to render.
+      if (matches.length === 0) {
+        return;
+      }
+
+      var bidiTexts = this.textContent.items;
+      var textDivs = this.textDivs;
+      var prevEnd = null;
+      var pageIdx = this.pageIdx;
+      var isSelectedPage = (this.findController === null ?
+        false : (pageIdx === this.findController.selected.pageIdx));
+      var selectedMatchIdx = (this.findController === null ?
+                              -1 : this.findController.selected.matchIdx);
+      var highlightAll = (this.findController === null ?
+                          false : this.findController.state.highlightAll);
+      var infinity = {
+        divIdx: -1,
+        offset: undefined
+      };
+
+      function beginText(begin, className) {
+        var divIdx = begin.divIdx;
+        textDivs[divIdx].textContent = '';
+        appendTextToDiv(divIdx, 0, begin.offset, className);
+      }
+
+      function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
+        var div = textDivs[divIdx];
+        var content = bidiTexts[divIdx].str.substring(fromOffset, toOffset);
+        var node = document.createTextNode(content);
+        if (className) {
+          var span = document.createElement('span');
+          span.className = className;
+          span.appendChild(node);
+          div.appendChild(span);
+          return;
+        }
+        div.appendChild(node);
+      }
+
+      var i0 = selectedMatchIdx, i1 = i0 + 1;
+      if (highlightAll) {
+        i0 = 0;
+        i1 = matches.length;
+      } else if (!isSelectedPage) {
+        // Not highlighting all and this isn't the selected page, so do nothing.
+        return;
+      }
+
+      for (var i = i0; i < i1; i++) {
+        var match = matches[i];
+        var begin = match.begin;
+        var end = match.end;
+        var isSelected = (isSelectedPage && i === selectedMatchIdx);
+        var highlightSuffix = (isSelected ? ' selected' : '');
+
+        if (this.findController) {
+          this.findController.updateMatchPosition(pageIdx, i, textDivs,
+                                                  begin.divIdx, end.divIdx);
+        }
+
+        // Match inside new div.
+        if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
+          // If there was a previous div, then add the text at the end.
+          if (prevEnd !== null) {
+            appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
+          }
+          // Clear the divs and set the content until the starting point.
+          beginText(begin);
+        } else {
+          appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);
+        }
+
+        if (begin.divIdx === end.divIdx) {
+          appendTextToDiv(begin.divIdx, begin.offset, end.offset,
+                          'highlight' + highlightSuffix);
+        } else {
+          appendTextToDiv(begin.divIdx, begin.offset, infinity.offset,
+                          'highlight begin' + highlightSuffix);
+          for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
+            textDivs[n0].className = 'highlight middle' + highlightSuffix;
+          }
+          beginText(end, 'highlight end' + highlightSuffix);
+        }
+        prevEnd = end;
+      }
+
+      if (prevEnd) {
+        appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
+      }
+    },
+
+    updateMatches: function TextLayerBuilder_updateMatches() {
+      // Only show matches when all rendering is done.
+      if (!this.renderingDone) {
+        return;
+      }
+
+      // Clear all matches.
+      var matches = this.matches;
+      var textDivs = this.textDivs;
+      var bidiTexts = this.textContent.items;
+      var clearedUntilDivIdx = -1;
+
+      // Clear all current matches.
+      for (var i = 0, len = matches.length; i < len; i++) {
+        var match = matches[i];
+        var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);
+        for (var n = begin, end = match.end.divIdx; n <= end; n++) {
+          var div = textDivs[n];
+          div.textContent = bidiTexts[n].str;
+          div.className = '';
+        }
+        clearedUntilDivIdx = match.end.divIdx + 1;
+      }
+
+      if (this.findController === null || !this.findController.active) {
+        return;
+      }
+
+      // Convert the matches on the page controller into the match format
+      // used for the textLayer.
+      this.matches = this.convertMatches(this.findController === null ?
+        [] : (this.findController.pageMatches[this.pageIdx] || []));
+      this.renderMatches(this.matches);
+    }
+  };
+  return TextLayerBuilder;
+})();
+
+/**
+ * @constructor
+ * @implements IPDFTextLayerFactory
+ */
+function DefaultTextLayerFactory() {}
+DefaultTextLayerFactory.prototype = {
+  /**
+   * @param {HTMLDivElement} textLayerDiv
+   * @param {number} pageIndex
+   * @param {PageViewport} viewport
+   * @returns {TextLayerBuilder}
+   */
+  createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) {
+    return new TextLayerBuilder({
+      textLayerDiv: textLayerDiv,
+      pageIndex: pageIndex,
+      viewport: viewport
+    });
+  }
+};
diff --git a/source/ViewerJS/ui_utils.js b/source/ViewerJS/ui_utils.js
new file mode 100644
index 0000000..7e798e3
--- /dev/null
+++ b/source/ViewerJS/ui_utils.js
@@ -0,0 +1,394 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* Copyright 2012 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+var CSS_UNITS = 96.0 / 72.0;
+var DEFAULT_SCALE = 'auto';
+var UNKNOWN_SCALE = 0;
+var MAX_AUTO_SCALE = 1.25;
+var SCROLLBAR_PADDING = 40;
+var VERTICAL_PADDING = 5;
+
+// optimised CSS custom property getter/setter
+var CustomStyle = (function CustomStyleClosure() {
+
+  // As noted on: http://www.zachstronaut.com/posts/2009/02/17/
+  //              animate-css-transforms-firefox-webkit.html
+  // in some versions of IE9 it is critical that ms appear in this list
+  // before Moz
+  var prefixes = ['ms', 'Moz', 'Webkit', 'O'];
+  var _cache = {};
+
+  function CustomStyle() {}
+
+  CustomStyle.getProp = function get(propName, element) {
+    // check cache only when no element is given
+    if (arguments.length === 1 && typeof _cache[propName] === 'string') {
+      return _cache[propName];
+    }
+
+    element = element || document.documentElement;
+    var style = element.style, prefixed, uPropName;
+
+    // test standard property first
+    if (typeof style[propName] === 'string') {
+      return (_cache[propName] = propName);
+    }
+
+    // capitalize
+    uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);
+
+    // test vendor specific properties
+    for (var i = 0, l = prefixes.length; i < l; i++) {
+      prefixed = prefixes[i] + uPropName;
+      if (typeof style[prefixed] === 'string') {
+        return (_cache[propName] = prefixed);
+      }
+    }
+
+    //if all fails then set to undefined
+    return (_cache[propName] = 'undefined');
+  };
+
+  CustomStyle.setProp = function set(propName, element, str) {
+    var prop = this.getProp(propName);
+    if (prop !== 'undefined') {
+      element.style[prop] = str;
+    }
+  };
+
+  return CustomStyle;
+})();
+
+function getFileName(url) {
+  var anchor = url.indexOf('#');
+  var query = url.indexOf('?');
+  var end = Math.min(
+    anchor > 0 ? anchor : url.length,
+    query > 0 ? query : url.length);
+  return url.substring(url.lastIndexOf('/', end) + 1, end);
+}
+
+/**
+ * Returns scale factor for the canvas. It makes sense for the HiDPI displays.
+ * @return {Object} The object with horizontal (sx) and vertical (sy)
+                    scales. The scaled property is set to false if scaling is
+                    not required, true otherwise.
+ */
+function getOutputScale(ctx) {
+  var devicePixelRatio = window.devicePixelRatio || 1;
+  var backingStoreRatio = ctx.webkitBackingStorePixelRatio ||
+                          ctx.mozBackingStorePixelRatio ||
+                          ctx.msBackingStorePixelRatio ||
+                          ctx.oBackingStorePixelRatio ||
+                          ctx.backingStorePixelRatio || 1;
+  var pixelRatio = devicePixelRatio / backingStoreRatio;
+  return {
+    sx: pixelRatio,
+    sy: pixelRatio,
+    scaled: pixelRatio !== 1
+  };
+}
+
+/**
+ * Scrolls specified element into view of its parent.
+ * element {Object} The element to be visible.
+ * spot {Object} An object with optional top and left properties,
+ *               specifying the offset from the top left edge.
+ */
+function scrollIntoView(element, spot) {
+  // Assuming offsetParent is available (it's not available when viewer is in
+  // hidden iframe or object). We have to scroll: if the offsetParent is not set
+  // producing the error. See also animationStartedClosure.
+  var parent = element.offsetParent;
+  var offsetY = element.offsetTop + element.clientTop;
+  var offsetX = element.offsetLeft + element.clientLeft;
+  if (!parent) {
+    console.error('offsetParent is not set -- cannot scroll');
+    return;
+  }
+  while (parent.clientHeight === parent.scrollHeight) {
+    if (parent.dataset._scaleY) {
+      offsetY /= parent.dataset._scaleY;
+      offsetX /= parent.dataset._scaleX;
+    }
+    offsetY += parent.offsetTop;
+    offsetX += parent.offsetLeft;
+    parent = parent.offsetParent;
+    if (!parent) {
+      return; // no need to scroll
+    }
+  }
+  if (spot) {
+    if (spot.top !== undefined) {
+      offsetY += spot.top;
+    }
+    if (spot.left !== undefined) {
+      offsetX += spot.left;
+      parent.scrollLeft = offsetX;
+    }
+  }
+  parent.scrollTop = offsetY;
+}
+
+/**
+ * Helper function to start monitoring the scroll event and converting them into
+ * PDF.js friendly one: with scroll debounce and scroll direction.
+ */
+function watchScroll(viewAreaElement, callback) {
+  var debounceScroll = function debounceScroll(evt) {
+    if (rAF) {
+      return;
+    }
+    // schedule an invocation of scroll for next animation frame.
+    rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {
+      rAF = null;
+
+      var currentY = viewAreaElement.scrollTop;
+      var lastY = state.lastY;
+      if (currentY !== lastY) {
+        state.down = currentY > lastY;
+      }
+      state.lastY = currentY;
+      callback(state);
+    });
+  };
+
+  var state = {
+    down: true,
+    lastY: viewAreaElement.scrollTop,
+    _eventHandler: debounceScroll
+  };
+
+  var rAF = null;
+  viewAreaElement.addEventListener('scroll', debounceScroll, true);
+  return state;
+}
+
+/**
+ * Use binary search to find the index of the first item in a given array which
+ * passes a given condition. The items are expected to be sorted in the sense
+ * that if the condition is true for one item in the array, then it is also true
+ * for all following items.
+ *
+ * @returns {Number} Index of the first array element to pass the test,
+ *                   or |items.length| if no such element exists.
+ */
+function binarySearchFirstItem(items, condition) {
+  var minIndex = 0;
+  var maxIndex = items.length - 1;
+
+  if (items.length === 0 || !condition(items[maxIndex])) {
+    return items.length;
+  }
+  if (condition(items[minIndex])) {
+    return minIndex;
+  }
+
+  while (minIndex < maxIndex) {
+    var currentIndex = (minIndex + maxIndex) >> 1;
+    var currentItem = items[currentIndex];
+    if (condition(currentItem)) {
+      maxIndex = currentIndex;
+    } else {
+      minIndex = currentIndex + 1;
+    }
+  }
+  return minIndex; /* === maxIndex */
+}
+
+/**
+ * Generic helper to find out what elements are visible within a scroll pane.
+ */
+function getVisibleElements(scrollEl, views, sortByVisibility) {
+  var top = scrollEl.scrollTop, bottom = top + scrollEl.clientHeight;
+  var left = scrollEl.scrollLeft, right = left + scrollEl.clientWidth;
+
+  function isElementBottomBelowViewTop(view) {
+    var element = view.div;
+    var elementBottom =
+      element.offsetTop + element.clientTop + element.clientHeight;
+    return elementBottom > top;
+  }
+
+  var visible = [], view, element;
+  var currentHeight, viewHeight, hiddenHeight, percentHeight;
+  var currentWidth, viewWidth;
+  var firstVisibleElementInd = (views.length === 0) ? 0 :
+    binarySearchFirstItem(views, isElementBottomBelowViewTop);
+
+  for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) {
+    view = views[i];
+    element = view.div;
+    currentHeight = element.offsetTop + element.clientTop;
+    viewHeight = element.clientHeight;
+
+    if (currentHeight > bottom) {
+      break;
+    }
+
+    currentWidth = element.offsetLeft + element.clientLeft;
+    viewWidth = element.clientWidth;
+    if (currentWidth + viewWidth < left || currentWidth > right) {
+      continue;
+    }
+    hiddenHeight = Math.max(0, top - currentHeight) +
+      Math.max(0, currentHeight + viewHeight - bottom);
+    percentHeight = ((viewHeight - hiddenHeight) * 100 / viewHeight) | 0;
+
+    visible.push({
+      id: view.id,
+      x: currentWidth,
+      y: currentHeight,
+      view: view,
+      percent: percentHeight
+    });
+  }
+
+  var first = visible[0];
+  var last = visible[visible.length - 1];
+
+  if (sortByVisibility) {
+    visible.sort(function(a, b) {
+      var pc = a.percent - b.percent;
+      if (Math.abs(pc) > 0.001) {
+        return -pc;
+      }
+      return a.id - b.id; // ensure stability
+    });
+  }
+  return {first: first, last: last, views: visible};
+}
+
+/**
+ * Event handler to suppress context menu.
+ */
+function noContextMenuHandler(e) {
+  e.preventDefault();
+}
+
+/**
+ * Returns the filename or guessed filename from the url (see issue 3455).
+ * url {String} The original PDF location.
+ * @return {String} Guessed PDF file name.
+ */
+function getPDFFileNameFromURL(url) {
+  var reURI = /^(?:([^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
+  //            SCHEME      HOST         1.PATH  2.QUERY   3.REF
+  // Pattern to get last matching NAME.pdf
+  var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
+  var splitURI = reURI.exec(url);
+  var suggestedFilename = reFilename.exec(splitURI[1]) ||
+                           reFilename.exec(splitURI[2]) ||
+                           reFilename.exec(splitURI[3]);
+  if (suggestedFilename) {
+    suggestedFilename = suggestedFilename[0];
+    if (suggestedFilename.indexOf('%') !== -1) {
+      // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf
+      try {
+        suggestedFilename =
+          reFilename.exec(decodeURIComponent(suggestedFilename))[0];
+      } catch(e) { // Possible (extremely rare) errors:
+        // URIError "Malformed URI", e.g. for "%AA.pdf"
+        // TypeError "null has no properties", e.g. for "%2F.pdf"
+      }
+    }
+  }
+  return suggestedFilename || 'document.pdf';
+}
+
+var ProgressBar = (function ProgressBarClosure() {
+
+  function clamp(v, min, max) {
+    return Math.min(Math.max(v, min), max);
+  }
+
+  function ProgressBar(id, opts) {
+    this.visible = true;
+
+    // Fetch the sub-elements for later.
+    this.div = document.querySelector(id + ' .progress');
+
+    // Get the loading bar element, so it can be resized to fit the viewer.
+    this.bar = this.div.parentNode;
+
+    // Get options, with sensible defaults.
+    this.height = opts.height || 100;
+    this.width = opts.width || 100;
+    this.units = opts.units || '%';
+
+    // Initialize heights.
+    this.div.style.height = this.height + this.units;
+    this.percent = 0;
+  }
+
+  ProgressBar.prototype = {
+
+    updateBar: function ProgressBar_updateBar() {
+      if (this._indeterminate) {
+        this.div.classList.add('indeterminate');
+        this.div.style.width = this.width + this.units;
+        return;
+      }
+
+      this.div.classList.remove('indeterminate');
+      var progressSize = this.width * this._percent / 100;
+      this.div.style.width = progressSize + this.units;
+    },
+
+    get percent() {
+      return this._percent;
+    },
+
+    set percent(val) {
+      this._indeterminate = isNaN(val);
+      this._percent = clamp(val, 0, 100);
+      this.updateBar();
+    },
+
+    setWidth: function ProgressBar_setWidth(viewer) {
+      if (viewer) {
+        var container = viewer.parentNode;
+        var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
+        if (scrollbarWidth > 0) {
+          this.bar.setAttribute('style', 'width: calc(100% - ' +
+                                         scrollbarWidth + 'px);');
+        }
+      }
+    },
+
+    hide: function ProgressBar_hide() {
+      if (!this.visible) {
+        return;
+      }
+      this.visible = false;
+      this.bar.classList.add('hidden');
+      document.body.classList.remove('loadingInProgress');
+    },
+
+    show: function ProgressBar_show() {
+      if (this.visible) {
+        return;
+      }
+      this.visible = true;
+      document.body.classList.add('loadingInProgress');
+      this.bar.classList.remove('hidden');
+    }
+  };
+
+  return ProgressBar;
+})();
diff --git a/source/ViewerJS/webodf.js b/source/ViewerJS/webodf.js
new file mode 100644
index 0000000..dbb0d33
--- /dev/null
+++ b/source/ViewerJS/webodf.js
@@ -0,0 +1,936 @@
+/*
+
+ This is a generated file. DO NOT EDIT.
+
+ Copyright (C) 2010-2015 KO GmbH <copyright@kogmbh.com>
+
+ @licstart
+ The code in this file is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License (GNU AGPL)
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version.
+
+ The code in this file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with WebODF.  If not, see <http://www.gnu.org/licenses/>.
+
+ As additional permission under GNU AGPL version 3 section 7, you
+ may distribute UNMODIFIED VERSIONS OF THIS file without the copy of the GNU AGPL normally
+ required by section 4, provided you include this license notice and a URL
+ through which recipients can access the Corresponding Source.
+
+ As a special exception to the AGPL, any HTML file which merely makes function
+ calls to this code, and for that purpose includes it in unmodified form by reference or in-line shall be
+ deemed a separate work for copyright law purposes. In addition, the copyright
+ holders of this code give you permission to combine this code with free
+ software libraries that are released under the GNU LGPL. You may copy and
+ distribute such a system following the terms of the GNU AGPL for this code
+ and the LGPL for the libraries. If you modify this code, you may extend this
+ exception to your version of the code, but you are not obligated to do so.
+ If you do not wish to do so, delete this exception statement from your
+ version.
+
+ This license applies to this entire compilation.
+ @licend
+
+ @source: http://www.webodf.org/
+ @source: https://github.com/kogmbh/WebODF/
+*/
+var webodf_version="0.5.8";function Runtime(){}Runtime.prototype.getVariable=function(g){};Runtime.prototype.toJson=function(g){};Runtime.prototype.fromJson=function(g){};Runtime.prototype.byteArrayFromString=function(g,k){};Runtime.prototype.byteArrayToString=function(g,k){};Runtime.prototype.read=function(g,k,c,b){};Runtime.prototype.readFile=function(g,k,c){};Runtime.prototype.readFileSync=function(g,k){};Runtime.prototype.loadXML=function(g,k){};Runtime.prototype.writeFile=function(g,k,c){};
+Runtime.prototype.deleteFile=function(g,k){};Runtime.prototype.log=function(g,k){};Runtime.prototype.setTimeout=function(g,k){};Runtime.prototype.clearTimeout=function(g){};Runtime.prototype.libraryPaths=function(){};Runtime.prototype.currentDirectory=function(){};Runtime.prototype.setCurrentDirectory=function(g){};Runtime.prototype.type=function(){};Runtime.prototype.getDOMImplementation=function(){};Runtime.prototype.parseXML=function(g){};Runtime.prototype.exit=function(g){};
+Runtime.prototype.getWindow=function(){};Runtime.prototype.requestAnimationFrame=function(g){};Runtime.prototype.cancelAnimationFrame=function(g){};Runtime.prototype.assert=function(g,k){};var IS_COMPILED_CODE=!0;
+Runtime.byteArrayToString=function(g,k){function c(b){var c="",r,q=b.length;for(r=0;r<q;r+=1)c+=String.fromCharCode(b[r]&255);return c}function b(b){var c="",r,q=b.length,e=[],l,a,d,m;for(r=3<=q&&239===b[0]&&187===b[1]&&191===b[2]?3:0;r<q;r+=1)l=b[r],128>l?e.push(l):(r+=1,a=b[r],194<=l&&224>l?e.push((l&31)<<6|a&63):(r+=1,d=b[r],224<=l&&240>l?e.push((l&15)<<12|(a&63)<<6|d&63):(r+=1,m=b[r],240<=l&&245>l&&(l=(l&7)<<18|(a&63)<<12|(d&63)<<6|m&63,l-=65536,e.push((l>>10)+55296,(l&1023)+56320))))),1E3<=e.length&&
+(c+=String.fromCharCode.apply(null,e),e.length=0);return c+String.fromCharCode.apply(null,e)}var f;"utf8"===k?f=b(g):("binary"!==k&&this.log("Unsupported encoding: "+k),f=c(g));return f};Runtime.getVariable=function(g){try{return eval(g)}catch(k){}};Runtime.toJson=function(g){return JSON.stringify(g)};Runtime.fromJson=function(g){return JSON.parse(g)};Runtime.getFunctionName=function(g){return void 0===g.name?(g=/function\s+(\w+)/.exec(g))&&g[1]:g.name};
+Runtime.assert=function(g,k){if(!g)throw this.log("alert","ASSERTION FAILED:\n"+k),Error(k);};
+function BrowserRuntime(){function g(b){var e=b.length,l,a,d=0;for(l=0;l<e;l+=1)a=b.charCodeAt(l),d+=1+(128<a)+(2048<a),55040<a&&57344>a&&(d+=1,l+=1);return d}function k(b,e,l){var a=b.length,d,m;e=new Uint8Array(new ArrayBuffer(e));l?(e[0]=239,e[1]=187,e[2]=191,m=3):m=0;for(l=0;l<a;l+=1)d=b.charCodeAt(l),128>d?(e[m]=d,m+=1):2048>d?(e[m]=192|d>>>6,e[m+1]=128|d&63,m+=2):55040>=d||57344<=d?(e[m]=224|d>>>12&15,e[m+1]=128|d>>>6&63,e[m+2]=128|d&63,m+=3):(l+=1,d=(d-55296<<10|b.charCodeAt(l)-56320)+65536,
+e[m]=240|d>>>18&7,e[m+1]=128|d>>>12&63,e[m+2]=128|d>>>6&63,e[m+3]=128|d&63,m+=4);return e}function c(b){var e=b.length,l=new Uint8Array(new ArrayBuffer(e)),a;for(a=0;a<e;a+=1)l[a]=b.charCodeAt(a)&255;return l}function b(b,e){var l;void 0!==e?l=b:e=b;console.log(e);r.enableAlerts&&"alert"===l&&alert(e)}function f(b,e,l){if(0!==l.status||l.responseText)if(200===l.status||0===l.status){if(l.response&&"string"!==typeof l.response)"binary"===e?(l=l.response,l=new Uint8Array(l)):l=String(l.response);else if("binary"===
+e)if(null!==l.responseBody&&"undefined"!==String(typeof VBArray)){l=(new VBArray(l.responseBody)).toArray();var a=l.length;e=new Uint8Array(new ArrayBuffer(a));for(b=0;b<a;b+=1)e[b]=l[b];l=e}else{(b=l.getResponseHeader("Content-Length"))&&(b=parseInt(b,10));if(b&&b!==l.responseText.length)a:{a=l.responseText;e=!1;var d=g(a);if("number"===typeof b){if(b!==d&&b!==d+3){a=void 0;break a}e=d+3===b;d=b}a=k(a,d,e)}void 0===a&&(a=c(l.responseText));l=a}else l=l.responseText;l={err:null,data:l}}else l={err:l.responseText||
+l.statusText,data:null};else l={err:"File "+b+" is empty.",data:null};return l}function n(b,e,l){var a=new XMLHttpRequest;a.open("GET",b,l);a.overrideMimeType&&("binary"!==e?a.overrideMimeType("text/plain; charset="+e):a.overrideMimeType("text/plain; charset=x-user-defined"));return a}function p(b,e,l){var a=n(b,e,!0);a.onreadystatechange=function(){var d;4===a.readyState&&(d=f(b,e,a),l(d.err,d.data))};try{a.send(null)}catch(d){l(d.message,null)}}var r=this;this.byteArrayFromString=function(b,e){var l;
+"utf8"===e?l=k(b,g(b),!1):("binary"!==e&&r.log("unknown encoding: "+e),l=c(b));return l};this.byteArrayToString=Runtime.byteArrayToString;this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.readFile=p;this.read=function(b,e,l,a){p(b,"binary",function(d,m){var h=null;if(m){if("string"===typeof m)throw"This should not happen.";h=m.subarray(e,e+l)}a(d,h)})};this.readFileSync=function(b,e){var l=n(b,e,!1),a;try{l.send(null);a=f(b,e,l);if(a.err)throw a.err;
+if(null===a.data)throw"No data read from "+b+".";}catch(d){throw d;}return a.data};this.writeFile=function(b,e,l){var a=new XMLHttpRequest,d;a.open("PUT",b,!0);a.onreadystatechange=function(){4===a.readyState&&(0!==a.status||a.responseText?200<=a.status&&300>a.status||0===a.status?l(null):l("Status "+String(a.status)+": "+a.responseText||a.statusText):l("File "+b+" is empty."))};d=e.buffer&&!a.sendAsBinary?e.buffer:r.byteArrayToString(e,"binary");try{a.sendAsBinary?a.sendAsBinary(d):a.send(d)}catch(m){r.log("HUH? "+
+m+" "+e),l(m.message)}};this.deleteFile=function(b,e){var l=new XMLHttpRequest;l.open("DELETE",b,!0);l.onreadystatechange=function(){4===l.readyState&&(200>l.status&&300<=l.status?e(l.responseText):e(null))};l.send(null)};this.loadXML=function(b,e){var l=new XMLHttpRequest;l.open("GET",b,!0);l.overrideMimeType&&l.overrideMimeType("text/xml");l.onreadystatechange=function(){4===l.readyState&&(0!==l.status||l.responseText?200===l.status||0===l.status?e(null,l.responseXML):e(l.responseText,null):e("File "+
+b+" is empty.",null))};try{l.send(null)}catch(a){e(a.message,null)}};this.log=b;this.enableAlerts=!0;this.assert=Runtime.assert;this.setTimeout=function(b,e){return setTimeout(function(){b()},e)};this.clearTimeout=function(b){clearTimeout(b)};this.libraryPaths=function(){return["lib"]};this.setCurrentDirectory=function(){};this.currentDirectory=function(){return""};this.type=function(){return"BrowserRuntime"};this.getDOMImplementation=function(){return window.document.implementation};this.parseXML=
+function(b){return(new DOMParser).parseFromString(b,"text/xml")};this.exit=function(c){b("Calling exit with code "+String(c)+", but exit() is not implemented.")};this.getWindow=function(){return window};this.requestAnimationFrame=function(b){var e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame,l=0;if(e)e.bind(window),l=e(b);else return setTimeout(b,15);return l};this.cancelAnimationFrame=function(b){var e=window.cancelAnimationFrame||
+window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.msCancelAnimationFrame;e?(e.bind(window),e(b)):clearTimeout(b)}}
+function NodeJSRuntime(){function g(b){var e=b.length,l,a=new Uint8Array(new ArrayBuffer(e));for(l=0;l<e;l+=1)a[l]=b[l];return a}function k(c,e,l){function a(a,m){if(a)return l(a,null);if(!m)return l("No data for "+c+".",null);if("string"===typeof m)return l(a,m);l(a,g(m))}c=f.resolve(n,c);"binary"!==e?b.readFile(c,e,a):b.readFile(c,null,a)}var c=this,b=require("fs"),f=require("path"),n="",p,r;this.byteArrayFromString=function(b,e){var l=new Buffer(b,e),a,d=l.length,m=new Uint8Array(new ArrayBuffer(d));
+for(a=0;a<d;a+=1)m[a]=l[a];return m};this.byteArrayToString=Runtime.byteArrayToString;this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.readFile=k;this.loadXML=function(b,e){k(b,"utf-8",function(l,a){if(l)return e(l,null);if(!a)return e("No data for "+b+".",null);e(null,c.parseXML(a))})};this.writeFile=function(c,e,l){e=new Buffer(e);c=f.resolve(n,c);b.writeFile(c,e,"binary",function(a){l(a||null)})};this.deleteFile=function(c,e){c=f.resolve(n,c);
+b.unlink(c,e)};this.read=function(c,e,l,a){c=f.resolve(n,c);b.open(c,"r+",666,function(d,m){if(d)a(d,null);else{var h=new Buffer(l);b.read(m,h,0,l,e,function(d){b.close(m);a(d,g(h))})}})};this.readFileSync=function(c,e){var l;l=b.readFileSync(c,"binary"===e?null:e);if(null===l)throw"File "+c+" could not be read.";"binary"===e&&(l=g(l));return l};this.log=function(b,e){var l;void 0!==e?l=b:e=b;"alert"===l&&process.stderr.write("\n!!!!! ALERT !!!!!\n");process.stderr.write(e+"\n");"alert"===l&&process.stderr.write("!!!!! ALERT !!!!!\n")};
+this.assert=Runtime.assert;this.setTimeout=function(b,e){return setTimeout(function(){b()},e)};this.clearTimeout=function(b){clearTimeout(b)};this.libraryPaths=function(){return[__dirname]};this.setCurrentDirectory=function(b){n=b};this.currentDirectory=function(){return n};this.type=function(){return"NodeJSRuntime"};this.getDOMImplementation=function(){return r};this.parseXML=function(b){return p.parseFromString(b,"text/xml")};this.exit=process.exit;this.getWindow=function(){return null};this.requestAnimationFrame=
+function(b){return setTimeout(b,15)};this.cancelAnimationFrame=function(b){clearTimeout(b)};p=new (require("xmldom").DOMParser);r=c.parseXML("<a/>").implementation}
+function RhinoRuntime(){var g=this,k={},c=k.javax.xml.parsers.DocumentBuilderFactory.newInstance(),b,f,n="";c.setValidating(!1);c.setNamespaceAware(!0);c.setExpandEntityReferences(!1);c.setSchema(null);f=k.org.xml.sax.EntityResolver({resolveEntity:function(b,c){var f=new k.java.io.FileReader(c);return new k.org.xml.sax.InputSource(f)}});b=c.newDocumentBuilder();b.setEntityResolver(f);this.byteArrayFromString=function(b,c){var f,e=b.length,l=new Uint8Array(new ArrayBuffer(e));for(f=0;f<e;f+=1)l[f]=
+b.charCodeAt(f)&255;return l};this.byteArrayToString=Runtime.byteArrayToString;this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.loadXML=function(c,f){var n=new k.java.io.File(c),e=null;try{e=b.parse(n)}catch(l){return print(l),f(l,null)}f(null,e)};this.readFile=function(b,c,f){n&&(b=n+"/"+b);var e=new k.java.io.File(b),l="binary"===c?"latin1":c;e.isFile()?((b=readFile(b,l))&&"binary"===c&&(b=g.byteArrayFromString(b,"binary")),f(null,b)):f(b+" is not a file.",
+null)};this.writeFile=function(b,c,f){n&&(b=n+"/"+b);b=new k.java.io.FileOutputStream(b);var e,l=c.length;for(e=0;e<l;e+=1)b.write(c[e]);b.close();f(null)};this.deleteFile=function(b,c){n&&(b=n+"/"+b);var f=new k.java.io.File(b),e=b+Math.random(),e=new k.java.io.File(e);f.rename(e)?(e.deleteOnExit(),c(null)):c("Could not delete "+b)};this.read=function(b,c,f,e){n&&(b=n+"/"+b);var l;l=b;var a="binary";(new k.java.io.File(l)).isFile()?("binary"===a&&(a="latin1"),l=readFile(l,a)):l=null;l?e(null,this.byteArrayFromString(l.substring(c,
+c+f),"binary")):e("Cannot read "+b,null)};this.readFileSync=function(b,c){if(!c)return"";var f=readFile(b,c);if(null===f)throw"File could not be read.";return f};this.log=function(b,c){var f;void 0!==c?f=b:c=b;"alert"===f&&print("\n!!!!! ALERT !!!!!");print(c);"alert"===f&&print("!!!!! ALERT !!!!!")};this.assert=Runtime.assert;this.setTimeout=function(b){b();return 0};this.clearTimeout=function(){};this.libraryPaths=function(){return["lib"]};this.setCurrentDirectory=function(b){n=b};this.currentDirectory=
+function(){return n};this.type=function(){return"RhinoRuntime"};this.getDOMImplementation=function(){return b.getDOMImplementation()};this.parseXML=function(c){c=new k.java.io.StringReader(c);c=new k.org.xml.sax.InputSource(c);return b.parse(c)};this.exit=quit;this.getWindow=function(){return null};this.requestAnimationFrame=function(b){b();return 0};this.cancelAnimationFrame=function(){}}
+Runtime.create=function(){return"undefined"!==String(typeof window)?new BrowserRuntime:"undefined"!==String(typeof require)?new NodeJSRuntime:new RhinoRuntime};var runtime=Runtime.create(),core={},gui={},xmldom={},odf={},ops={},webodf={};(function(){webodf.Version="undefined"!==String(typeof webodf_version)?webodf_version:"From Source"})();
+(function(){function g(b,c,e){var l=b+"/manifest.json",a,d;runtime.log("Loading manifest: "+l);try{a=runtime.readFileSync(l,"utf-8")}catch(m){if(e)runtime.log("No loadable manifest found.");else throw console.log(String(m)),m;return}e=JSON.parse(a);for(d in e)e.hasOwnProperty(d)&&(c[d]={dir:b,deps:e[d]})}function k(b,c,e){function l(h){if(!m[h]&&!e(h)){if(d[h])throw"Circular dependency detected for "+h+".";d[h]=!0;if(!c[h])throw"Missing dependency information for class "+h+".";var b=c[h],f=b.deps,
+n,r=f.length;for(n=0;n<r;n+=1)l(f[n]);d[h]=!1;m[h]=!0;a.push(b.dir+"/"+h.replace(".","/")+".js")}}var a=[],d={},m={};b.forEach(l);return a}function c(b,c){return c+("\n//# sourceURL="+b)}function b(b){var f,e;for(f=0;f<b.length;f+=1)e=runtime.readFileSync(b[f],"utf-8"),e=c(b[f],e),eval(e)}function f(b){b=b.split(".");var c,e=p,l=b.length;for(c=0;c<l;c+=1){if(!e.hasOwnProperty(b[c]))return!1;e=e[b[c]]}return!0}var n,p={core:core,gui:gui,xmldom:xmldom,odf:odf,ops:ops};runtime.loadClasses=function(c,
+p){if(IS_COMPILED_CODE||0===c.length)return p&&p();var e;if(!(e=n)){e=[];var l=runtime.libraryPaths(),a;runtime.currentDirectory()&&-1===l.indexOf(runtime.currentDirectory())&&g(runtime.currentDirectory(),e,!0);for(a=0;a<l.length;a+=1)g(l[a],e)}n=e;c=k(c,n,f);if(0===c.length)return p&&p();if("BrowserRuntime"===runtime.type()&&p){e=c;l=document.currentScript||document.documentElement.lastChild;a=document.createDocumentFragment();var d,m;for(m=0;m<e.length;m+=1)d=document.createElement("script"),d.type=
+"text/javascript",d.charset="utf-8",d.async=!1,d.setAttribute("src",e[m]),a.appendChild(d);p&&(d.onload=p);l.parentNode.insertBefore(a,l)}else b(c),p&&p()};runtime.loadClass=function(b,c){runtime.loadClasses([b],c)}})();(function(){var g=function(g){return g};runtime.getTranslator=function(){return g};runtime.setTranslator=function(k){g=k};runtime.tr=function(k){var c=g(k);return c&&"string"===String(typeof c)?c:k}})();
+(function(g){function k(c){if(c.length){var b=c[0];runtime.readFile(b,"utf8",function(f,n){function g(){var b;(b=eval(k))&&runtime.exit(b)}var r="",r=b.lastIndexOf("/"),k=n,r=-1!==r?b.substring(0,r):".";runtime.setCurrentDirectory(r);f?(runtime.log(f),runtime.exit(1)):null===k?(runtime.log("No code found for "+b),runtime.exit(1)):g.apply(null,c)})}}g=g?Array.prototype.slice.call(g):[];"NodeJSRuntime"===runtime.type()?k(process.argv.slice(2)):"RhinoRuntime"===runtime.type()?k(g):k(g.slice(1))})("undefined"!==
+String(typeof arguments)&&arguments);(function(){core.Async=function(){return{forEach:function(g,k,c){function b(b){p!==n&&(b?(p=n,c(b)):(p+=1,p===n&&c(null)))}var f,n=g.length,p=0;for(f=0;f<n;f+=1)k(g[f],b)},destroyAll:function(g,k){function c(b,f){if(f)k(f);else if(b<g.length)g[b](function(f){c(b+1,f)});else k()}c(0,void 0)}}}()})();
+function makeBase64(){function g(a){var d,m=a.length,h=new Uint8Array(new ArrayBuffer(m));for(d=0;d<m;d+=1)h[d]=a.charCodeAt(d)&255;return h}function k(a){var d,m="",h,b=a.length-2;for(h=0;h<b;h+=3)d=a[h]<<16|a[h+1]<<8|a[h+2],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>18],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>12&63],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>6&63],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d&
+63];h===b+1?(d=a[h]<<4,m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>6],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d&63],m+="=="):h===b&&(d=a[h]<<10|a[h+1]<<2,m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>12],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>6&63],m+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d&63],m+="=");return m}function c(a){a=a.replace(/[^A-Za-z0-9+\/]+/g,
+"");var d=a.length,m=new Uint8Array(new ArrayBuffer(3*d)),b=a.length%4,c=0,l,e;for(l=0;l<d;l+=4)e=(h[a.charAt(l)]||0)<<18|(h[a.charAt(l+1)]||0)<<12|(h[a.charAt(l+2)]||0)<<6|(h[a.charAt(l+3)]||0),m[c]=e>>16,m[c+1]=e>>8&255,m[c+2]=e&255,c+=3;d=3*d-[0,0,2,1][b];return m.subarray(0,d)}function b(a){var d,m,h=a.length,b=0,c=new Uint8Array(new ArrayBuffer(3*h));for(d=0;d<h;d+=1)m=a[d],128>m?c[b++]=m:(2048>m?c[b++]=192|m>>>6:(c[b++]=224|m>>>12&15,c[b++]=128|m>>>6&63),c[b++]=128|m&63);return c.subarray(0,
+b)}function f(a){var d,m,h,b,c=a.length,l=new Uint8Array(new ArrayBuffer(c)),e=0;for(d=0;d<c;d+=1)m=a[d],128>m?l[e++]=m:(d+=1,h=a[d],224>m?l[e++]=(m&31)<<6|h&63:(d+=1,b=a[d],l[e++]=(m&15)<<12|(h&63)<<6|b&63));return l.subarray(0,e)}function n(a){return k(g(a))}function p(a){return String.fromCharCode.apply(String,c(a))}function r(a){return f(g(a))}function q(a){a=f(a);for(var d="",m=0;m<a.length;)d+=String.fromCharCode.apply(String,a.subarray(m,m+45E3)),m+=45E3;return d}function e(a,d,m){var h,b,
+c,l="";for(c=d;c<m;c+=1)d=a.charCodeAt(c)&255,128>d?l+=String.fromCharCode(d):(c+=1,h=a.charCodeAt(c)&255,224>d?l+=String.fromCharCode((d&31)<<6|h&63):(c+=1,b=a.charCodeAt(c)&255,l+=String.fromCharCode((d&15)<<12|(h&63)<<6|b&63)));return l}function l(a,d){function m(){var c=b+1E5;c>a.length&&(c=a.length);h+=e(a,b,c);b=c;c=b===a.length;d(h,c)&&!c&&runtime.setTimeout(m,0)}var h="",b=0;1E5>a.length?d(e(a,0,a.length),!0):("string"!==typeof a&&(a=a.slice()),m())}function a(a){return b(g(a))}function d(a){return String.fromCharCode.apply(String,
+b(a))}function m(a){return String.fromCharCode.apply(String,b(g(a)))}var h=function(a){var d={},m,h;m=0;for(h=a.length;m<h;m+=1)d[a.charAt(m)]=m;return d}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),y,x,z=runtime.getWindow(),w,v;z&&z.btoa?(w=z.btoa,y=function(a){return w(m(a))}):(w=n,y=function(d){return k(a(d))});z&&z.atob?(v=z.atob,x=function(a){a=v(a);return e(a,0,a.length)}):(v=p,x=function(a){return q(c(a))});core.Base64=function(){this.convertByteArrayToBase64=this.convertUTF8ArrayToBase64=
+k;this.convertBase64ToByteArray=this.convertBase64ToUTF8Array=c;this.convertUTF16ArrayToByteArray=this.convertUTF16ArrayToUTF8Array=b;this.convertByteArrayToUTF16Array=this.convertUTF8ArrayToUTF16Array=f;this.convertUTF8StringToBase64=n;this.convertBase64ToUTF8String=p;this.convertUTF8StringToUTF16Array=r;this.convertByteArrayToUTF16String=this.convertUTF8ArrayToUTF16String=q;this.convertUTF8StringToUTF16String=l;this.convertUTF16StringToByteArray=this.convertUTF16StringToUTF8Array=a;this.convertUTF16ArrayToUTF8String=
+d;this.convertUTF16StringToUTF8String=m;this.convertUTF16StringToBase64=y;this.convertBase64ToUTF16String=x;this.fromBase64=p;this.toBase64=n;this.atob=v;this.btoa=w;this.utob=m;this.btou=l;this.encode=y;this.encodeURI=function(a){return y(a).replace(/[+\/]/g,function(a){return"+"===a?"-":"_"}).replace(/\\=+$/,"")};this.decode=function(a){return x(a.replace(/[\-_]/g,function(a){return"-"===a?"+":"/"}))};return this};return core.Base64}core.Base64=makeBase64();
+core.CSSUnits=function(){var g=this,k={"in":1,cm:2.54,mm:25.4,pt:72,pc:12,px:96};this.convert=function(c,b,f){return c*k[f]/k[b]};this.convertMeasure=function(c,b){var f,n;c&&b&&(f=parseFloat(c),n=c.replace(f.toString(),""),f=g.convert(f,n,b));return f};this.getUnits=function(c){return c.substr(c.length-2,c.length)}};
+(function(){function g(){var b,f,n,g,k,q,e,l,a;void 0===c&&(f=(b=runtime.getWindow())&&b.document,q=f.documentElement,e=f.body,c={rangeBCRIgnoresElementBCR:!1,unscaledRangeClientRects:!1,elementBCRIgnoresBodyScroll:!1},f&&(g=f.createElement("div"),g.style.position="absolute",g.style.left="-99999px",g.style.transform="scale(2)",g.style["-webkit-transform"]="scale(2)",k=f.createElement("div"),g.appendChild(k),e.appendChild(g),b=f.createRange(),b.selectNode(k),c.rangeBCRIgnoresElementBCR=0===b.getClientRects().length,
+k.appendChild(f.createTextNode("Rect transform test")),f=k.getBoundingClientRect(),n=b.getBoundingClientRect(),c.unscaledRangeClientRects=2<Math.abs(f.height-n.height),g.style.transform="",g.style["-webkit-transform"]="",f=q.style.overflow,n=e.style.overflow,l=e.style.height,a=e.scrollTop,q.style.overflow="visible",e.style.overflow="visible",e.style.height="200%",e.scrollTop=e.scrollHeight,c.elementBCRIgnoresBodyScroll=b.getBoundingClientRect().top!==k.getBoundingClientRect().top,e.scrollTop=a,e.style.height=
+l,e.style.overflow=n,q.style.overflow=f,b.detach(),e.removeChild(g),b=Object.keys(c).map(function(a){return a+":"+String(c[a])}).join(", "),runtime.log("Detected browser quirks - "+b)));return c}function k(b,c,n){for(b=b?b.firstElementChild:null;b;){if(b.localName===n&&b.namespaceURI===c)return b;b=b.nextElementSibling}return null}var c;core.DomUtilsImpl=function(){function b(a,d){for(var b=0,c;a.parentNode!==d;)runtime.assert(null!==a.parentNode,"parent is null"),a=a.parentNode;for(c=d.firstChild;c!==
+a;)b+=1,c=c.nextSibling;return b}function c(a,d){return 0>=a.compareBoundaryPoints(Range.START_TO_START,d)&&0<=a.compareBoundaryPoints(Range.END_TO_END,d)}function n(a,d){return 0>=a.compareBoundaryPoints(Range.END_TO_START,d)&&0<=a.compareBoundaryPoints(Range.START_TO_END,d)}function p(a,d){var b=null;a.nodeType===Node.TEXT_NODE&&(0===a.length?(a.parentNode.removeChild(a),d.nodeType===Node.TEXT_NODE&&(b=d)):(d.nodeType===Node.TEXT_NODE&&(a.appendData(d.data),d.parentNode.removeChild(d)),b=a));return b}
+function r(a){for(var d=a.parentNode;a.firstChild;)d.insertBefore(a.firstChild,a);d.removeChild(a);return d}function q(a,d){var b=a.parentNode,c=a.firstChild,l=d(a),e;if(l===NodeFilter.FILTER_SKIP)return b;for(;c;)e=c.nextSibling,q(c,d),c=e;b&&l===NodeFilter.FILTER_REJECT&&r(a);return b}function e(a,d){return a===d||Boolean(a.compareDocumentPosition(d)&Node.DOCUMENT_POSITION_CONTAINED_BY)}function l(a,d){return g().unscaledRangeClientRects?a:a/d}function a(d,h,b){Object.keys(h).forEach(function(c){var l=
+c.split(":"),e=l[1],f=b(l[0]),l=h[c],n=typeof l;"object"===n?Object.keys(l).length&&(c=f?d.getElementsByTagNameNS(f,e)[0]||d.ownerDocument.createElementNS(f,c):d.getElementsByTagName(e)[0]||d.ownerDocument.createElement(c),d.appendChild(c),a(c,l,b)):f&&(runtime.assert("number"===n||"string"===n,"attempting to map unsupported type '"+n+"' (key: "+c+")"),d.setAttributeNS(f,c,String(l)))})}var d=null;this.splitBoundaries=function(a){var d,c=[],l,e,f;if(a.startContainer.nodeType===Node.TEXT_NODE||a.endContainer.nodeType===
+Node.TEXT_NODE){l=a.endContainer;e=a.endContainer.nodeType!==Node.TEXT_NODE?a.endOffset===a.endContainer.childNodes.length:!1;f=a.endOffset;d=a.endContainer;if(f<d.childNodes.length)for(d=d.childNodes.item(f),f=0;d.firstChild;)d=d.firstChild;else for(;d.lastChild;)d=d.lastChild,f=d.nodeType===Node.TEXT_NODE?d.textContent.length:d.childNodes.length;d===l&&(l=null);a.setEnd(d,f);f=a.endContainer;0!==a.endOffset&&f.nodeType===Node.TEXT_NODE&&(d=f,a.endOffset!==d.length&&(c.push(d.splitText(a.endOffset)),
+c.push(d)));f=a.startContainer;0!==a.startOffset&&f.nodeType===Node.TEXT_NODE&&(d=f,a.startOffset!==d.length&&(f=d.splitText(a.startOffset),c.push(d),c.push(f),a.setStart(f,0)));if(null!==l){for(f=a.endContainer;f.parentNode&&f.parentNode!==l;)f=f.parentNode;e=e?l.childNodes.length:b(f,l);a.setEnd(l,e)}}return c};this.containsRange=c;this.rangesIntersect=n;this.rangeIntersection=function(a,d){var b;n(a,d)&&(b=a.cloneRange(),-1===a.compareBoundaryPoints(Range.START_TO_START,d)&&b.setStart(d.startContainer,
+d.startOffset),1===a.compareBoundaryPoints(Range.END_TO_END,d)&&b.setEnd(d.endContainer,d.endOffset));return b};this.getNodesInRange=function(a,d,b){var c=[],l=a.commonAncestorContainer,l=l.nodeType===Node.TEXT_NODE?l.parentNode:l;b=a.startContainer.ownerDocument.createTreeWalker(l,b,d,!1);var e,f;a.endContainer.childNodes[a.endOffset-1]?(e=a.endContainer.childNodes[a.endOffset-1],f=Node.DOCUMENT_POSITION_PRECEDING|Node.DOCUMENT_POSITION_CONTAINED_BY):(e=a.endContainer,f=Node.DOCUMENT_POSITION_PRECEDING);
+if(a.startContainer.childNodes[a.startOffset])a=a.startContainer.childNodes[a.startOffset],b.currentNode=a;else{var n=a.startContainer;a.startOffset===(n.nodeType===Node.TEXT_NODE?n.length:n.childNodes.length)?(a=a.startContainer,b.currentNode=a,b.lastChild(),a=b.nextNode()):(a=a.startContainer,b.currentNode=a)}if(a){a=b.currentNode;if(a!==l)for(a=a.parentNode;a&&a!==l;)d(a)===NodeFilter.FILTER_REJECT&&(b.currentNode=a),a=a.parentNode;a=b.currentNode;switch(d(a)){case NodeFilter.FILTER_REJECT:for(a=
+b.nextSibling();!a&&b.parentNode();)a=b.nextSibling();break;case NodeFilter.FILTER_SKIP:a=b.nextNode()}for(;a;){d=e.compareDocumentPosition(a);if(0!==d&&0===(d&f))break;c.push(a);a=b.nextNode()}}return c};this.normalizeTextNodes=function(a){a&&a.nextSibling&&(a=p(a,a.nextSibling));a&&a.previousSibling&&p(a.previousSibling,a)};this.rangeContainsNode=function(a,d){var b=d.ownerDocument.createRange(),l=d.ownerDocument.createRange(),e;b.setStart(a.startContainer,a.startOffset);b.setEnd(a.endContainer,
+a.endOffset);l.selectNodeContents(d);e=c(b,l);b.detach();l.detach();return e};this.mergeIntoParent=r;this.removeUnwantedNodes=q;this.removeAllChildNodes=function(a){for(;a.firstChild;)a.removeChild(a.firstChild)};this.getElementsByTagNameNS=function(a,d,b){var c=[];a=a.getElementsByTagNameNS(d,b);c.length=b=a.length;for(d=0;d<b;d+=1)c[d]=a.item(d);return c};this.getElementsByTagName=function(a,d){var b=[],c,l,e;c=a.getElementsByTagName(d);b.length=e=c.length;for(l=0;l<e;l+=1)b[l]=c.item(l);return b};
+this.containsNode=function(a,d){return a===d||a.contains(d)};this.comparePoints=function(a,d,c,l){if(a===c)return l-d;var e=a.compareDocumentPosition(c);2===e?e=-1:4===e?e=1:10===e?(d=b(a,c),e=d<l?1:-1):(l=b(c,a),e=l<d?-1:1);return e};this.adaptRangeDifferenceToZoomLevel=l;this.translateRect=function(a,d,b){return{top:l(a.top-d.top,b),left:l(a.left-d.left,b),bottom:l(a.bottom-d.top,b),right:l(a.right-d.left,b),width:l(a.width,b),height:l(a.height,b)}};this.getBoundingClientRect=function(a){var b=
+a.ownerDocument,c=g(),l=b.body;if((!1===c.unscaledRangeClientRects||c.rangeBCRIgnoresElementBCR)&&a.nodeType===Node.ELEMENT_NODE)return a=a.getBoundingClientRect(),c.elementBCRIgnoresBodyScroll?{left:a.left+l.scrollLeft,right:a.right+l.scrollLeft,top:a.top+l.scrollTop,bottom:a.bottom+l.scrollTop,width:a.width,height:a.height}:a;var e;d?e=d:d=e=b.createRange();c=e;c.selectNode(a);return c.getBoundingClientRect()};this.mapKeyValObjOntoNode=function(a,d,b){Object.keys(d).forEach(function(c){var l=c.split(":"),
+e=l[1],l=b(l[0]),f=d[c];l?(e=a.getElementsByTagNameNS(l,e)[0],e||(e=a.ownerDocument.createElementNS(l,c),a.appendChild(e)),e.textContent=f):runtime.log("Key ignored: "+c)})};this.removeKeyElementsFromNode=function(a,d,b){d.forEach(function(d){var c=d.split(":"),h=c[1];(c=b(c[0]))?(h=a.getElementsByTagNameNS(c,h)[0])?h.parentNode.removeChild(h):runtime.log("Element for "+d+" not found."):runtime.log("Property Name ignored: "+d)})};this.getKeyValRepresentationOfNode=function(a,d){for(var b={},c=a.firstElementChild,
+l;c;){if(l=d(c.namespaceURI))b[l+":"+c.localName]=c.textContent;c=c.nextElementSibling}return b};this.mapObjOntoNode=a;this.cloneEvent=function(a){var d=Object.create(null);Object.keys(a.constructor.prototype).forEach(function(b){d[b]=a[b]});d.prototype=a.constructor.prototype;return d};this.getDirectChild=k;(function(a){var d,b;b=runtime.getWindow();null!==b&&(d=b.navigator.appVersion.toLowerCase(),b=-1===d.indexOf("chrome")&&(-1!==d.indexOf("applewebkit")||-1!==d.indexOf("safari")),d=-1!==d.indexOf("msie")||
+-1!==d.indexOf("trident"),b||d)&&(a.containsNode=e)})(this)};core.DomUtils=new core.DomUtilsImpl})();
+core.Cursor=function(g,k){function c(a){a.parentNode&&(r.push(a.previousSibling),r.push(a.nextSibling),a.parentNode.removeChild(a))}function b(a,d,b){if(d.nodeType===Node.TEXT_NODE){runtime.assert(Boolean(d),"putCursorIntoTextNode: invalid container");var c=d.parentNode;runtime.assert(Boolean(c),"putCursorIntoTextNode: container without parent");runtime.assert(0<=b&&b<=d.length,"putCursorIntoTextNode: offset is out of bounds");0===b?c.insertBefore(a,d):(b!==d.length&&d.splitText(b),c.insertBefore(a,
+d.nextSibling))}else d.nodeType===Node.ELEMENT_NODE&&d.insertBefore(a,d.childNodes.item(b));r.push(a.previousSibling);r.push(a.nextSibling)}var f=g.createElementNS("urn:webodf:names:cursor","cursor"),n=g.createElementNS("urn:webodf:names:cursor","anchor"),p,r=[],q=g.createRange(),e,l=core.DomUtils;this.getNode=function(){return f};this.getAnchorNode=function(){return n.parentNode?n:f};this.getSelectedRange=function(){e?(q.setStartBefore(f),q.collapse(!0)):(q.setStartAfter(p?n:f),q.setEndBefore(p?
+f:n));return q};this.setSelectedRange=function(a,d){q&&q!==a&&q.detach();q=a;p=!1!==d;(e=a.collapsed)?(c(n),c(f),b(f,a.startContainer,a.startOffset)):(c(n),c(f),b(p?f:n,a.endContainer,a.endOffset),b(p?n:f,a.startContainer,a.startOffset));r.forEach(l.normalizeTextNodes);r.length=0};this.hasForwardSelection=function(){return p};this.remove=function(){c(f);r.forEach(l.normalizeTextNodes);r.length=0};f.setAttributeNS("urn:webodf:names:cursor","memberId",k);n.setAttributeNS("urn:webodf:names:cursor","memberId",
+k)};core.Destroyable=function(){};core.Destroyable.prototype.destroy=function(g){};core.EventSource=function(){};core.EventSource.prototype.subscribe=function(g,k){};core.EventSource.prototype.unsubscribe=function(g,k){};
+core.EventNotifier=function(g){function k(b){runtime.assert(!c.hasOwnProperty(b),'Duplicated event ids: "'+b+'" registered more than once.');c[b]=[]}var c={};this.emit=function(b,f){var n,g;runtime.assert(c.hasOwnProperty(b),'unknown event fired "'+b+'"');g=c[b];for(n=0;n<g.length;n+=1)g[n](f)};this.subscribe=function(b,f){runtime.assert(c.hasOwnProperty(b),'tried to subscribe to unknown event "'+b+'"');c[b].push(f)};this.unsubscribe=function(b,f){var n;runtime.assert(c.hasOwnProperty(b),'tried to unsubscribe from unknown event "'+
+b+'"');n=c[b].indexOf(f);runtime.assert(-1!==n,'tried to unsubscribe unknown callback from event "'+b+'"');-1!==n&&c[b].splice(n,1)};this.register=k;g&&g.forEach(k)};
+core.ScheduledTask=function(g,k,c){function b(){p&&(c(n),p=!1)}function f(){b();g.apply(void 0,r);r=null}var n,p=!1,r=[],q=!1;this.trigger=function(){runtime.assert(!1===q,"Can't trigger destroyed ScheduledTask instance");r=Array.prototype.slice.call(arguments);p||(p=!0,n=k(f))};this.triggerImmediate=function(){runtime.assert(!1===q,"Can't trigger destroyed ScheduledTask instance");r=Array.prototype.slice.call(arguments);f()};this.processRequests=function(){p&&f()};this.cancel=b;this.restart=function(){runtime.assert(!1===
+q,"Can't trigger destroyed ScheduledTask instance");b();p=!0;n=k(f)};this.destroy=function(c){b();q=!0;c()}};
+(function(){var g;core.Task={};core.Task.SUPPRESS_MANUAL_PROCESSING=!1;core.Task.processTasks=function(){core.Task.SUPPRESS_MANUAL_PROCESSING||g.performRedraw()};core.Task.createRedrawTask=function(k){return new core.ScheduledTask(k,g.requestRedrawTask,g.cancelRedrawTask)};core.Task.createTimeoutTask=function(g,c){return new core.ScheduledTask(g,function(b){return runtime.setTimeout(b,c)},runtime.clearTimeout)};g=new function(){var g={};this.requestRedrawTask=function(c){var b=runtime.requestAnimationFrame(function(){c();
+delete g[b]});g[b]=c;return b};this.performRedraw=function(){Object.keys(g).forEach(function(c){g[c]();runtime.cancelAnimationFrame(parseInt(c,10))});g={}};this.cancelRedrawTask=function(c){runtime.cancelAnimationFrame(c);delete g[c]}}})();
+core.EventSubscriptions=function(){function g(b,f,n){b.subscribe(f,n);c.push({eventSource:b,eventid:f,callback:n})}function k(){var n=[];c.forEach(function(b){b.eventSource.unsubscribe(b.eventid,b.callback)});c.length=0;Object.keys(f).forEach(function(b){f[b].forEach(function(b){n.push(b.task.destroy)});delete f[b]});core.Async.destroyAll(n,function(){});b=new core.EventNotifier}var c=[],b=new core.EventNotifier,f={},n=0;this.addSubscription=g;this.addFrameSubscription=function(c,k,q){var e,l,a,d;
+f.hasOwnProperty(k)||(f[k]=[]);a=f[k];for(d=0;d<a.length;d+=1)if(a[d].eventSource===c){e=a[d];break}e||(l="s"+n,n+=1,b.register(l),e={frameEventId:l,eventSource:c,task:core.Task.createRedrawTask(function(){b.emit(l,void 0)})},a.push(e),g(c,k,e.task.trigger));b.subscribe(e.frameEventId,q)};this.unsubscribeAll=k;this.destroy=function(b){k();b()}};core.LazyProperty=function(g){var k,c=!1;this.value=function(){c||(k=g(),c=!0);return k};this.reset=function(){c=!1}};
+core.LoopWatchDog=function(g,k){var c=Date.now(),b=0;this.check=function(){var f;if(g&&(f=Date.now(),f-c>g))throw runtime.log("alert","watchdog timeout"),"timeout!";if(0<k&&(b+=1,b>k))throw runtime.log("alert","watchdog loop overflow"),"loop overflow";}};core.NodeFilterChain=function(g){var k=NodeFilter.FILTER_REJECT,c=NodeFilter.FILTER_ACCEPT;this.acceptNode=function(b){var f;for(f=0;f<g.length;f+=1)if(g[f].acceptNode(b)===k)return k;return c}};
+core.PositionIterator=function(g,k,c,b){function f(){this.acceptNode=function(a){return!a||a.nodeType===m&&0===a.length?x:y}}function n(a){this.acceptNode=function(d){return!d||d.nodeType===m&&0===d.length?x:a.acceptNode(d)}}function p(){var d=l.currentNode,b=d.nodeType;a=b===m?d.length-1:b===h?1:0}function r(){if(null===l.previousSibling()){if(!l.parentNode()||l.currentNode===g)return l.firstChild(),!1;a=0}else p();return!0}function q(){var b=l.currentNode,c;c=d(b);if(b!==g)for(b=b.parentNode;b&&
+b!==g;)d(b)===x&&(l.currentNode=b,c=x),b=b.parentNode;c===x?(a=l.currentNode.nodeType===m?b.length:1,b=e.nextPosition()):b=c===y?!0:e.nextPosition();b&&runtime.assert(d(l.currentNode)===y,"moveToAcceptedNode did not result in walker being on an accepted node");return b}var e=this,l,a,d,m=Node.TEXT_NODE,h=Node.ELEMENT_NODE,y=NodeFilter.FILTER_ACCEPT,x=NodeFilter.FILTER_REJECT;this.nextPosition=function(){var d=l.currentNode,b=d.nodeType;if(d===g)return!1;if(0===a&&b===h)null===l.firstChild()&&(a=1);
+else if(b===m&&a+1<d.length)a+=1;else if(null!==l.nextSibling())a=0;else if(l.parentNode())a=1;else return!1;return!0};this.previousPosition=function(){var d=!0,b=l.currentNode;0===a?d=r():b.nodeType===m?--a:null!==l.lastChild()?p():b===g?d=!1:a=0;return d};this.previousNode=r;this.container=function(){var d=l.currentNode,b=d.nodeType;0===a&&b!==m&&(d=d.parentNode);return d};this.rightNode=function(){var b=l.currentNode,c=b.nodeType;if(c===m&&a===b.length)for(b=b.nextSibling;b&&d(b)!==y;)b=b.nextSibling;
+else c===h&&1===a&&(b=null);return b};this.leftNode=function(){var b=l.currentNode;if(0===a)for(b=b.previousSibling;b&&d(b)!==y;)b=b.previousSibling;else if(b.nodeType===h)for(b=b.lastChild;b&&d(b)!==y;)b=b.previousSibling;return b};this.getCurrentNode=function(){return l.currentNode};this.unfilteredDomOffset=function(){if(l.currentNode.nodeType===m)return a;for(var d=0,b=l.currentNode,b=1===a?b.lastChild:b.previousSibling;b;)d+=1,b=b.previousSibling;return d};this.getPreviousSibling=function(){var a=
+l.currentNode,d=l.previousSibling();l.currentNode=a;return d};this.getNextSibling=function(){var a=l.currentNode,d=l.nextSibling();l.currentNode=a;return d};this.setPositionBeforeElement=function(d){runtime.assert(Boolean(d),"setPositionBeforeElement called without element");l.currentNode=d;a=0;return q()};this.setUnfilteredPosition=function(d,b){runtime.assert(Boolean(d),"PositionIterator.setUnfilteredPosition called without container");l.currentNode=d;d.nodeType===m?(a=b,runtime.assert(b<=d.length,
+"Error in setPosition: "+b+" > "+d.length),runtime.assert(0<=b,"Error in setPosition: "+b+" < 0"),b===d.length&&(l.nextSibling()?a=0:l.parentNode()?a=1:runtime.assert(!1,"Error in setUnfilteredPosition: position not valid."))):b<d.childNodes.length?(l.currentNode=d.childNodes.item(b),a=0):a=1;return q()};this.moveToEnd=function(){l.currentNode=g;a=1};this.moveToEndOfNode=function(d){d.nodeType===m?e.setUnfilteredPosition(d,d.length):(l.currentNode=d,a=1)};this.isBeforeNode=function(){return 0===a};
+this.getNodeFilter=function(){return d};d=(c?new n(c):new f).acceptNode;d.acceptNode=d;k=k||NodeFilter.SHOW_ALL;runtime.assert(g.nodeType!==Node.TEXT_NODE,"Internet Explorer doesn't allow tree walker roots to be text nodes");l=g.ownerDocument.createTreeWalker(g,k,d,b);a=0;null===l.firstChild()&&(a=1)};core.PositionFilter=function(){};core.PositionFilter.FilterResult={FILTER_ACCEPT:1,FILTER_REJECT:2,FILTER_SKIP:3};core.PositionFilter.prototype.acceptPosition=function(g){};
+core.PositionFilterChain=function(){var g=[],k=core.PositionFilter.FilterResult.FILTER_ACCEPT,c=core.PositionFilter.FilterResult.FILTER_REJECT;this.acceptPosition=function(b){var f;for(f=0;f<g.length;f+=1)if(g[f].acceptPosition(b)===c)return c;return k};this.addFilter=function(b){g.push(b)}};core.StepDirection={PREVIOUS:1,NEXT:2};
+core.StepIterator=function(g,k){function c(){a=null;m=d=void 0}function b(){void 0===m&&(m=g.acceptPosition(k)===e);return m}function f(a,d){c();return k.setUnfilteredPosition(a,d)}function n(){a||(a=k.container());return a}function p(){void 0===d&&(d=k.unfilteredDomOffset());return d}function r(){for(c();k.nextPosition();)if(c(),b())return!0;return!1}function q(){for(c();k.previousPosition();)if(c(),b())return!0;return!1}var e=core.PositionFilter.FilterResult.FILTER_ACCEPT,l=core.StepDirection.NEXT,
+a,d,m;this.isStep=b;this.setPosition=f;this.container=n;this.offset=p;this.nextStep=r;this.previousStep=q;this.advanceStep=function(a){return a===l?r():q()};this.roundToClosestStep=function(){var a,d,c=b();c||(a=n(),d=p(),c=q(),c||(f(a,d),c=r()));return c};this.roundToPreviousStep=function(){var a=b();a||(a=q());return a};this.roundToNextStep=function(){var a=b();a||(a=r());return a};this.leftNode=function(){return k.leftNode()};this.snapshot=function(){return new core.StepIterator.StepSnapshot(n(),
+p())};this.restore=function(a){f(a.container,a.offset)}};core.StepIterator.StepSnapshot=function(g,k){this.container=g;this.offset=k};
+core.Utils=function(){function g(k,c){if(c&&Array.isArray(c)){k=k||[];if(!Array.isArray(k))throw"Destination is not an array.";k=k.concat(c.map(function(b){return g(null,b)}))}else if(c&&"object"===typeof c){k=k||{};if("object"!==typeof k)throw"Destination is not an object.";Object.keys(c).forEach(function(b){k[b]=g(k[b],c[b])})}else k=c;return k}this.hashString=function(g){var c=0,b,f;b=0;for(f=g.length;b<f;b+=1)c=(c<<5)-c+g.charCodeAt(b),c|=0;return c};this.mergeObjects=function(k,c){Object.keys(c).forEach(function(b){k[b]=
+g(k[b],c[b])});return k}};
+core.Zip=function(g,k){function c(b,c){var a=r.file(b);a?c(null,a.asUint8Array()):c(b+" not found.",null)}function b(b,l){c(b,function(a,d){if(a||null===d)return l(a,null);var b=runtime.byteArrayToString(d,"utf8");l(null,b)})}function f(b,c){try{b(r.generate({type:"uint8array",compression:"DEFLATE"}))}catch(a){c(a.message)}}function n(b,c){f(function(a){runtime.writeFile(b,a,c)},c)}var p=this,r,q=new core.Base64;this.load=c;this.save=function(b,c,a,d){r.file(b,c,{date:d,compression:a?null:"STORE"})};
+this.remove=function(b){var c=null!==r.file(b);r.remove(b);return c};this.write=function(b){n(g,b)};this.writeAs=n;this.createByteArray=f;this.loadContentXmlAsFragments=function(c,l){b(c,function(a,d){if(a)return l.rootElementReady(a);l.rootElementReady(null,d,!0)})};this.loadAsString=b;this.loadAsDOM=function(c,l){b(c,function(a,d){if(a||null===d)l(a,null);else{var b=(new DOMParser).parseFromString(d,"text/xml");l(null,b)}})};this.loadAsDataURL=function(b,l,a){c(b,function(d,b){if(d||!b)return a(d,
+null);var c=0,e;l||(l=80===b[1]&&78===b[2]&&71===b[3]?"image/png":255===b[0]&&216===b[1]&&255===b[2]?"image/jpeg":71===b[0]&&73===b[1]&&70===b[2]?"image/gif":"");for(e="data:"+l+";base64,";c<b.length;)e+=q.convertUTF8ArrayToBase64(b.subarray(c,Math.min(c+45E3,b.length))),c+=45E3;a(null,e)})};this.getEntries=function(){return Object.keys(r.files).map(function(b){return{filename:b}})};r=new externs.JSZip;null!==k&&runtime.readFile(g,"binary",function(b,c){"string"===typeof c&&(b="file was read as a string. Should be Uint8Array.");
+if(b||!c||0===c.length)k("File '"+g+"' cannot be read. Err: "+(b||"[none]"),p);else try{r.load(c,{checkCRC32:!1}),k(null,p)}catch(a){k(a.message,p)}})};core.SimpleClientRect=null;gui.CommonConstraints={EDIT:{ANNOTATIONS:{ONLY_DELETE_OWN:"onlyDeleteOwn"},REVIEW_MODE:"reviewMode"}};
+gui.SessionConstraints=function(){function g(b){k.hasOwnProperty(b)||(k[b]=!1,c.register(b))}var k={},c=new core.EventNotifier;this.registerConstraint=g;this.subscribe=function(b,f){g(b);c.subscribe(b,f)};this.unsubscribe=function(b,f){c.unsubscribe(b,f)};this.setState=function(b,f){runtime.assert(!0===k.hasOwnProperty(b),"No such constraint");k[b]!==f&&(k[b]=f,c.emit(b,f))};this.getState=function(b){runtime.assert(!0===k.hasOwnProperty(b),"No such constraint");return k[b]}};
+gui.BlacklistNamespaceNodeFilter=function(g){var k={},c=NodeFilter.FILTER_REJECT,b=NodeFilter.FILTER_ACCEPT;this.acceptNode=function(f){return!f||k.hasOwnProperty(f.namespaceURI)?c:b};(function(){g.forEach(function(b){k[b]=!0})})()};
+odf.Namespaces={namespaceMap:{config:"urn:oasis:names:tc:opendocument:xmlns:config:1.0",db:"urn:oasis:names:tc:opendocument:xmlns:database:1.0",dc:"http://purl.org/dc/elements/1.1/",dr3d:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0",draw:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0",chart:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0",fo:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",form:"urn:oasis:names:tc:opendocument:xmlns:form:1.0",math:"http://www.w3.org/1998/Math/MathML",
+meta:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0",number:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0",office:"urn:oasis:names:tc:opendocument:xmlns:office:1.0",presentation:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0",style:"urn:oasis:names:tc:opendocument:xmlns:style:1.0",svg:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0",table:"urn:oasis:names:tc:opendocument:xmlns:table:1.0",text:"urn:oasis:names:tc:opendocument:xmlns:text:1.0",xforms:"http://www.w3.org/2002/xforms",
+xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},prefixMap:{},configns:"urn:oasis:names:tc:opendocument:xmlns:config:1.0",dbns:"urn:oasis:names:tc:opendocument:xmlns:database:1.0",dcns:"http://purl.org/dc/elements/1.1/",dr3dns:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0",drawns:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0",chartns:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0",fons:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",formns:"urn:oasis:names:tc:opendocument:xmlns:form:1.0",
+mathns:"http://www.w3.org/1998/Math/MathML",metans:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0",numberns:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0",officens:"urn:oasis:names:tc:opendocument:xmlns:office:1.0",presentationns:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0",stylens:"urn:oasis:names:tc:opendocument:xmlns:style:1.0",svgns:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0",tablens:"urn:oasis:names:tc:opendocument:xmlns:table:1.0",textns:"urn:oasis:names:tc:opendocument:xmlns:text:1.0",
+xformsns:"http://www.w3.org/2002/xforms",xlinkns:"http://www.w3.org/1999/xlink",xmlns:"http://www.w3.org/XML/1998/namespace"};(function(){var g=odf.Namespaces.namespaceMap,k=odf.Namespaces.prefixMap,c;for(c in g)g.hasOwnProperty(c)&&(k[g[c]]=c)})();odf.Namespaces.forEachPrefix=function(g){var k=odf.Namespaces.namespaceMap,c;for(c in k)k.hasOwnProperty(c)&&g(c,k[c])};
+odf.Namespaces.lookupNamespaceURI=function(g){var k=null;odf.Namespaces.namespaceMap.hasOwnProperty(g)&&(k=odf.Namespaces.namespaceMap[g]);return k};odf.Namespaces.lookupPrefix=function(g){var k=odf.Namespaces.prefixMap;return k.hasOwnProperty(g)?k[g]:null};odf.Namespaces.lookupNamespaceURI.lookupNamespaceURI=odf.Namespaces.lookupNamespaceURI;
+(function(){odf.OdfSchemaImpl=function(){var g=[["config:config-item","uncategorized"],["form:item","object"],["form:option","uncategorized"],["math:math","field"],["meta:user-defined","uncategorized"],["number:currency-symbol","uncategorized"],["number:embedded-text","uncategorized"],["number:text","uncategorized"],["presentation:date-time-decl","uncategorized"],["presentation:footer-decl","uncategorized"],["presentation:header-decl","uncategorized"],["svg:desc","text"],["svg:title","text"],["table:desc",
+"uncategorized"],["table:title","uncategorized"],["text:a","text"],["text:author-initials","field"],["text:author-name","field"],["text:bibliography-mark","field"],["text:bookmark-ref","field"],["text:chapter","field"],["text:character-count","field"],["text:conditional-text","field"],["text:creation-date","field"],["text:creation-time","field"],["text:creator","field"],["text:database-display","field"],["text:database-name","field"],["text:database-row-number","field"],["text:date","field"],["text:dde-connection",
+"field"],["text:description","field"],["text:editing-cycles","field"],["text:editing-duration","field"],["text:execute-macro","uncategorized"],["text:expression","uncategorized"],["text:file-name","field"],["text:h","text"],["text:hidden-paragraph","text"],["text:hidden-text","text"],["text:image-count","field"],["text:index-entry-span","uncategorized"],["text:index-title-template","uncategorized"],["text:initial-creator","field"],["text:keywords","field"],["text:linenumbering-separator","style"],
+["text:measure","uncategorized"],["text:meta","uncategorized"],["text:meta-field","uncategorized"],["text:modification-date","field"],["text:modification-time","field"],["text:note-citation","field"],["text:note-continuation-notice-backward","style"],["text:note-continuation-notice-forward","style"],["text:note-ref","field"],["text:object-count","field"],["text:p","text"],["text:page-continuation","uncategorized"],["text:page-count","field"],["text:page-number","field"],["text:page-variable-get",
+"field"],["text:page-variable-set","field"],["text:paragraph-count","field"],["text:placeholder","field"],["text:print-date","field"],["text:print-time","field"],["text:printed-by","field"],["text:reference-ref","field"],["text:ruby-base","text"],["text:ruby-text","text"],["text:script","text"],["text:sender-city","field"],["text:sender-company","field"],["text:sender-country","field"],["text:sender-email","field"],["text:sender-fax","field"],["text:sender-firstname","field"],["text:sender-initials",
+"field"],["text:sender-lastname","field"],["text:sender-phone-private","field"],["text:sender-phone-work","field"],["text:sender-position","field"],["text:sender-postal-code","field"],["text:sender-state-or-province","field"],["text:sender-street","field"],["text:sender-title","field"],["text:sequence","uncategorized"],["text:sequence-ref","uncategorized"],["text:sheet-name","uncategorized"],["text:span","text"],["text:subject","field"],["text:table-count","field"],["text:table-formula","deprecated"],
+["text:template-name","uncategorized"],["text:text-input","field"],["text:time","field"],["text:title","field"],["text:user-defined","field"],["text:user-field-get","field"],["text:user-field-input","field"],["text:variable-get","field"],["text:variable-input","field"],["text:variable-set","field"],["text:word-count","field"],["xforms:model","uncategorized"]],k={};this.isTextContainer=function(c,b){return"text"===k[c+":"+b]};this.isField=function(c,b){return"field"===k[c+":"+b]};this.getFields=function(){return g.filter(function(c){return"field"===
+c[1]}).map(function(c){return c[0]})};(function(){g.forEach(function(c){var b=c[1],f=c[0].split(":");c=f[0];var f=f[1],n=odf.Namespaces.lookupNamespaceURI(c);n?k[n+":"+f]=b:runtime.log("DEBUG: OdfSchema - unknown prefix '"+c+"'")})})()};odf.OdfSchema=new odf.OdfSchemaImpl})();
+odf.OdfUtilsImpl=function(){function g(a){return"image"===(a&&a.localName)&&a.namespaceURI===R}function k(a){return null!==a&&a.nodeType===Node.ELEMENT_NODE&&"frame"===a.localName&&a.namespaceURI===R&&"as-char"===a.getAttributeNS(J,"anchor-type")}function c(a){var d;(d="annotation"===(a&&a.localName)&&a.namespaceURI===odf.Namespaces.officens)||(d="div"===(a&&a.localName)&&"annotationWrapper"===a.className);return d}function b(a){return"a"===(a&&a.localName)&&a.namespaceURI===J}function f(a){var d=
+a&&a.localName;return("p"===d||"h"===d)&&a.namespaceURI===J}function n(a,d){for(a&&void 0!==d&&!f(a)&&a.childNodes.item(d)&&(a=a.childNodes.item(d));a&&!f(a);)a=a.parentNode;return a}function p(a,d){for(;a&&a!==d;){if(a.namespaceURI===odf.Namespaces.officens&&"annotation"===a.localName)return a;a=a.parentNode}return null}function r(a){return/^[ \t\r\n]+$/.test(a)}function q(a){if(null===a||a.nodeType!==Node.ELEMENT_NODE)return!1;var d=a.localName;return fa.isTextContainer(a.namespaceURI,d)||"span"===
+d&&"webodf-annotationHighlight"===a.className}function e(a){return null===a||a.nodeType!==Node.ELEMENT_NODE?!1:fa.isField(a.namespaceURI,a.localName)}function l(a){var d=a&&a.localName,b=!1;d&&(a=a.namespaceURI,a===J&&(b="s"===d||"tab"===d||"line-break"===d));return b}function a(a){return l(a)||e(a)||k(a)||c(a)}function d(a){var d=a&&a.localName,b=!1;d&&(a=a.namespaceURI,a===J&&(b="s"===d));return b}function m(a){return-1!==S.indexOf(a.namespaceURI)}function h(a){if(l(a)||e(a))return!1;if(q(a.parentNode)&&
+a.nodeType===Node.TEXT_NODE)return 0===a.textContent.length;for(a=a.firstChild;a;){if(m(a)||!h(a))return!1;a=a.nextSibling}return!0}function y(a){for(;null!==a.firstChild&&q(a);)a=a.firstChild;return a}function x(a){for(;null!==a.lastChild&&q(a);)a=a.lastChild;return a}function z(a){for(;!f(a)&&null===a.previousSibling;)a=a.parentNode;return f(a)?null:x(a.previousSibling)}function w(a){for(;!f(a)&&null===a.nextSibling;)a=a.parentNode;return f(a)?null:y(a.nextSibling)}function v(b){for(var c=!1;b;)if(b.nodeType===
+Node.TEXT_NODE)if(0===b.length)b=z(b);else return!r(b.data.substr(b.length-1,1));else a(b)?(c=!1===d(b),b=null):b=z(b);return c}function u(d){var b=!1,c;for(d=d&&y(d);d;){c=d.nodeType===Node.TEXT_NODE?d.length:0;if(0<c&&!r(d.data)){b=!0;break}if(a(d)){b=!0;break}d=w(d)}return b}function t(a,d){return r(a.data.substr(d))?!u(w(a)):!1}function A(d,b){var c=d.data,m;if(!r(c[b])||a(d.parentNode))return!1;0<b?r(c[b-1])||(m=!0):v(z(d))&&(m=!0);return!0===m?t(d,b)?!1:!0:!1}function I(a){return(a=/(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px)|(%))/.exec(a))?
+{value:parseFloat(a[1]),unit:a[3]}:null}function K(a){return(a=I(a))&&(0>a.value||"%"===a.unit)?null:a}function L(a){return(a=I(a))&&"%"!==a.unit?null:a}function E(a){switch(a.namespaceURI){case odf.Namespaces.drawns:case odf.Namespaces.svgns:case odf.Namespaces.dr3dns:return!1;case odf.Namespaces.textns:switch(a.localName){case "note-body":case "ruby-text":return!1}break;case odf.Namespaces.officens:switch(a.localName){case "annotation":case "binary-data":case "event-listeners":return!1}break;default:switch(a.localName){case "cursor":case "editinfo":return!1}}return!0}
+function N(a){return Boolean(n(a)&&(!r(a.textContent)||A(a,0)))}function O(a,d){for(;0<d.length&&!aa.rangeContainsNode(a,d[0]);)d.shift();for(;0<d.length&&!aa.rangeContainsNode(a,d[d.length-1]);)d.pop()}function D(d,b,m){var h;h=aa.getNodesInRange(d,function(d){var b=NodeFilter.FILTER_REJECT;if(l(d.parentNode)||e(d.parentNode)||c(d))b=NodeFilter.FILTER_REJECT;else if(d.nodeType===Node.TEXT_NODE){if(m||N(d))b=NodeFilter.FILTER_ACCEPT}else if(a(d))b=NodeFilter.FILTER_ACCEPT;else if(E(d)||q(d))b=NodeFilter.FILTER_SKIP;
+return b},NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);b||O(d,h);return h}function V(a,d,b){for(;a;){if(b(a)){d[0]!==a&&d.unshift(a);break}if(c(a))break;a=a.parentNode}}function W(a,d){var b=a;if(d<b.childNodes.length-1)b=b.childNodes[d+1];else{for(;!b.nextSibling;)b=b.parentNode;b=b.nextSibling}for(;b.firstChild;)b=b.firstChild;return b}var J=odf.Namespaces.textns,R=odf.Namespaces.drawns,P=odf.Namespaces.xlinkns,aa=core.DomUtils,S=[odf.Namespaces.dbns,odf.Namespaces.dcns,odf.Namespaces.dr3dns,odf.Namespaces.drawns,
+odf.Namespaces.chartns,odf.Namespaces.formns,odf.Namespaces.numberns,odf.Namespaces.officens,odf.Namespaces.presentationns,odf.Namespaces.stylens,odf.Namespaces.svgns,odf.Namespaces.tablens,odf.Namespaces.textns],fa=odf.OdfSchema;this.isImage=g;this.isCharacterFrame=k;this.isInlineRoot=c;this.isTextSpan=function(a){return"span"===(a&&a.localName)&&a.namespaceURI===J};this.isHyperlink=b;this.getHyperlinkTarget=function(a){return a.getAttributeNS(P,"href")||""};this.isParagraph=f;this.getParagraphElement=
+n;this.getParentAnnotation=p;this.isWithinAnnotation=function(a,d){return Boolean(p(a,d))};this.getAnnotationCreator=function(a){return a.getElementsByTagNameNS(odf.Namespaces.dcns,"creator")[0].textContent};this.isListItem=function(a){return"list-item"===(a&&a.localName)&&a.namespaceURI===J};this.isLineBreak=function(a){return"line-break"===(a&&a.localName)&&a.namespaceURI===J};this.isODFWhitespace=r;this.isGroupingElement=q;this.isFieldElement=e;this.isCharacterElement=l;this.isAnchoredAsCharacterElement=
+a;this.isSpaceElement=d;this.isODFNode=m;this.hasNoODFContent=h;this.firstChild=y;this.lastChild=x;this.previousNode=z;this.nextNode=w;this.scanLeftForNonSpace=v;this.lookLeftForCharacter=function(d){var b,c=b=0;d.nodeType===Node.TEXT_NODE&&(c=d.length);0<c?(b=d.data,b=r(b.substr(c-1,1))?1===c?v(z(d))?2:0:r(b.substr(c-2,1))?0:2:1):a(d)&&(b=1);return b};this.lookRightForCharacter=function(d){var b=!1,c=0;d&&d.nodeType===Node.TEXT_NODE&&(c=d.length);0<c?b=!r(d.data.substr(0,1)):a(d)&&(b=!0);return b};
+this.scanLeftForAnyCharacter=function(d){var b=!1,c;for(d=d&&x(d);d;){c=d.nodeType===Node.TEXT_NODE?d.length:0;if(0<c&&!r(d.data)){b=!0;break}if(a(d)){b=!0;break}d=z(d)}return b};this.scanRightForAnyCharacter=u;this.isTrailingWhitespace=t;this.isSignificantWhitespace=A;this.isDowngradableSpaceElement=function(a){return d(a)?v(z(a))&&u(w(a)):!1};this.parseLength=I;this.parseNonNegativeLength=K;this.parseFoFontSize=function(a){var d;d=(d=I(a))&&(0>=d.value||"%"===d.unit)?null:d;return d||L(a)};this.parseFoLineHeight=
+function(a){return K(a)||L(a)};this.isTextContentContainingNode=E;this.getTextNodes=function(a,d){var b;b=aa.getNodesInRange(a,function(a){var d=NodeFilter.FILTER_REJECT;a.nodeType===Node.TEXT_NODE?N(a)&&(d=NodeFilter.FILTER_ACCEPT):E(a)&&(d=NodeFilter.FILTER_SKIP);return d},NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);d||O(a,b);return b};this.getTextElements=D;this.getParagraphElements=function(a){var d;d=aa.getNodesInRange(a,function(a){var d=NodeFilter.FILTER_REJECT;if(f(a))d=NodeFilter.FILTER_ACCEPT;
+else if(E(a)||q(a))d=NodeFilter.FILTER_SKIP;return d},NodeFilter.SHOW_ELEMENT);V(a.startContainer,d,f);return d};this.getImageElements=function(a){var d;d=aa.getNodesInRange(a,function(a){var d=NodeFilter.FILTER_SKIP;g(a)&&(d=NodeFilter.FILTER_ACCEPT);return d},NodeFilter.SHOW_ELEMENT);V(a.startContainer,d,g);return d};this.getHyperlinkElements=function(a){var d=[],c=a.cloneRange();a.collapsed&&a.endContainer.nodeType===Node.ELEMENT_NODE&&(a=W(a.endContainer,a.endOffset),a.nodeType===Node.TEXT_NODE&&
+c.setEnd(a,1));D(c,!0,!1).forEach(function(a){for(a=a.parentNode;!f(a);){if(b(a)&&-1===d.indexOf(a)){d.push(a);break}a=a.parentNode}});c.detach();return d};this.getNormalizedFontFamilyName=function(a){/^(["'])(?:.|[\n\r])*?\1$/.test(a)||(a=a.replace(/^[ \t\r\n\f]*((?:.|[\n\r])*?)[ \t\r\n\f]*$/,"$1"),/[ \t\r\n\f]/.test(a)&&(a="'"+a.replace(/[ \t\r\n\f]+/g," ")+"'"));return a}};odf.OdfUtils=new odf.OdfUtilsImpl;
+gui.OdfTextBodyNodeFilter=function(){var g=odf.OdfUtils,k=Node.TEXT_NODE,c=NodeFilter.FILTER_REJECT,b=NodeFilter.FILTER_ACCEPT,f=odf.Namespaces.textns;this.acceptNode=function(n){if(n.nodeType===k){if(!g.isGroupingElement(n.parentNode))return c}else if(n.namespaceURI===f&&"tracked-changes"===n.localName)return c;return b}};xmldom.LSSerializerFilter=function(){};xmldom.LSSerializerFilter.prototype.acceptNode=function(g){};
+odf.OdfNodeFilter=function(){this.acceptNode=function(g){return"http://www.w3.org/1999/xhtml"===g.namespaceURI?NodeFilter.FILTER_SKIP:g.namespaceURI&&g.namespaceURI.match(/^urn:webodf:/)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}};xmldom.XPathIterator=function(){};xmldom.XPathIterator.prototype.next=function(){};xmldom.XPathIterator.prototype.reset=function(){};
+function createXPathSingleton(){function g(b,a,d){return-1!==b&&(b<a||-1===a)&&(b<d||-1===d)}function k(b){for(var a=[],d=0,c=b.length,h;d<c;){var f=b,n=c,k=a,r="",p=[],q=f.indexOf("[",d),t=f.indexOf("/",d),A=f.indexOf("=",d);g(t,q,A)?(r=f.substring(d,t),d=t+1):g(q,t,A)?(r=f.substring(d,q),d=e(f,q,p)):g(A,t,q)?(r=f.substring(d,A),d=A):(r=f.substring(d,n),d=n);k.push({location:r,predicates:p});if(d<c&&"="===b[d]){h=b.substring(d+1,c);if(2<h.length&&("'"===h[0]||'"'===h[0]))h=h.slice(1,h.length-1);
+else try{h=parseInt(h,10)}catch(I){}d=c}}return{steps:a,value:h}}function c(){var b=null,a=!1;this.setNode=function(a){b=a};this.reset=function(){a=!1};this.next=function(){var d=a?null:b;a=!0;return d}}function b(b,a,d){this.reset=function(){b.reset()};this.next=function(){for(var c=b.next();c;){c.nodeType===Node.ELEMENT_NODE&&(c=c.getAttributeNodeNS(a,d));if(c)break;c=b.next()}return c}}function f(b,a){var d=b.next(),c=null;this.reset=function(){b.reset();d=b.next();c=null};this.next=function(){for(;d;){if(c)if(a&&
+c.firstChild)c=c.firstChild;else{for(;!c.nextSibling&&c!==d;)c=c.parentNode;c===d?d=b.next():c=c.nextSibling}else{do(c=d.firstChild)||(d=b.next());while(d&&!c)}if(c&&c.nodeType===Node.ELEMENT_NODE)return c}return null}}function n(b,a){this.reset=function(){b.reset()};this.next=function(){for(var d=b.next();d&&!a(d);)d=b.next();return d}}function p(b,a,d){a=a.split(":",2);var c=d(a[0]),h=a[1];return new n(b,function(a){return a.localName===h&&a.namespaceURI===c})}function r(b,a,d){var m=new c,h=q(m,
+a,d),e=a.value;return void 0===e?new n(b,function(a){m.setNode(a);h.reset();return null!==h.next()}):new n(b,function(a){m.setNode(a);h.reset();return(a=h.next())?a.nodeValue===e:!1})}var q,e;e=function(b,a,d){for(var c=a,h=b.length,e=0;c<h;)"]"===b[c]?(--e,0>=e&&d.push(k(b.substring(a,c)))):"["===b[c]&&(0>=e&&(a=c+1),e+=1),c+=1;return c};q=function(c,a,d){var m,h,e,n;for(m=0;m<a.steps.length;m+=1){e=a.steps[m];h=e.location;if(""===h)c=new f(c,!1);else if("@"===h[0]){h=h.substr(1).split(":",2);n=
+d(h[0]);if(!n)throw"No namespace associated with the prefix "+h[0];c=new b(c,n,h[1])}else"."!==h&&(c=new f(c,!1),-1!==h.indexOf(":")&&(c=p(c,h,d)));for(h=0;h<e.predicates.length;h+=1)n=e.predicates[h],c=r(c,n,d)}return c};return{getODFElementsWithXPath:function(b,a,d){var m=b.ownerDocument,h=[],e=null;if(m&&"function"===typeof m.evaluate)for(d=m.evaluate(a,b,d,XPathResult.UNORDERED_NODE_ITERATOR_TYPE,null),e=d.iterateNext();null!==e;)e.nodeType===Node.ELEMENT_NODE&&h.push(e),e=d.iterateNext();else{h=
+new c;h.setNode(b);b=k(a);h=q(h,b,d);b=[];for(d=h.next();d;)b.push(d),d=h.next();h=b}return h}}}xmldom.XPath=createXPathSingleton();
+odf.StyleInfo=function(){function g(a,d){var b,c,h,m,e,l=0;if(b=K[a.localName])if(h=b[a.namespaceURI])l=h.length;for(b=0;b<l;b+=1)c=h[b],m=c.ns,e=c.localname,(c=a.getAttributeNS(m,e))&&a.setAttributeNS(m,A[m]+e,d+c);for(h=a.firstElementChild;h;)g(h,d),h=h.nextElementSibling}function k(a,d){var b,c,h,m,e,l=0;if(b=K[a.localName])if(h=b[a.namespaceURI])l=h.length;for(b=0;b<l;b+=1)if(c=h[b],m=c.ns,e=c.localname,c=a.getAttributeNS(m,e))c=c.replace(d,""),a.setAttributeNS(m,A[m]+e,c);for(h=a.firstElementChild;h;)k(h,
+d),h=h.nextElementSibling}function c(a,d){var b,c,h,m,e,l=0;if(b=K[a.localName])if(h=b[a.namespaceURI])l=h.length;for(b=0;b<l;b+=1)if(m=h[b],c=m.ns,e=m.localname,c=a.getAttributeNS(c,e))d=d||{},m=m.keyname,d.hasOwnProperty(m)?d[m][c]=1:(e={},e[c]=1,d[m]=e);return d}function b(a,d){var h,m;c(a,d);for(h=a.firstChild;h;)h.nodeType===Node.ELEMENT_NODE&&(m=h,b(m,d)),h=h.nextSibling}function f(a,d,b){this.key=a;this.name=d;this.family=b;this.requires={}}function n(a,d,b){var c=a+'"'+d,h=b[c];h||(h=b[c]=
+new f(c,a,d));return h}function p(a,d,b){var c,h,m,e,l,f=0;c=a.getAttributeNS(v,"name");e=a.getAttributeNS(v,"family");c&&e&&(d=n(c,e,b));if(d){if(c=K[a.localName])if(m=c[a.namespaceURI])f=m.length;for(c=0;c<f;c+=1)if(e=m[c],h=e.ns,l=e.localname,h=a.getAttributeNS(h,l))e=e.keyname,e=n(h,e,b),d.requires[e.key]=e}for(a=a.firstElementChild;a;)p(a,d,b),a=a.nextElementSibling;return b}function r(a,d){var b=d[a.family];b||(b=d[a.family]={});b[a.name]=1;Object.keys(a.requires).forEach(function(b){r(a.requires[b],
+d)})}function q(a,d){var b=p(a,null,{});Object.keys(b).forEach(function(a){a=b[a];var c=d[a.family];c&&c.hasOwnProperty(a.name)&&r(a,d)})}function e(a,d){function b(d){(d=m.getAttributeNS(v,d))&&(a[d]=!0)}var c=["font-name","font-name-asian","font-name-complex"],h,m;for(h=d&&d.firstElementChild;h;)m=h,c.forEach(b),e(a,m),h=h.nextElementSibling}function l(a,d){function b(a){var c=m.getAttributeNS(v,a);c&&d.hasOwnProperty(c)&&m.setAttributeNS(v,"style:"+a,d[c])}var c=["font-name","font-name-asian",
+"font-name-complex"],h,m;for(h=a&&a.firstElementChild;h;)m=h,c.forEach(b),l(m,d),h=h.nextElementSibling}var a=odf.Namespaces.chartns,d=odf.Namespaces.dbns,m=odf.Namespaces.dr3dns,h=odf.Namespaces.drawns,y=odf.Namespaces.formns,x=odf.Namespaces.numberns,z=odf.Namespaces.officens,w=odf.Namespaces.presentationns,v=odf.Namespaces.stylens,u=odf.Namespaces.tablens,t=odf.Namespaces.textns,A={"urn:oasis:names:tc:opendocument:xmlns:chart:1.0":"chart:","urn:oasis:names:tc:opendocument:xmlns:database:1.0":"db:",
+"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0":"dr3d:","urn:oasis:names:tc:opendocument:xmlns:drawing:1.0":"draw:","urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0":"fo:","urn:oasis:names:tc:opendocument:xmlns:form:1.0":"form:","urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":"number:","urn:oasis:names:tc:opendocument:xmlns:office:1.0":"office:","urn:oasis:names:tc:opendocument:xmlns:presentation:1.0":"presentation:","urn:oasis:names:tc:opendocument:xmlns:style:1.0":"style:","urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0":"svg:",
+"urn:oasis:names:tc:opendocument:xmlns:table:1.0":"table:","urn:oasis:names:tc:opendocument:xmlns:text:1.0":"chart:","http://www.w3.org/XML/1998/namespace":"xml:"},I={text:[{ens:v,en:"tab-stop",ans:v,a:"leader-text-style"},{ens:v,en:"drop-cap",ans:v,a:"style-name"},{ens:t,en:"notes-configuration",ans:t,a:"citation-body-style-name"},{ens:t,en:"notes-configuration",ans:t,a:"citation-style-name"},{ens:t,en:"a",ans:t,a:"style-name"},{ens:t,en:"alphabetical-index",ans:t,a:"style-name"},{ens:t,en:"linenumbering-configuration",
+ans:t,a:"style-name"},{ens:t,en:"list-level-style-number",ans:t,a:"style-name"},{ens:t,en:"ruby-text",ans:t,a:"style-name"},{ens:t,en:"span",ans:t,a:"style-name"},{ens:t,en:"a",ans:t,a:"visited-style-name"},{ens:v,en:"text-properties",ans:v,a:"text-line-through-text-style"},{ens:t,en:"alphabetical-index-source",ans:t,a:"main-entry-style-name"},{ens:t,en:"index-entry-bibliography",ans:t,a:"style-name"},{ens:t,en:"index-entry-chapter",ans:t,a:"style-name"},{ens:t,en:"index-entry-link-end",ans:t,a:"style-name"},
+{ens:t,en:"index-entry-link-start",ans:t,a:"style-name"},{ens:t,en:"index-entry-page-number",ans:t,a:"style-name"},{ens:t,en:"index-entry-span",ans:t,a:"style-name"},{ens:t,en:"index-entry-tab-stop",ans:t,a:"style-name"},{ens:t,en:"index-entry-text",ans:t,a:"style-name"},{ens:t,en:"index-title-template",ans:t,a:"style-name"},{ens:t,en:"list-level-style-bullet",ans:t,a:"style-name"},{ens:t,en:"outline-level-style",ans:t,a:"style-name"}],paragraph:[{ens:h,en:"caption",ans:h,a:"text-style-name"},{ens:h,
+en:"circle",ans:h,a:"text-style-name"},{ens:h,en:"connector",ans:h,a:"text-style-name"},{ens:h,en:"control",ans:h,a:"text-style-name"},{ens:h,en:"custom-shape",ans:h,a:"text-style-name"},{ens:h,en:"ellipse",ans:h,a:"text-style-name"},{ens:h,en:"frame",ans:h,a:"text-style-name"},{ens:h,en:"line",ans:h,a:"text-style-name"},{ens:h,en:"measure",ans:h,a:"text-style-name"},{ens:h,en:"path",ans:h,a:"text-style-name"},{ens:h,en:"polygon",ans:h,a:"text-style-name"},{ens:h,en:"polyline",ans:h,a:"text-style-name"},
+{ens:h,en:"rect",ans:h,a:"text-style-name"},{ens:h,en:"regular-polygon",ans:h,a:"text-style-name"},{ens:z,en:"annotation",ans:h,a:"text-style-name"},{ens:y,en:"column",ans:y,a:"text-style-name"},{ens:v,en:"style",ans:v,a:"next-style-name"},{ens:u,en:"body",ans:u,a:"paragraph-style-name"},{ens:u,en:"even-columns",ans:u,a:"paragraph-style-name"},{ens:u,en:"even-rows",ans:u,a:"paragraph-style-name"},{ens:u,en:"first-column",ans:u,a:"paragraph-style-name"},{ens:u,en:"first-row",ans:u,a:"paragraph-style-name"},
+{ens:u,en:"last-column",ans:u,a:"paragraph-style-name"},{ens:u,en:"last-row",ans:u,a:"paragraph-style-name"},{ens:u,en:"odd-columns",ans:u,a:"paragraph-style-name"},{ens:u,en:"odd-rows",ans:u,a:"paragraph-style-name"},{ens:t,en:"notes-configuration",ans:t,a:"default-style-name"},{ens:t,en:"alphabetical-index-entry-template",ans:t,a:"style-name"},{ens:t,en:"bibliography-entry-template",ans:t,a:"style-name"},{ens:t,en:"h",ans:t,a:"style-name"},{ens:t,en:"illustration-index-entry-template",ans:t,a:"style-name"},
+{ens:t,en:"index-source-style",ans:t,a:"style-name"},{ens:t,en:"object-index-entry-template",ans:t,a:"style-name"},{ens:t,en:"p",ans:t,a:"style-name"},{ens:t,en:"table-index-entry-template",ans:t,a:"style-name"},{ens:t,en:"table-of-content-entry-template",ans:t,a:"style-name"},{ens:t,en:"table-index-entry-template",ans:t,a:"style-name"},{ens:t,en:"user-index-entry-template",ans:t,a:"style-name"},{ens:v,en:"page-layout-properties",ans:v,a:"register-truth-ref-style-name"}],chart:[{ens:a,en:"axis",ans:a,
+a:"style-name"},{ens:a,en:"chart",ans:a,a:"style-name"},{ens:a,en:"data-label",ans:a,a:"style-name"},{ens:a,en:"data-point",ans:a,a:"style-name"},{ens:a,en:"equation",ans:a,a:"style-name"},{ens:a,en:"error-indicator",ans:a,a:"style-name"},{ens:a,en:"floor",ans:a,a:"style-name"},{ens:a,en:"footer",ans:a,a:"style-name"},{ens:a,en:"grid",ans:a,a:"style-name"},{ens:a,en:"legend",ans:a,a:"style-name"},{ens:a,en:"mean-value",ans:a,a:"style-name"},{ens:a,en:"plot-area",ans:a,a:"style-name"},{ens:a,en:"regression-curve",
+ans:a,a:"style-name"},{ens:a,en:"series",ans:a,a:"style-name"},{ens:a,en:"stock-gain-marker",ans:a,a:"style-name"},{ens:a,en:"stock-loss-marker",ans:a,a:"style-name"},{ens:a,en:"stock-range-line",ans:a,a:"style-name"},{ens:a,en:"subtitle",ans:a,a:"style-name"},{ens:a,en:"title",ans:a,a:"style-name"},{ens:a,en:"wall",ans:a,a:"style-name"}],section:[{ens:t,en:"alphabetical-index",ans:t,a:"style-name"},{ens:t,en:"bibliography",ans:t,a:"style-name"},{ens:t,en:"illustration-index",ans:t,a:"style-name"},
+{ens:t,en:"index-title",ans:t,a:"style-name"},{ens:t,en:"object-index",ans:t,a:"style-name"},{ens:t,en:"section",ans:t,a:"style-name"},{ens:t,en:"table-of-content",ans:t,a:"style-name"},{ens:t,en:"table-index",ans:t,a:"style-name"},{ens:t,en:"user-index",ans:t,a:"style-name"}],ruby:[{ens:t,en:"ruby",ans:t,a:"style-name"}],table:[{ens:d,en:"query",ans:d,a:"style-name"},{ens:d,en:"table-representation",ans:d,a:"style-name"},{ens:u,en:"background",ans:u,a:"style-name"},{ens:u,en:"table",ans:u,a:"style-name"}],
+"table-column":[{ens:d,en:"column",ans:d,a:"style-name"},{ens:u,en:"table-column",ans:u,a:"style-name"}],"table-row":[{ens:d,en:"query",ans:d,a:"default-row-style-name"},{ens:d,en:"table-representation",ans:d,a:"default-row-style-name"},{ens:u,en:"table-row",ans:u,a:"style-name"}],"table-cell":[{ens:d,en:"column",ans:d,a:"default-cell-style-name"},{ens:u,en:"table-column",ans:u,a:"default-cell-style-name"},{ens:u,en:"table-row",ans:u,a:"default-cell-style-name"},{ens:u,en:"body",ans:u,a:"style-name"},
+{ens:u,en:"covered-table-cell",ans:u,a:"style-name"},{ens:u,en:"even-columns",ans:u,a:"style-name"},{ens:u,en:"covered-table-cell",ans:u,a:"style-name"},{ens:u,en:"even-columns",ans:u,a:"style-name"},{ens:u,en:"even-rows",ans:u,a:"style-name"},{ens:u,en:"first-column",ans:u,a:"style-name"},{ens:u,en:"first-row",ans:u,a:"style-name"},{ens:u,en:"last-column",ans:u,a:"style-name"},{ens:u,en:"last-row",ans:u,a:"style-name"},{ens:u,en:"odd-columns",ans:u,a:"style-name"},{ens:u,en:"odd-rows",ans:u,a:"style-name"},
+{ens:u,en:"table-cell",ans:u,a:"style-name"}],graphic:[{ens:m,en:"cube",ans:h,a:"style-name"},{ens:m,en:"extrude",ans:h,a:"style-name"},{ens:m,en:"rotate",ans:h,a:"style-name"},{ens:m,en:"scene",ans:h,a:"style-name"},{ens:m,en:"sphere",ans:h,a:"style-name"},{ens:h,en:"caption",ans:h,a:"style-name"},{ens:h,en:"circle",ans:h,a:"style-name"},{ens:h,en:"connector",ans:h,a:"style-name"},{ens:h,en:"control",ans:h,a:"style-name"},{ens:h,en:"custom-shape",ans:h,a:"style-name"},{ens:h,en:"ellipse",ans:h,a:"style-name"},
+{ens:h,en:"frame",ans:h,a:"style-name"},{ens:h,en:"g",ans:h,a:"style-name"},{ens:h,en:"line",ans:h,a:"style-name"},{ens:h,en:"measure",ans:h,a:"style-name"},{ens:h,en:"page-thumbnail",ans:h,a:"style-name"},{ens:h,en:"path",ans:h,a:"style-name"},{ens:h,en:"polygon",ans:h,a:"style-name"},{ens:h,en:"polyline",ans:h,a:"style-name"},{ens:h,en:"rect",ans:h,a:"style-name"},{ens:h,en:"regular-polygon",ans:h,a:"style-name"},{ens:z,en:"annotation",ans:h,a:"style-name"}],presentation:[{ens:m,en:"cube",ans:w,
+a:"style-name"},{ens:m,en:"extrude",ans:w,a:"style-name"},{ens:m,en:"rotate",ans:w,a:"style-name"},{ens:m,en:"scene",ans:w,a:"style-name"},{ens:m,en:"sphere",ans:w,a:"style-name"},{ens:h,en:"caption",ans:w,a:"style-name"},{ens:h,en:"circle",ans:w,a:"style-name"},{ens:h,en:"connector",ans:w,a:"style-name"},{ens:h,en:"control",ans:w,a:"style-name"},{ens:h,en:"custom-shape",ans:w,a:"style-name"},{ens:h,en:"ellipse",ans:w,a:"style-name"},{ens:h,en:"frame",ans:w,a:"style-name"},{ens:h,en:"g",ans:w,a:"style-name"},
+{ens:h,en:"line",ans:w,a:"style-name"},{ens:h,en:"measure",ans:w,a:"style-name"},{ens:h,en:"page-thumbnail",ans:w,a:"style-name"},{ens:h,en:"path",ans:w,a:"style-name"},{ens:h,en:"polygon",ans:w,a:"style-name"},{ens:h,en:"polyline",ans:w,a:"style-name"},{ens:h,en:"rect",ans:w,a:"style-name"},{ens:h,en:"regular-polygon",ans:w,a:"style-name"},{ens:z,en:"annotation",ans:w,a:"style-name"}],"drawing-page":[{ens:h,en:"page",ans:h,a:"style-name"},{ens:w,en:"notes",ans:h,a:"style-name"},{ens:v,en:"handout-master",
+ans:h,a:"style-name"},{ens:v,en:"master-page",ans:h,a:"style-name"}],"list-style":[{ens:t,en:"list",ans:t,a:"style-name"},{ens:t,en:"numbered-paragraph",ans:t,a:"style-name"},{ens:t,en:"list-item",ans:t,a:"style-override"},{ens:v,en:"style",ans:v,a:"list-style-name"}],data:[{ens:v,en:"style",ans:v,a:"data-style-name"},{ens:v,en:"style",ans:v,a:"percentage-data-style-name"},{ens:w,en:"date-time-decl",ans:v,a:"data-style-name"},{ens:t,en:"creation-date",ans:v,a:"data-style-name"},{ens:t,en:"creation-time",
+ans:v,a:"data-style-name"},{ens:t,en:"database-display",ans:v,a:"data-style-name"},{ens:t,en:"date",ans:v,a:"data-style-name"},{ens:t,en:"editing-duration",ans:v,a:"data-style-name"},{ens:t,en:"expression",ans:v,a:"data-style-name"},{ens:t,en:"meta-field",ans:v,a:"data-style-name"},{ens:t,en:"modification-date",ans:v,a:"data-style-name"},{ens:t,en:"modification-time",ans:v,a:"data-style-name"},{ens:t,en:"print-date",ans:v,a:"data-style-name"},{ens:t,en:"print-time",ans:v,a:"data-style-name"},{ens:t,
+en:"table-formula",ans:v,a:"data-style-name"},{ens:t,en:"time",ans:v,a:"data-style-name"},{ens:t,en:"user-defined",ans:v,a:"data-style-name"},{ens:t,en:"user-field-get",ans:v,a:"data-style-name"},{ens:t,en:"user-field-input",ans:v,a:"data-style-name"},{ens:t,en:"variable-get",ans:v,a:"data-style-name"},{ens:t,en:"variable-input",ans:v,a:"data-style-name"},{ens:t,en:"variable-set",ans:v,a:"data-style-name"}],"page-layout":[{ens:w,en:"notes",ans:v,a:"page-layout-name"},{ens:v,en:"handout-master",ans:v,
+a:"page-layout-name"},{ens:v,en:"master-page",ans:v,a:"page-layout-name"}]},K,L=xmldom.XPath;this.collectUsedFontFaces=e;this.changeFontFaceNames=l;this.UsedStyleList=function(a,d){var c={};this.uses=function(a){var d=a.localName,b=a.getAttributeNS(h,"name")||a.getAttributeNS(v,"name");a="style"===d?a.getAttributeNS(v,"family"):a.namespaceURI===x?"data":d;return(a=c[a])?0<a[b]:!1};b(a,c);d&&q(d,c)};this.getStyleName=function(a,d){var b,c,h=K[d.localName];if(h&&(h=h[d.namespaceURI]))for(c=0;c<h.length;c+=
+1)if(h[c].keyname===a&&(h=h[c],d.hasAttributeNS(h.ns,h.localname))){b=d.getAttributeNS(h.ns,h.localname);break}return b};this.hasDerivedStyles=function(a,d,b){var c=b.getAttributeNS(v,"name");b=b.getAttributeNS(v,"family");return L.getODFElementsWithXPath(a,'//style:*[@style:parent-style-name="'+c+'"][@style:family="'+b+'"]',d).length?!0:!1};this.prefixStyleNames=function(a,d,b){var c;if(a){for(c=a.firstChild;c;){if(c.nodeType===Node.ELEMENT_NODE){var m=c,e=d,l=m.getAttributeNS(h,"name"),f=void 0;
+l?f=h:(l=m.getAttributeNS(v,"name"))&&(f=v);f&&m.setAttributeNS(f,A[f]+"name",e+l)}c=c.nextSibling}g(a,d);b&&g(b,d)}};this.removePrefixFromStyleNames=function(a,d,b){var c=new RegExp("^"+d);if(a){for(d=a.firstChild;d;){if(d.nodeType===Node.ELEMENT_NODE){var m=d,e=c,l=m.getAttributeNS(h,"name"),f=void 0;l?f=h:(l=m.getAttributeNS(v,"name"))&&(f=v);f&&(l=l.replace(e,""),m.setAttributeNS(f,A[f]+"name",l))}d=d.nextSibling}k(a,c);b&&k(b,c)}};this.determineStylesForNode=c;K=function(){var a,d,b,c,h,m={},
+e,l,f,n;for(b in I)if(I.hasOwnProperty(b))for(c=I[b],d=c.length,a=0;a<d;a+=1)h=c[a],f=h.en,n=h.ens,m.hasOwnProperty(f)?e=m[f]:m[f]=e={},e.hasOwnProperty(n)?l=e[n]:e[n]=l=[],l.push({ns:h.ans,localname:h.a,keyname:b});return m}()};"function"!==typeof Object.create&&(Object.create=function(g){var k=function(){};k.prototype=g;return new k});
+xmldom.LSSerializer=function(){function g(b){var c=b||{},g=function(b){var a={},d;for(d in b)b.hasOwnProperty(d)&&(a[b[d]]=d);return a}(b),k=[c],q=[g],e=0;this.push=function(){e+=1;c=k[e]=Object.create(c);g=q[e]=Object.create(g)};this.pop=function(){k.pop();q.pop();--e;c=k[e];g=q[e]};this.getLocalNamespaceDefinitions=function(){return g};this.getQName=function(b){var a=b.namespaceURI,d=0,m;if(!a)return b.localName;if(m=g[a])return m+":"+b.localName;do{m||!b.prefix?(m="ns"+d,d+=1):m=b.prefix;if(c[m]===
+a)break;if(!c[m]){c[m]=a;g[a]=m;break}m=null}while(null===m);return m+":"+b.localName}}function k(b){return b.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;")}function c(f,n){var g="",r=b.filter?b.filter.acceptNode(n):NodeFilter.FILTER_ACCEPT,q;if(r===NodeFilter.FILTER_ACCEPT&&n.nodeType===Node.ELEMENT_NODE){f.push();q=f.getQName(n);var e,l=n.attributes,a,d,m,h="",y;e="<"+q;a=l.length;for(d=0;d<a;d+=1)m=l.item(d),"http://www.w3.org/2000/xmlns/"!==
+m.namespaceURI&&(y=b.filter?b.filter.acceptNode(m):NodeFilter.FILTER_ACCEPT,y===NodeFilter.FILTER_ACCEPT&&(y=f.getQName(m),m="string"===typeof m.value?k(m.value):m.value,h+=" "+(y+'="'+m+'"')));a=f.getLocalNamespaceDefinitions();for(d in a)a.hasOwnProperty(d)&&((l=a[d])?"xmlns"!==l&&(e+=" xmlns:"+a[d]+'="'+d+'"'):e+=' xmlns="'+d+'"');g+=e+(h+">")}if(r===NodeFilter.FILTER_ACCEPT||r===NodeFilter.FILTER_SKIP){for(r=n.firstChild;r;)g+=c(f,r),r=r.nextSibling;n.nodeValue&&(g+=k(n.nodeValue))}q&&(g+="</"+
+q+">",f.pop());return g}var b=this;this.filter=null;this.writeToString=function(b,n){if(!b)return"";var k=new g(n);return c(k,b)}};
+(function(){function g(b){var a,d=r.length;for(a=0;a<d;a+=1)if("urn:oasis:names:tc:opendocument:xmlns:office:1.0"===b.namespaceURI&&b.localName===r[a])return a;return-1}function k(b,a){var d=new f.UsedStyleList(b,a),c=new odf.OdfNodeFilter;this.acceptNode=function(b){var e=c.acceptNode(b);e===NodeFilter.FILTER_ACCEPT&&b.parentNode===a&&b.nodeType===Node.ELEMENT_NODE&&(e=d.uses(b)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT);return e}}function c(b,a){var d=new k(b,a);this.acceptNode=function(a){var b=
+d.acceptNode(a);b!==NodeFilter.FILTER_ACCEPT||!a.parentNode||a.parentNode.namespaceURI!==odf.Namespaces.textns||"s"!==a.parentNode.localName&&"tab"!==a.parentNode.localName||(b=NodeFilter.FILTER_REJECT);return b}}function b(b,a){if(a){var d=g(a),c,h=b.firstChild;if(-1!==d){for(;h;){c=g(h);if(-1!==c&&c>d)break;h=h.nextSibling}b.insertBefore(a,h)}}}var f=new odf.StyleInfo,n=core.DomUtils,p=odf.Namespaces.stylens,r="meta settings scripts font-face-decls styles automatic-styles master-styles body".split(" "),
+q=Date.now()+"_webodf_",e=new core.Base64;odf.ODFElement=function(){};odf.ODFDocumentElement=function(){};odf.ODFDocumentElement.prototype=new odf.ODFElement;odf.ODFDocumentElement.prototype.constructor=odf.ODFDocumentElement;odf.ODFDocumentElement.prototype.fontFaceDecls=null;odf.ODFDocumentElement.prototype.manifest=null;odf.ODFDocumentElement.prototype.settings=null;odf.ODFDocumentElement.namespaceURI="urn:oasis:names:tc:opendocument:xmlns:office:1.0";odf.ODFDocumentElement.localName="document";
+odf.AnnotationElement=function(){};odf.OdfPart=function(b,a,d,c){var h=this;this.size=0;this.type=null;this.name=b;this.container=d;this.url=null;this.mimetype=a;this.onstatereadychange=this.document=null;this.EMPTY=0;this.LOADING=1;this.DONE=2;this.state=this.EMPTY;this.data="";this.load=function(){null!==c&&(this.mimetype=a,c.loadAsDataURL(b,a,function(a,d){a&&runtime.log(a);h.url=d;if(h.onchange)h.onchange(h);if(h.onstatereadychange)h.onstatereadychange(h)}))}};odf.OdfPart.prototype.load=function(){};
+odf.OdfPart.prototype.getUrl=function(){return this.data?"data:;base64,"+e.toBase64(this.data):null};odf.OdfContainer=function a(d,m){function h(a){for(var d=a.firstChild,b;d;)b=d.nextSibling,d.nodeType===Node.ELEMENT_NODE?h(d):d.nodeType===Node.PROCESSING_INSTRUCTION_NODE&&a.removeChild(d),d=b}function g(a){var d={},b,c,h=a.ownerDocument.createNodeIterator(a,NodeFilter.SHOW_ELEMENT,null,!1);for(a=h.nextNode();a;)"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&("annotation"===
+a.localName?(b=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))&&(d.hasOwnProperty(b)?runtime.log("Warning: annotation name used more than once with <office:annotation/>: '"+b+"'"):d[b]=a):"annotation-end"===a.localName&&((b=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))?d.hasOwnProperty(b)?(c=d[b],c.annotationEndElement?runtime.log("Warning: annotation name used more than once with <office:annotation-end/>: '"+b+"'"):c.annotationEndElement=
+a):runtime.log("Warning: annotation end without an annotation start, name: '"+b+"'"):runtime.log("Warning: annotation end without a name found"))),a=h.nextNode()}function r(a,d){for(var b=a&&a.firstChild;b;)b.nodeType===Node.ELEMENT_NODE&&b.setAttributeNS("urn:webodf:names:scope","scope",d),b=b.nextSibling}function z(a,d){for(var b=B.rootElement.meta,b=b&&b.firstChild;b&&(b.namespaceURI!==a||b.localName!==d);)b=b.nextSibling;for(b=b&&b.firstChild;b&&b.nodeType!==Node.TEXT_NODE;)b=b.nextSibling;return b?
+b.data:null}function w(a){var d={},b;for(a=a.firstChild;a;)a.nodeType===Node.ELEMENT_NODE&&a.namespaceURI===p&&"font-face"===a.localName&&(b=a.getAttributeNS(p,"name"),d[b]=a),a=a.nextSibling;return d}function v(a,d){var b=null,c,h,e;if(a)for(b=a.cloneNode(!0),c=b.firstElementChild;c;)h=c.nextElementSibling,(e=c.getAttributeNS("urn:webodf:names:scope","scope"))&&e!==d&&b.removeChild(c),c=h;return b}function u(a,d){var b,c,h,e=null,m={};if(a)for(d.forEach(function(a){f.collectUsedFontFaces(m,a)}),
+e=a.cloneNode(!0),b=e.firstElementChild;b;)c=b.nextElementSibling,h=b.getAttributeNS(p,"name"),m[h]||e.removeChild(b),b=c;return e}function t(a){var d=B.rootElement.ownerDocument,b;if(a){h(a.documentElement);try{b=d.importNode(a.documentElement,!0)}catch(c){}}return b}function A(a){B.state=a;if(B.onchange)B.onchange(B);if(B.onstatereadychange)B.onstatereadychange(B)}function I(a){Q=null;B.rootElement=a;a.fontFaceDecls=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls");
+a.styles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles");a.automaticStyles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles");a.masterStyles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles");a.body=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body");a.meta=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta");a.settings=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0",
+"settings");a.scripts=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","scripts");g(a)}function K(d){var c=t(d),h=B.rootElement,e;c&&"document-styles"===c.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===c.namespaceURI?(h.fontFaceDecls=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls"),b(h,h.fontFaceDecls),e=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles"),h.styles=e||d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",
+"styles"),b(h,h.styles),e=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),h.automaticStyles=e||d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),r(h.automaticStyles,"document-styles"),b(h,h.automaticStyles),c=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),h.masterStyles=c||d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),b(h,h.masterStyles),
+f.prefixStyleNames(h.automaticStyles,q,h.masterStyles)):A(a.INVALID)}function L(d){d=t(d);var c,h,e,m;if(d&&"document-content"===d.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===d.namespaceURI){c=B.rootElement;e=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls");if(c.fontFaceDecls&&e){m=c.fontFaceDecls;var g,k,O,q,D={};h=w(m);q=w(e);for(e=e.firstElementChild;e;){g=e.nextElementSibling;if(e.namespaceURI===p&&"font-face"===e.localName)if(k=e.getAttributeNS(p,
+"name"),h.hasOwnProperty(k)){if(!e.isEqualNode(h[k])){O=k;for(var y=h,E=q,u=0,W=void 0,W=O=O.replace(/\d+$/,"");y.hasOwnProperty(W)||E.hasOwnProperty(W);)u+=1,W=O+u;O=W;e.setAttributeNS(p,"style:name",O);m.appendChild(e);h[O]=e;delete q[k];D[k]=O}}else m.appendChild(e),h[k]=e,delete q[k];e=g}m=D}else e&&(c.fontFaceDecls=e,b(c,e));h=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles");r(h,"document-content");m&&f.changeFontFaceNames(h,m);if(c.automaticStyles&&h)for(m=
+h.firstChild;m;)c.automaticStyles.appendChild(m),m=h.firstChild;else h&&(c.automaticStyles=h,b(c,h));d=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body");if(null===d)throw"<office:body/> tag is mising.";c.body=d;b(c,c.body)}else A(a.INVALID)}function E(a){a=t(a);var d;a&&"document-meta"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&(d=B.rootElement,d.meta=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),
+b(d,d.meta))}function N(a){a=t(a);var d;a&&"document-settings"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&(d=B.rootElement,d.settings=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","settings"),b(d,d.settings))}function O(a){a=t(a);var d;if(a&&"manifest"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===a.namespaceURI)for(d=B.rootElement,d.manifest=a,a=d.manifest.firstElementChild;a;)"file-entry"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===
+a.namespaceURI&&(M[a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","full-path")]=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","media-type")),a=a.nextElementSibling}function D(a,d,b){a=n.getElementsByTagName(a,d);var c;for(c=0;c<a.length;c+=1)d=a[c],b.hasOwnProperty(d.namespaceURI)||d.parentNode.removeChild(d)}function V(a){D(a,"script",{"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:office:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:table:1.0":!0,
+"urn:oasis:names:tc:opendocument:xmlns:text:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0":!0});D(a,"style",{"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:style:1.0":!0})}function W(a){var d=a.firstElementChild,b=[],c,h,e,m=a.attributes,f=m.length;for(c=0;c<f;c+=1)e=m.item(c),h=e.localName.substr(0,2).toLowerCase(),null===e.namespaceURI&&"on"===h&&b.push(e);f=b.length;for(c=
+0;c<f;c+=1)a.removeAttributeNode(b[c]);for(;d;)W(d),d=d.nextElementSibling}function J(d){var b=d.shift();b?Y.loadAsDOM(b.path,function(c,h){h&&(V(h),W(h.documentElement));b.handler(h);B.state===a.INVALID?c?runtime.log("ERROR: Unable to load "+b.path+" - "+c):runtime.log("ERROR: Unable to load "+b.path):(c&&runtime.log("DEBUG: Unable to load "+b.path+" - "+c),J(d))}):(g(B.rootElement),A(a.DONE))}function R(a){var d="";odf.Namespaces.forEachPrefix(function(a,b){d+=" xmlns:"+a+'="'+b+'"'});return'<?xml version="1.0" encoding="UTF-8"?><office:'+
+a+" "+d+' office:version="1.2">'}function P(){var a=new xmldom.LSSerializer,d=R("document-meta");a.filter=new odf.OdfNodeFilter;d+=a.writeToString(B.rootElement.meta,odf.Namespaces.namespaceMap);return d+"</office:document-meta>"}function aa(a,d){var b=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:file-entry");b.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:full-path",a);b.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0",
+"manifest:media-type",d);return b}function S(){var a=runtime.parseXML('<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2"></manifest:manifest>'),d=a.documentElement,b=new xmldom.LSSerializer,c;for(c in M)M.hasOwnProperty(c)&&d.appendChild(aa(c,M[c]));b.filter=new odf.OdfNodeFilter;return'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n'+b.writeToString(a,odf.Namespaces.namespaceMap)}function fa(){var a,d,b,c=odf.Namespaces.namespaceMap,
+h=new xmldom.LSSerializer,e=R("document-styles");d=v(B.rootElement.automaticStyles,"document-styles");b=B.rootElement.masterStyles.cloneNode(!0);a=u(B.rootElement.fontFaceDecls,[b,B.rootElement.styles,d]);f.removePrefixFromStyleNames(d,q,b);h.filter=new k(b,d);e+=h.writeToString(a,c);e+=h.writeToString(B.rootElement.styles,c);e+=h.writeToString(d,c);e+=h.writeToString(b,c);return e+"</office:document-styles>"}function ha(){var a,d,b=odf.Namespaces.namespaceMap,h=new xmldom.LSSerializer,e=R("document-content");
+d=v(B.rootElement.automaticStyles,"document-content");a=u(B.rootElement.fontFaceDecls,[d]);h.filter=new c(B.rootElement.body,d);e+=h.writeToString(a,b);e+=h.writeToString(d,b);e+=h.writeToString(B.rootElement.body,b);return e+"</office:document-content>"}function C(d,b){runtime.loadXML(d,function(d,c){if(d)b(d);else if(c){V(c);W(c.documentElement);var h=t(c);h&&"document"===h.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===h.namespaceURI?(I(h),A(a.DONE)):A(a.INVALID)}else b("No DOM was loaded.")})}
+function Z(a,d){var c;c=B.rootElement;var h=c.meta;h||(c.meta=h=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),b(c,h));c=h;a&&n.mapKeyValObjOntoNode(c,a,odf.Namespaces.lookupNamespaceURI);d&&n.removeKeyElementsFromNode(c,d,odf.Namespaces.lookupNamespaceURI)}function ba(d,b){function c(a,d){var b;d||(d=a);b=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",d);f[a]=b;f.appendChild(b)}var h=new core.Zip("",null),e="application/vnd.oasis.opendocument."+
+d+(!0===b?"-template":""),m=runtime.byteArrayFromString(e,"utf8"),f=B.rootElement,g=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",d);h.save("mimetype",m,!1,new Date);c("meta");c("settings");c("scripts");c("fontFaceDecls","font-face-decls");c("styles");c("automaticStyles","automatic-styles");c("masterStyles","master-styles");c("body");f.body.appendChild(g);M["/"]=e;M["settings.xml"]="text/xml";M["meta.xml"]="text/xml";M["styles.xml"]="text/xml";M["content.xml"]="text/xml";
+A(a.DONE);return h}function U(){var a,d=new Date,b="";B.rootElement.settings&&B.rootElement.settings.firstElementChild&&(a=new xmldom.LSSerializer,b=R("document-settings"),a.filter=new odf.OdfNodeFilter,b+=a.writeToString(B.rootElement.settings,odf.Namespaces.namespaceMap),b+="</office:document-settings>");(a=b)?(a=runtime.byteArrayFromString(a,"utf8"),Y.save("settings.xml",a,!0,d)):Y.remove("settings.xml");b=runtime.getWindow();a="WebODF/"+webodf.Version;b&&(a=a+" "+b.navigator.userAgent);Z({"meta:generator":a},
+null);a=runtime.byteArrayFromString(P(),"utf8");Y.save("meta.xml",a,!0,d);a=runtime.byteArrayFromString(fa(),"utf8");Y.save("styles.xml",a,!0,d);a=runtime.byteArrayFromString(ha(),"utf8");Y.save("content.xml",a,!0,d);a=runtime.byteArrayFromString(S(),"utf8");Y.save("META-INF/manifest.xml",a,!0,d)}function ga(a,d){U();Y.writeAs(a,function(a){d(a)})}var B=this,Y,M={},Q,F="";this.onstatereadychange=m;this.state=this.onchange=null;this.getMetadata=z;this.setRootElement=I;this.getContentElement=function(){var a;
+Q||(a=B.rootElement.body,Q=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","text")||n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","presentation")||n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","spreadsheet"));if(!Q)throw"Could not find content element in <office:body/>.";return Q};this.getDocumentType=function(){var a=B.getContentElement();return a&&a.localName};this.isTemplate=function(){return"-template"===M["/"].substr(-9)};
+this.setIsTemplate=function(a){var d=M["/"],b="-template"===d.substr(-9);a!==b&&(d=a?d+"-template":d.substr(0,d.length-9),M["/"]=d,a=runtime.byteArrayFromString(d,"utf8"),Y.save("mimetype",a,!1,new Date))};this.getPart=function(a){return new odf.OdfPart(a,M[a],B,Y)};this.getPartData=function(a,d){Y.load(a,d)};this.setMetadata=Z;this.incrementEditingCycles=function(){var a=z(odf.Namespaces.metans,"editing-cycles"),a=a?parseInt(a,10):0;isNaN(a)&&(a=0);Z({"meta:editing-cycles":a+1},null);return a+1};
+this.createByteArray=function(a,d){U();Y.createByteArray(a,d)};this.saveAs=ga;this.save=function(a){ga(F,a)};this.getUrl=function(){return F};this.setBlob=function(a,d,b){b=e.convertBase64ToByteArray(b);Y.save(a,b,!1,new Date);M.hasOwnProperty(a)&&runtime.log(a+" has been overwritten.");M[a]=d};this.removeBlob=function(a){var d=Y.remove(a);runtime.assert(d,"file is not found: "+a);delete M[a]};this.state=a.LOADING;this.rootElement=function(a){var d=document.createElementNS(a.namespaceURI,a.localName),
+b;a=new a.Type;for(b in a)a.hasOwnProperty(b)&&(d[b]=a[b]);return d}({Type:odf.ODFDocumentElement,namespaceURI:odf.ODFDocumentElement.namespaceURI,localName:odf.ODFDocumentElement.localName});d===odf.OdfContainer.DocumentType.TEXT?Y=ba("text"):d===odf.OdfContainer.DocumentType.TEXT_TEMPLATE?Y=ba("text",!0):d===odf.OdfContainer.DocumentType.PRESENTATION?Y=ba("presentation"):d===odf.OdfContainer.DocumentType.PRESENTATION_TEMPLATE?Y=ba("presentation",!0):d===odf.OdfContainer.DocumentType.SPREADSHEET?
+Y=ba("spreadsheet"):d===odf.OdfContainer.DocumentType.SPREADSHEET_TEMPLATE?Y=ba("spreadsheet",!0):(F=d,Y=new core.Zip(F,function(d,b){Y=b;d?C(F,function(b){d&&(Y.error=d+"\n"+b,A(a.INVALID))}):J([{path:"styles.xml",handler:K},{path:"content.xml",handler:L},{path:"meta.xml",handler:E},{path:"settings.xml",handler:N},{path:"META-INF/manifest.xml",handler:O}])}))};odf.OdfContainer.EMPTY=0;odf.OdfContainer.LOADING=1;odf.OdfContainer.DONE=2;odf.OdfContainer.INVALID=3;odf.OdfContainer.SAVING=4;odf.OdfContainer.MODIFIED=
+5;odf.OdfContainer.getContainer=function(a){return new odf.OdfContainer(a,null)}})();odf.OdfContainer.DocumentType={TEXT:1,TEXT_TEMPLATE:2,PRESENTATION:3,PRESENTATION_TEMPLATE:4,SPREADSHEET:5,SPREADSHEET_TEMPLATE:6};gui.AnnotatableCanvas=function(){};gui.AnnotatableCanvas.prototype.refreshSize=function(){};gui.AnnotatableCanvas.prototype.getZoomLevel=function(){};gui.AnnotatableCanvas.prototype.getSizer=function(){};
+gui.AnnotationViewManager=function(g,k,c,b){function f(d){var b=d.annotationEndElement,c=l.createRange(),e=d.getAttributeNS(odf.Namespaces.officens,"name");b&&(c.setStart(d,d.childNodes.length),c.setEnd(b,0),d=a.getTextNodes(c,!1),d.forEach(function(a){var d;a:{for(d=a.parentNode;d.namespaceURI!==odf.Namespaces.officens||"body"!==d.localName;){if("http://www.w3.org/1999/xhtml"===d.namespaceURI&&"webodf-annotationHighlight"===d.className&&d.getAttribute("annotation")===e){d=!0;break a}d=d.parentNode}d=
+!1}d||(d=l.createElement("span"),d.className="webodf-annotationHighlight",d.setAttribute("annotation",e),a.parentNode.replaceChild(d,a),d.appendChild(a))}));c.detach()}function n(a){var b=g.getSizer();a?(c.style.display="inline-block",b.style.paddingRight=d.getComputedStyle(c).width):(c.style.display="none",b.style.paddingRight=0);g.refreshSize()}function p(){e.sort(function(a,d){return 0!==(a.compareDocumentPosition(d)&Node.DOCUMENT_POSITION_FOLLOWING)?-1:1})}function r(){var a;for(a=0;a<e.length;a+=
+1){var d=e[a],b=d.parentNode,f=b.nextElementSibling,l=f.nextElementSibling,n=b.parentNode,k=0,k=e[e.indexOf(d)-1],r=void 0,d=g.getZoomLevel();b.style.left=(c.getBoundingClientRect().left-n.getBoundingClientRect().left)/d+"px";b.style.width=c.getBoundingClientRect().width/d+"px";f.style.width=parseFloat(b.style.left)-30+"px";k?(r=k.parentNode.getBoundingClientRect(),20>=(n.getBoundingClientRect().top-r.bottom)/d?b.style.top=Math.abs(n.getBoundingClientRect().top-r.bottom)/d+20+"px":b.style.top="0px"):
+b.style.top="0px";l.style.left=f.getBoundingClientRect().width/d+"px";var f=l.style,n=l.getBoundingClientRect().left/d,k=l.getBoundingClientRect().top/d,r=b.getBoundingClientRect().left/d,p=b.getBoundingClientRect().top/d,q=0,I=0,q=r-n,q=q*q,I=p-k,I=I*I,n=Math.sqrt(q+I);f.width=n+"px";k=Math.asin((b.getBoundingClientRect().top-l.getBoundingClientRect().top)/(d*parseFloat(l.style.width)));l.style.transform="rotate("+k+"rad)";l.style.MozTransform="rotate("+k+"rad)";l.style.WebkitTransform="rotate("+
+k+"rad)";l.style.msTransform="rotate("+k+"rad)"}}function q(a){var d=e.indexOf(a),b=a.parentNode.parentNode;"div"===b.localName&&(b.parentNode.insertBefore(a,b),b.parentNode.removeChild(b));a=a.getAttributeNS(odf.Namespaces.officens,"name");a=l.querySelectorAll('span.webodf-annotationHighlight[annotation="'+a+'"]');for(var c,b=0;b<a.length;b+=1){for(c=a.item(b);c.firstChild;)c.parentNode.insertBefore(c.firstChild,c);c.parentNode.removeChild(c)}-1!==d&&e.splice(d,1);0===e.length&&n(!1)}var e=[],l=
+k.ownerDocument,a=odf.OdfUtils,d=runtime.getWindow();runtime.assert(Boolean(d),"Expected to be run in an environment which has a global window, like a browser.");this.rerenderAnnotations=r;this.rehighlightAnnotations=function(){e.forEach(function(a){f(a)})};this.getMinimumHeightForAnnotationPane=function(){return"none"!==c.style.display&&0<e.length?(e[e.length-1].parentNode.getBoundingClientRect().bottom-c.getBoundingClientRect().top)/g.getZoomLevel()+"px":null};this.addAnnotations=function(d){0!==
+d.length&&(n(!0),d.forEach(function(d){e.push(d);var c=l.createElement("div"),m=l.createElement("div"),n=l.createElement("div"),g=l.createElement("div"),k;c.className="annotationWrapper";c.setAttribute("creator",a.getAnnotationCreator(d));d.parentNode.insertBefore(c,d);m.className="annotationNote";m.appendChild(d);b&&(k=l.createElement("div"),k.className="annotationRemoveButton",m.appendChild(k));n.className="annotationConnector horizontal";g.className="annotationConnector angular";c.appendChild(m);
+c.appendChild(n);c.appendChild(g);d.annotationEndElement&&f(d)}),p(),r())};this.forgetAnnotation=q;this.forgetAnnotations=function(){for(;e.length;)q(e[0])}};gui.Viewport=function(){};gui.Viewport.prototype.scrollIntoView=function(g,k){};
+gui.SingleScrollViewport=function(g){this.scrollIntoView=function(k,c){var b,f,n,p;p=g.offsetHeight-g.clientHeight;n=g.offsetWidth-g.clientWidth;var r=g.getBoundingClientRect();if(k&&r){b=r.left+5;f=r.top+5;n=r.right-(n+5);p=r.bottom-(p+5);if(c||k.top<f)g.scrollTop-=f-k.top;else if(k.top>p||k.bottom>p)g.scrollTop=k.bottom-k.top<=p-f?g.scrollTop+(k.bottom-p):g.scrollTop+(k.top-f);k.left<b?g.scrollLeft-=b-k.left:k.right>n&&(g.scrollLeft=k.right-k.left<=n-b?g.scrollLeft+(k.right-n):g.scrollLeft-(b-k.left))}}};
+(function(){function g(c,n,k,r,q){var e,l=0,a;for(a in c)if(c.hasOwnProperty(a)){if(l===k){e=a;break}l+=1}e?n.getPartData(c[e].href,function(a,m){if(a)runtime.log(a);else if(m){var h="@font-face { font-family: "+(c[e].family||e)+"; src: url(data:application/x-font-ttf;charset=binary;base64,"+b.convertUTF8ArrayToBase64(m)+') format("truetype"); }';try{r.insertRule(h,r.cssRules.length)}catch(l){runtime.log("Problem inserting rule in CSS: "+runtime.toJson(l)+"\nRule: "+h)}}else runtime.log("missing font data for "+
+c[e].href);g(c,n,k+1,r,q)}):q&&q()}var k=xmldom.XPath,c=odf.OdfUtils,b=new core.Base64;odf.FontLoader=function(){this.loadFonts=function(b,n){for(var p=b.rootElement.fontFaceDecls;n.cssRules.length;)n.deleteRule(n.cssRules.length-1);if(p){var r={},q,e,l,a;if(p)for(p=k.getODFElementsWithXPath(p,"style:font-face[svg:font-face-src]",odf.Namespaces.lookupNamespaceURI),q=0;q<p.length;q+=1)e=p[q],l=e.getAttributeNS(odf.Namespaces.stylens,"name"),a=c.getNormalizedFontFamilyName(e.getAttributeNS(odf.Namespaces.svgns,
+"font-family")),e=k.getODFElementsWithXPath(e,"svg:font-face-src/svg:font-face-uri",odf.Namespaces.lookupNamespaceURI),0<e.length&&(e=e[0].getAttributeNS(odf.Namespaces.xlinkns,"href"),r[l]={href:e,family:a});g(r,b,0,n)}}}})();
+odf.Formatting=function(){function g(a){return(a=A[a])?u.mergeObjects({},a):{}}function k(){for(var d=a.rootElement.fontFaceDecls,b={},c,e,d=d&&d.firstElementChild;d;){if(c=d.getAttributeNS(h,"name"))if((e=d.getAttributeNS(m,"font-family"))||0<d.getElementsByTagNameNS(m,"font-face-uri").length)b[c]=e;d=d.nextElementSibling}return b}function c(d){for(var b=a.rootElement.styles.firstElementChild;b;){if(b.namespaceURI===h&&"default-style"===b.localName&&b.getAttributeNS(h,"family")===d)return b;b=b.nextElementSibling}return null}
+function b(d,b,c){var e,m,l;c=c||[a.rootElement.automaticStyles,a.rootElement.styles];for(l=0;l<c.length;l+=1)for(e=c[l],e=e.firstElementChild;e;){m=e.getAttributeNS(h,"name");if(e.namespaceURI===h&&"style"===e.localName&&e.getAttributeNS(h,"family")===b&&m===d||"list-style"===b&&e.namespaceURI===y&&"list-style"===e.localName&&m===d||"data"===b&&e.namespaceURI===x&&m===d)return e;e=e.nextElementSibling}return null}function f(a){for(var d,b,c,e,m={},l=a.firstElementChild;l;){if(l.namespaceURI===h)for(c=
+m[l.nodeName]={},b=l.attributes,d=0;d<b.length;d+=1)e=b.item(d),c[e.name]=e.value;l=l.nextElementSibling}b=a.attributes;for(d=0;d<b.length;d+=1)e=b.item(d),m[e.name]=e.value;return m}function n(d,e){for(var m=a.rootElement.styles,l,n={},k=d.getAttributeNS(h,"family"),r=d;r;)l=f(r),n=u.mergeObjects(l,n),r=(l=r.getAttributeNS(h,"parent-style-name"))?b(l,k,[m]):null;if(r=c(k))l=f(r),n=u.mergeObjects(l,n);!1!==e&&(l=g(k),n=u.mergeObjects(l,n));return n}function p(b,c){function h(a){Object.keys(a).forEach(function(d){Object.keys(a[d]).forEach(function(a){f+=
+"|"+d+":"+a+"|"})})}for(var e=b.nodeType===Node.TEXT_NODE?b.parentNode:b,m,l=[],f="",n=!1;e&&!w.isInlineRoot(e)&&e.parentNode!==a.rootElement;)!n&&w.isGroupingElement(e)&&(n=!0),(m=d.determineStylesForNode(e))&&l.push(m),e=e.parentNode;n&&(l.forEach(h),c&&(c[f]=l));return n?l:void 0}function r(d){var c={orderedStyles:[],styleProperties:{}};d.forEach(function(d){Object.keys(d).forEach(function(e){var m=Object.keys(d[e])[0],l={name:m,family:e,displayName:void 0,isCommonStyle:!1},f;(f=b(m,e))?(e=n(f),
+c.styleProperties=u.mergeObjects(e,c.styleProperties),l.displayName=f.getAttributeNS(h,"display-name")||void 0,l.isCommonStyle=f.parentNode===a.rootElement.styles):runtime.log("No style element found for '"+m+"' of family '"+e+"'");c.orderedStyles.push(l)})});return c}function q(a,d){var b={},c=[];d||(d={});a.forEach(function(a){p(a,b)});Object.keys(b).forEach(function(a){d[a]||(d[a]=r(b[a]));c.push(d[a])});return c}function e(d){for(var b=a.rootElement.masterStyles.firstElementChild;b&&(b.namespaceURI!==
+h||"master-page"!==b.localName||b.getAttributeNS(h,"name")!==d);)b=b.nextElementSibling;return b}function l(a,d){var b;a&&(b=t.convertMeasure(a,"px"));void 0===b&&d&&(b=t.convertMeasure(d,"px"));return b}var a,d=new odf.StyleInfo,m=odf.Namespaces.svgns,h=odf.Namespaces.stylens,y=odf.Namespaces.textns,x=odf.Namespaces.numberns,z=odf.Namespaces.fons,w=odf.OdfUtils,v=core.DomUtils,u=new core.Utils,t=new core.CSSUnits,A={paragraph:{"style:paragraph-properties":{"fo:text-align":"left"}}};this.getSystemDefaultStyleAttributes=
+g;this.setOdfContainer=function(d){a=d};this.getFontMap=k;this.getAvailableParagraphStyles=function(){for(var d=a.rootElement.styles,b,c,e=[],d=d&&d.firstElementChild;d;)"style"===d.localName&&d.namespaceURI===h&&(b=d.getAttributeNS(h,"family"),"paragraph"===b&&(b=d.getAttributeNS(h,"name"),c=d.getAttributeNS(h,"display-name")||b,b&&c&&e.push({name:b,displayName:c}))),d=d.nextElementSibling;return e};this.isStyleUsed=function(b){var c,e=a.rootElement;c=d.hasDerivedStyles(e,odf.Namespaces.lookupNamespaceURI,
+b);b=(new d.UsedStyleList(e.styles)).uses(b)||(new d.UsedStyleList(e.automaticStyles)).uses(b)||(new d.UsedStyleList(e.body)).uses(b);return c||b};this.getDefaultStyleElement=c;this.getStyleElement=b;this.getStyleAttributes=f;this.getInheritedStyleAttributes=n;this.getFirstCommonParentStyleNameOrSelf=function(d){var c=a.rootElement.styles,e;if(e=b(d,"paragraph",[a.rootElement.automaticStyles]))if(d=e.getAttributeNS(h,"parent-style-name"),!d)return null;return(e=b(d,"paragraph",[c]))?d:null};this.hasParagraphStyle=
+function(a){return Boolean(b(a,"paragraph"))};this.getAppliedStyles=q;this.getAppliedStylesForElement=function(a,d){return q([a],d)[0]};this.updateStyle=function(d,b){var c,e;v.mapObjOntoNode(d,b,odf.Namespaces.lookupNamespaceURI);(c=(c=b["style:text-properties"])&&c["style:font-name"])&&!k().hasOwnProperty(c)&&(e=d.ownerDocument.createElementNS(h,"style:font-face"),e.setAttributeNS(h,"style:name",c),e.setAttributeNS(m,"svg:font-family",c),a.rootElement.fontFaceDecls.appendChild(e))};this.createDerivedStyleObject=
+function(d,c,e){var h=b(d,c);runtime.assert(Boolean(h),"No style element found for '"+d+"' of family '"+c+"'");d=h.parentNode===a.rootElement.styles?{"style:parent-style-name":d}:f(h);d["style:family"]=c;u.mergeObjects(d,e);return d};this.getDefaultTabStopDistance=function(){for(var a=c("paragraph"),a=a&&a.firstElementChild,d;a;)a.namespaceURI===h&&"paragraph-properties"===a.localName&&(d=a.getAttributeNS(h,"tab-stop-distance")),a=a.nextElementSibling;d||(d="1.25cm");return w.parseNonNegativeLength(d)};
+this.getMasterPageElement=e;this.getContentSize=function(d,c){var m,f,n,g,k,r,p,q,y,u;a:{f=b(d,c);runtime.assert("paragraph"===c||"table"===c,"styleFamily must be either paragraph or table");if(f){if(f=f.getAttributeNS(h,"master-page-name"))(m=e(f))||runtime.log("WARN: No master page definition found for "+f);m||(m=e("Standard"));m||(m=a.rootElement.masterStyles.getElementsByTagNameNS(h,"master-page")[0])||runtime.log("WARN: Document has no master pages defined");if(m)for(f=m.getAttributeNS(h,"page-layout-name"),
+n=a.rootElement.automaticStyles.getElementsByTagNameNS(h,"page-layout"),g=0;g<n.length;g+=1)if(m=n.item(g),m.getAttributeNS(h,"name")===f)break a}m=null}m||(m=v.getDirectChild(a.rootElement.styles,h,"default-page-layout"));(m=v.getDirectChild(m,h,"page-layout-properties"))?("landscape"===m.getAttributeNS(h,"print-orientation")?(f="29.7cm",n="21.001cm"):(f="21.001cm",n="29.7cm"),f=l(m.getAttributeNS(z,"page-width"),f),n=l(m.getAttributeNS(z,"page-height"),n),g=l(m.getAttributeNS(z,"margin")),void 0===
+g?(g=l(m.getAttributeNS(z,"margin-left"),"2cm"),k=l(m.getAttributeNS(z,"margin-right"),"2cm"),r=l(m.getAttributeNS(z,"margin-top"),"2cm"),p=l(m.getAttributeNS(z,"margin-bottom"),"2cm")):g=k=r=p=g,q=l(m.getAttributeNS(z,"padding")),void 0===q?(q=l(m.getAttributeNS(z,"padding-left"),"0cm"),y=l(m.getAttributeNS(z,"padding-right"),"0cm"),u=l(m.getAttributeNS(z,"padding-top"),"0cm"),m=l(m.getAttributeNS(z,"padding-bottom"),"0cm")):q=y=u=m=q):(f=l("21.001cm"),n=l("29.7cm"),g=k=r=p=g=l("2cm"),q=y=u=m=q=
+l("0cm"));return{width:f-g-k-q-y,height:n-r-p-u-m}}};
+(function(){var g=odf.Namespaces.stylens,k=odf.Namespaces.textns,c={graphic:"draw","drawing-page":"draw",paragraph:"text",presentation:"presentation",ruby:"text",section:"text",table:"table","table-cell":"table","table-column":"table","table-row":"table",text:"text",list:"text",page:"office"};odf.StyleTreeNode=function(b){this.derivedStyles={};this.element=b};odf.StyleTree=function(b,f){function n(b){var a,d,c,e={};if(!b)return e;for(b=b.firstElementChild;b;){if(d=b.namespaceURI!==g||"style"!==b.localName&&
+"default-style"!==b.localName?b.namespaceURI===k&&"list-style"===b.localName?"list":b.namespaceURI!==g||"page-layout"!==b.localName&&"default-page-layout"!==b.localName?void 0:"page":b.getAttributeNS(g,"family"))(a=b.getAttributeNS(g,"name"))||(a=""),e.hasOwnProperty(d)?c=e[d]:e[d]=c={},c[a]=b;b=b.nextElementSibling}return e}function p(b,a){if(b.hasOwnProperty(a))return b[a];var d=null,c=Object.keys(b),e;for(e=0;e<c.length&&!(d=p(b[c[e]].derivedStyles,a));e+=1);return d}function r(b,a,d){var c,e,
+f;if(!a.hasOwnProperty(b))return null;c=new odf.StyleTreeNode(a[b]);e=c.element.getAttributeNS(g,"parent-style-name");f=null;e&&(f=p(d,e)||r(e,a,d));f?f.derivedStyles[b]=c:d[b]=c;delete a[b];return c}function q(b,a){b&&Object.keys(b).forEach(function(d){r(d,b,a)})}var e={};this.getStyleTree=function(){return e};(function(){var l,a,d;a=n(b);d=n(f);Object.keys(c).forEach(function(b){l=e[b]={};q(a[b],l);q(d[b],l)})})()}})();
+(function(){function g(b,c){try{b.insertRule(c,b.cssRules.length)}catch(f){runtime.log("cannot load rule: "+c+" - "+f)}}function k(b,c){this.listCounterCount=0;this.contentRules=b;this.counterIdStack=[];this.continuedCounterIdStack=c}function c(b){function c(d,h,f,l){var k=h.namespaceURI===n&&"list"===h.localName,r=h.namespaceURI===n&&"list-item"===h.localName;if(k||r){if(k){var k=f+=1,p,u,t;l.listCounterCount+=1;r=d+"-level"+k+"-"+l.listCounterCount;h.setAttributeNS("urn:webodf:names:helper","counter-id",
+r);p=l.continuedCounterIdStack.shift();p||(p=r,a+=r+" 1 ",u='text|list[webodfhelper|counter-id="'+r+'"] > text|list-item:first-child > :not(text|list):first-child:before',u+="{",u+="counter-increment: "+p+" 0;",u+="}",g(b,u));for(;l.counterIdStack.length>=k;)l.counterIdStack.pop();l.counterIdStack.push(p);t=l.contentRules[k.toString()]||"";for(u=1;u<=k;u+=1)t=t.replace(u+"webodf-listLevel",l.counterIdStack[u-1]);u='text|list[webodfhelper|counter-id="'+r+'"] > text|list-item > :not(text|list):first-child:before';
+u+="{";u+=t;u+="counter-increment: "+p+";";u+="}";g(b,u)}for(h=h.firstElementChild;h;)c(d,h,f,l),h=h.nextElementSibling}else l.continuedCounterIdStack=[]}var f=0,a="",d={};this.createCounterRules=function(a,b,n){var g=b.getAttributeNS(p,"id"),r=[];n&&(n=n.getAttributeNS("urn:webodf:names:helper","counter-id"),r=d[n].slice(0));a=new k(a,r);g?g="Y"+g:(f+=1,g="X"+f);c(g,b,0,a);d[g+"-level1-1"]=a.counterIdStack};this.initialiseCreatedCounters=function(){var d;d="office|document{"+("counter-reset: "+a+
+";");d+="}";g(b,d)}}var b=odf.Namespaces.fons,f=odf.Namespaces.stylens,n=odf.Namespaces.textns,p=odf.Namespaces.xmlns,r={1:"decimal",a:"lower-latin",A:"upper-latin",i:"lower-roman",I:"upper-roman"};odf.ListStyleToCss=function(){function k(a){var b=m.parseLength(a);return b?d.convert(b.value,b.unit,"px"):(runtime.log("Could not parse value '"+a+"'."),0)}function e(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function l(a,d){var b;a&&(b=a.getAttributeNS(n,"style-name"));return b===d}function a(a,
+d,b){d=d.getElementsByTagNameNS(n,"list");a=new c(a);var m,g,k,q,t,A,I={},K;for(K=0;K<d.length;K+=1)if(m=d.item(K),A=m.getAttributeNS(n,"style-name")){k=m.getAttributeNS(n,"continue-numbering");q=m.getAttributeNS(n,"continue-list");(t=m.getAttributeNS(p,"id"))&&(I[t]=m);t=b[A].element.firstElementChild;for(var L=void 0,E={};t;){var L=(L=t.getAttributeNS(n,"level"))&&parseInt(L,10),N=t,O="",D=void 0,V=void 0,W=D=void 0;if("list-level-style-number"===N.localName){var J=N,O=J.getAttributeNS(f,"num-format"),
+D=J.getAttributeNS(f,"num-suffix")||"",V=J.getAttributeNS(f,"num-prefix")||"",R="",P=J.getAttributeNS(n,"level"),J=J.getAttributeNS(n,"display-levels");V&&(R+='"'+e(V)+'"\n');if(r.hasOwnProperty(O))for(P=P?parseInt(P,10):1,J=J?parseInt(J,10):1;0<J;)R+=" counter("+(P-J+1)+"webodf-listLevel,"+r[O]+")",1<J&&(R+='"."'),--J;else R=O?R+(' "'+O+'"'):R+' ""';O="content:"+R+' "'+e(D)+'"'}else"list-level-style-image"===N.localName?O="content: none":"list-level-style-bullet"===N.localName&&(O=N.getAttributeNS(n,
+"bullet-char"),O='content: "'+e(O)+'"');if(D=N.getElementsByTagNameNS(f,"list-level-properties")[0])V=D.getAttributeNS(n,"list-level-position-and-space-mode"),"label-alignment"===V&&((D=D.getElementsByTagNameNS(f,"list-level-label-alignment")[0])&&(W=D.getAttributeNS(n,"label-followed-by")),"space"===W&&(O+=' "\\a0"'));E[L]="\n"+O+";\n";t=t.nextElementSibling}t=E;k&&!q&&l(g,A)?a.createCounterRules(t,m,g):q&&l(I[q],A)?a.createCounterRules(t,m,I[q]):a.createCounterRules(t,m);g=m}a.initialiseCreatedCounters()}
+var d=new core.CSSUnits,m=odf.OdfUtils;this.applyListStyles=function(d,c,e){var m,l;(m=c.list)&&Object.keys(m).forEach(function(a){l=m[a];for(var c=l.element.firstElementChild;c;){if(c.namespaceURI===n){for(var e=d,r=c,p='text|list[text|style-name="'+a+'"]',y=r.getAttributeNS(n,"level"),x=void 0,E=void 0,N=E=void 0,O=void 0,D=void 0,V=x=void 0,W=void 0,J=void 0,R=void 0,O=void 0,N=(E=r.getElementsByTagNameNS(f,"list-level-properties")[0])&&E.getAttributeNS(n,"list-level-position-and-space-mode"),
+O=E&&E.getElementsByTagNameNS(f,"list-level-label-alignment")[0],x=y=y&&parseInt(y,10);1<x;)p+=" > text|list-item > text|list",--x;x=E&&E.getAttributeNS(b,"text-align")||"left";switch(x){case "end":x="right";break;case "start":x="left"}"label-alignment"===N?(D=O&&O.getAttributeNS(b,"margin-left")||"0px",J=O&&O.getAttributeNS(b,"text-indent")||"0px",R=O&&O.getAttributeNS(n,"label-followed-by"),O=k(D)):(D=E&&E.getAttributeNS(n,"space-before")||"0px",V=E&&E.getAttributeNS(n,"min-label-width")||"0px",
+W=E&&E.getAttributeNS(n,"min-label-distance")||"0px",O=k(D)+k(V));E=p+" > text|list-item";E+="{";E+="margin-left: "+O+"px;";E+="}";g(e,E);E=p+" > text|list-item > text|list";E+="{";E+="margin-left: "+-O+"px;";E+="}";g(e,E);E=p+" > text|list-item > :not(text|list):first-child:before";E+="{";E+="text-align: "+x+";";E+="display: inline-block;";"label-alignment"===N?(E+="margin-left: "+J+";","listtab"===R&&(E+="padding-right: 0.2cm;")):(E+="min-width: "+V+";",E+="margin-left: "+(0===parseFloat(V)?"":
+"-")+V+";",E+="padding-right: "+W+";");E+="}";g(e,E)}c=c.nextElementSibling}});a(d,e,m)}}})();odf.LazyStyleProperties=function(g,k){var c={};this.value=function(b){var f;c.hasOwnProperty(b)?f=c[b]:(f=k[b](),void 0===f&&g&&(f=g.value(b)),c[b]=f);return f};this.reset=function(b){g=b;c={}}};
+odf.StyleParseUtils=function(){function g(c){var b,f;c=(c=/(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))/.exec(c))?{value:parseFloat(c[1]),unit:c[3]}:null;f=c&&c.unit;"px"===f?b=c.value:"cm"===f?b=c.value/2.54*96:"mm"===f?b=c.value/25.4*96:"in"===f?b=96*c.value:"pt"===f?b=c.value/.75:"pc"===f&&(b=16*c.value);return b}var k=odf.Namespaces.stylens;this.parseLength=g;this.parsePositiveLengthOrPercent=function(c,b,f){var n;c&&(n=parseFloat(c.substr(0,
+c.indexOf("%"))),isNaN(n)&&(n=void 0));var k;void 0!==n?(f&&(k=f.value(b)),n=void 0===k?void 0:k/100*n):n=g(c);return n};this.getPropertiesElement=function(c,b,f){for(b=f?f.nextElementSibling:b.firstElementChild;null!==b&&(b.localName!==c||b.namespaceURI!==k);)b=b.nextElementSibling;return b};this.parseAttributeList=function(c){c&&(c=c.replace(/^\s*(.*?)\s*$/g,"$1"));return c&&0<c.length?c.split(/\s+/):[]}};
+odf.Style2CSS=function(){function g(a,d,b){var c=[];b=b.derivedStyles;var e;var h=z[a],m;void 0===h?d=null:(m=d?"["+h+'|style-name="'+d+'"]':"","presentation"===h&&(h="draw",m=d?'[presentation|style-name="'+d+'"]':""),d=h+"|"+w[a].join(m+","+h+"|")+m);null!==d&&c.push(d);for(e in b)b.hasOwnProperty(e)&&(d=g(a,e,b[e]),c=c.concat(d));return c}function k(a){var d="",b="",d=null;if("default-style"===a.localName)return null;d=a.getAttributeNS(l,"parent-style-name");b=a.getAttributeNS(l,"family");return d=
+S.getODFElementsWithXPath(P,d?"//style:*[@style:name='"+d+"'][@style:family='"+b+"']":"//style:default-style[@style:family='"+b+"']",odf.Namespaces.lookupNamespaceURI)[0]}function c(a,d){var b="",c,e,h;for(c=0;c<d.length;c+=1)if(e=d[c],h=a.getAttributeNS(e[0],e[1])){h=h.trim();if(D.hasOwnProperty(e[1])){var m=h,f=m.indexOf(" "),n=void 0;h=void 0;-1!==f?(n=m.substring(0,f),h=m.substring(f)):(n=m,h="");(n=J.parseLength(n))&&"pt"===n.unit&&.75>n.value&&(m="0.75pt"+h);h=m}else if(V.hasOwnProperty(e[1])){var m=
+a,f=e[0],n=e[1],g=J.parseLength(h),r=void 0,p=void 0,q=void 0,O=void 0,q=void 0;if(g&&"%"===g.unit){r=g.value/100;p=k(m.parentNode);for(O="0";p;){if(q=y.getDirectChild(p,l,"paragraph-properties"))if(q=J.parseLength(q.getAttributeNS(f,n))){if("%"!==q.unit){O=q.value*r+q.unit;break}r*=q.value/100}p=k(p)}h=O}}e[2]&&(b+=e[2]+":"+h+";")}return b}function b(a,d,b,c){return d+d+b+b+c+c}function f(a,d){var b=[a],c=d.derivedStyles;Object.keys(c).forEach(function(a){a=f(a,c[a]);b=b.concat(a)});return b}function n(a,
+d,b,c){function e(d,b){var c=[],h;d.forEach(function(a){m.forEach(function(d){c.push('draw|page[webodfhelper|page-style-name="'+d+'"] draw|frame[presentation|class="'+a+'"]')})});0<c.length&&(h=c.join(",")+"{visibility:"+b+";}",a.insertRule(h,a.cssRules.length))}var m=f(d,c),l=[],n=[];["page-number","date-time","header","footer"].forEach(function(a){var d;d=b.getAttributeNS(h,"display-"+a);"true"===d?l.push(a):"false"===d&&n.push(a)});e(l,"visible");e(n,"hidden")}function p(a,f,D,V){var z,w;if("page"===
+f){var B=V.element,P="",M,Q;Q=M="";D=y.getDirectChild(B,l,"page-layout-properties");var F;if(D)if(F=B.getAttributeNS(l,"name"),P+=c(D,N),(M=y.getDirectChild(D,l,"background-image"))&&(Q=M.getAttributeNS(m,"href"))&&(P=P+("background-image: url('odfkit:"+Q+"');")+c(M,u)),"presentation"===R)for(B=(B=y.getDirectChild(B.parentNode.parentNode,e,"master-styles"))&&B.firstElementChild;B;)B.namespaceURI===l&&"master-page"===B.localName&&B.getAttributeNS(l,"page-layout-name")===F&&(Q=B.getAttributeNS(l,"name"),
+M='draw|page[draw|master-page-name="'+Q+'"] {'+P+"}",Q='office|body, draw|page[draw|master-page-name="'+Q+'"] {'+c(D,O)+" }",a.insertRule(M,a.cssRules.length),a.insertRule(Q,a.cssRules.length)),B=B.nextElementSibling;else"text"===R&&(M="office|text {"+P+"}",Q="office|body {width: "+D.getAttributeNS(q,"page-width")+";}",a.insertRule(M,a.cssRules.length),a.insertRule(Q,a.cssRules.length))}else{P=g(f,D,V).join(",");F="";if(B=y.getDirectChild(V.element,l,"text-properties")){var S=B,ca=w="";M="";Q=1;B=
+""+c(S,v);z=S.getAttributeNS(l,"text-underline-style");"solid"===z&&(w+=" underline");z=S.getAttributeNS(l,"text-line-through-style");"solid"===z&&(w+=" line-through");w.length&&(B=B+("text-decoration:"+w+";\n")+("text-decoration-line:"+w+";\n"),B+="-moz-text-decoration-line:"+w+";\n");z=S.getAttributeNS(l,"text-line-through-type");switch(z){case "double":ca+=" double";break;case "single":ca+=" single"}ca&&(B+="text-decoration-style:"+ca+";\n",B+="-moz-text-decoration-style:"+ca+";\n");if(w=S.getAttributeNS(l,
+"font-name")||S.getAttributeNS(q,"font-family"))z=W[w],B+="font-family: "+(z||w)+";";if(z=S.getAttributeNS(l,"text-position"))w=x.parseAttributeList(z),z=w[0],w=w[1],B+="vertical-align: "+z+"\n; ",w&&(Q=parseFloat(w)/100);if(S.hasAttributeNS(q,"font-size")||1!==Q){for(S=S.parentNode;S;){if(z=(z=y.getDirectChild(S,l,"text-properties"))?J.parseFoFontSize(z.getAttributeNS(q,"font-size")):null){if("%"!==z.unit){M="font-size: "+z.value*Q+z.unit+";";break}Q*=z.value/100}S=k(S)}M||(M="font-size: "+parseFloat(aa)*
+Q+fa.getUnits(aa)+";")}B+=M;F+=B}if(B=y.getDirectChild(V.element,l,"paragraph-properties"))M=B,B=""+c(M,t),(Q=y.getDirectChild(M,l,"background-image"))&&(S=Q.getAttributeNS(m,"href"))&&(B=B+("background-image: url('odfkit:"+S+"');")+c(Q,u)),(M=M.getAttributeNS(q,"line-height"))&&"normal"!==M&&(M=J.parseFoLineHeight(M),B="%"!==M.unit?B+("line-height: "+M.value+M.unit+";"):B+("line-height: "+M.value/100+";")),F+=B;if(B=y.getDirectChild(V.element,l,"graphic-properties"))S=B,B=""+c(S,A),M=S.getAttributeNS(r,
+"opacity"),Q=S.getAttributeNS(r,"fill"),S=S.getAttributeNS(r,"fill-color"),"solid"===Q||"hatch"===Q?S&&"none"!==S?(M=isNaN(parseFloat(M))?1:parseFloat(M)/100,Q=S.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,b),(S=(Q=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(Q))?{r:parseInt(Q[1],16),g:parseInt(Q[2],16),b:parseInt(Q[3],16)}:null)&&(B+="background-color: rgba("+S.r+","+S.g+","+S.b+","+M+");")):B+="background: none;":"none"===Q&&(B+="background: none;"),F+=B;if(B=y.getDirectChild(V.element,l,"drawing-page-properties"))M=
+B,Q=""+c(M,A),"true"===M.getAttributeNS(h,"background-visible")&&(Q+="background: none;"),F+=Q,n(a,D,B,V);if(B=y.getDirectChild(V.element,l,"table-cell-properties"))D=F,F=""+c(B,I),F=D+F;if(B=y.getDirectChild(V.element,l,"table-row-properties"))D=F,F=""+c(B,L),F=D+F;if(B=y.getDirectChild(V.element,l,"table-column-properties"))D=F,F=""+c(B,K),F=D+F;if(B=y.getDirectChild(V.element,l,"table-properties"))D=F,F=""+c(B,E),B=B.getAttributeNS(d,"border-model"),"collapsing"===B?F+="border-collapse:collapse;":
+"separating"===B&&(F+="border-collapse:separate;"),F=D+F;0!==F.length&&a.insertRule(P+"{"+F+"}",a.cssRules.length)}for(var X in V.derivedStyles)V.derivedStyles.hasOwnProperty(X)&&p(a,f,X,V.derivedStyles[X])}var r=odf.Namespaces.drawns,q=odf.Namespaces.fons,e=odf.Namespaces.officens,l=odf.Namespaces.stylens,a=odf.Namespaces.svgns,d=odf.Namespaces.tablens,m=odf.Namespaces.xlinkns,h=odf.Namespaces.presentationns,y=core.DomUtils,x=new odf.StyleParseUtils,z={graphic:"draw","drawing-page":"draw",paragraph:"text",
+presentation:"presentation",ruby:"text",section:"text",table:"table","table-cell":"table","table-column":"table","table-row":"table",text:"text",list:"text",page:"office"},w={graphic:"circle connected control custom-shape ellipse frame g line measure page page-thumbnail path polygon polyline rect regular-polygon".split(" "),paragraph:"alphabetical-index-entry-template h illustration-index-entry-template index-source-style object-index-entry-template p table-index-entry-template table-of-content-entry-template user-index-entry-template".split(" "),
+presentation:"caption circle connector control custom-shape ellipse frame g line measure page-thumbnail path polygon polyline rect regular-polygon".split(" "),"drawing-page":"caption circle connector control page custom-shape ellipse frame g line measure page-thumbnail path polygon polyline rect regular-polygon".split(" "),ruby:["ruby","ruby-text"],section:"alphabetical-index bibliography illustration-index index-title object-index section table-of-content table-index user-index".split(" "),table:["background",
+"table"],"table-cell":"body covered-table-cell even-columns even-rows first-column first-row last-column last-row odd-columns odd-rows table-cell".split(" "),"table-column":["table-column"],"table-row":["table-row"],text:"a index-entry-chapter index-entry-link-end index-entry-link-start index-entry-page-number index-entry-span index-entry-tab-stop index-entry-text index-title-template linenumbering-configuration list-level-style-number list-level-style-bullet outline-level-style span".split(" "),
+list:["list-item"]},v=[[q,"color","color"],[q,"background-color","background-color"],[q,"font-weight","font-weight"],[q,"font-style","font-style"]],u=[[l,"repeat","background-repeat"]],t=[[q,"background-color","background-color"],[q,"text-align","text-align"],[q,"text-indent","text-indent"],[q,"padding","padding"],[q,"padding-left","padding-left"],[q,"padding-right","padding-right"],[q,"padding-top","padding-top"],[q,"padding-bottom","padding-bottom"],[q,"border-left","border-left"],[q,"border-right",
+"border-right"],[q,"border-top","border-top"],[q,"border-bottom","border-bottom"],[q,"margin","margin"],[q,"margin-left","margin-left"],[q,"margin-right","margin-right"],[q,"margin-top","margin-top"],[q,"margin-bottom","margin-bottom"],[q,"border","border"]],A=[[q,"background-color","background-color"],[q,"min-height","min-height"],[r,"stroke","border"],[a,"stroke-color","border-color"],[a,"stroke-width","border-width"],[q,"border","border"],[q,"border-left","border-left"],[q,"border-right","border-right"],
+[q,"border-top","border-top"],[q,"border-bottom","border-bottom"]],I=[[q,"background-color","background-color"],[q,"border-left","border-left"],[q,"border-right","border-right"],[q,"border-top","border-top"],[q,"border-bottom","border-bottom"],[q,"border","border"]],K=[[l,"column-width","width"]],L=[[l,"row-height","height"],[q,"keep-together",null]],E=[[l,"width","width"],[q,"margin-left","margin-left"],[q,"margin-right","margin-right"],[q,"margin-top","margin-top"],[q,"margin-bottom","margin-bottom"]],
+N=[[q,"background-color","background-color"],[q,"padding","padding"],[q,"padding-left","padding-left"],[q,"padding-right","padding-right"],[q,"padding-top","padding-top"],[q,"padding-bottom","padding-bottom"],[q,"border","border"],[q,"border-left","border-left"],[q,"border-right","border-right"],[q,"border-top","border-top"],[q,"border-bottom","border-bottom"],[q,"margin","margin"],[q,"margin-left","margin-left"],[q,"margin-right","margin-right"],[q,"margin-top","margin-top"],[q,"margin-bottom","margin-bottom"]],
+O=[[q,"page-width","width"],[q,"page-height","height"]],D={border:!0,"border-left":!0,"border-right":!0,"border-top":!0,"border-bottom":!0,"stroke-width":!0},V={margin:!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"margin-bottom":!0},W={},J=odf.OdfUtils,R,P,aa,S=xmldom.XPath,fa=new core.CSSUnits;this.style2css=function(a,d,b,c,e){function h(a,d){m="@namespace "+a+" url("+d+");";try{b.insertRule(m,b.cssRules.length)}catch(c){}}var m,f,l;for(P=d;b.cssRules.length;)b.deleteRule(b.cssRules.length-
+1);odf.Namespaces.forEachPrefix(h);h("webodfhelper","urn:webodf:names:helper");W=c;R=a;aa=runtime.getWindow().getComputedStyle(document.body,null).getPropertyValue("font-size")||"12pt";for(l in z)if(z.hasOwnProperty(l))for(f in a=e[l],a)a.hasOwnProperty(f)&&p(b,l,f,a[f])}};
+(function(){function g(k,c){var b=this;this.getDistance=function(c){var n=b.x-c.x;c=b.y-c.y;return Math.sqrt(n*n+c*c)};this.getCenter=function(c){return new g((b.x+c.x)/2,(b.y+c.y)/2)};b.x=k;b.y=c}gui.ZoomHelper=function(){function k(a,b,c,e){a=e?"translate3d("+a+"px, "+b+"px, 0) scale3d("+c+", "+c+", 1)":"translate("+a+"px, "+b+"px) scale("+c+")";d.style.WebkitTransform=a;d.style.MozTransform=a;d.style.msTransform=a;d.style.OTransform=a;d.style.transform=a}function c(a){a?k(-m.x,-m.y,x,!0):(k(0,
+0,x,!0),k(0,0,x,!1))}function b(a){if(w&&I){var d=w.style.overflow,b=w.classList.contains("webodf-customScrollbars");a&&b||!a&&!b||(a?(w.classList.add("webodf-customScrollbars"),w.style.overflow="hidden",runtime.requestAnimationFrame(function(){w.style.overflow=d})):w.classList.remove("webodf-customScrollbars"))}}function f(){k(-m.x,-m.y,x,!0);w.scrollLeft=0;w.scrollTop=0;K=v.style.overflow;v.style.overflow="visible";b(!1)}function n(){k(0,0,x,!0);w.scrollLeft=m.x;w.scrollTop=m.y;v.style.overflow=
+K||"";b(!0)}function p(a){return new g(a.pageX-d.offsetLeft,a.pageY-d.offsetTop)}function r(a){if(h){m.x-=a.x-h.x;m.y-=a.y-h.y;var b=m;m=new g(Math.min(Math.max(b.x,d.offsetLeft),(d.offsetLeft+d.offsetWidth)*x-w.clientWidth),Math.min(Math.max(b.y,d.offsetTop),(d.offsetTop+d.offsetHeight)*x-w.clientHeight))}h=a}function q(a){var d=a.touches.length,b=0<d?p(a.touches[0]):null;a=1<d?p(a.touches[1]):null;b&&a?(y=b.getDistance(a),z=x,h=b.getCenter(a),f(),A=t.PINCH):b&&(h=b,A=t.SCROLL)}function e(a){var b=
+a.touches.length,e=0<b?p(a.touches[0]):null,b=1<b?p(a.touches[1]):null;if(e&&b)if(a.preventDefault(),A===t.SCROLL)A=t.PINCH,f(),y=e.getDistance(b);else{a=e.getCenter(b);e=e.getDistance(b)/y;r(a);var b=x,h=Math.min(4,d.offsetParent.clientWidth/d.offsetWidth);x=z*e;x=Math.min(Math.max(x,h),4);e=x/b;m.x+=(e-1)*(a.x+m.x);m.y+=(e-1)*(a.y+m.y);c(!0)}else e&&(A===t.PINCH?(A=t.SCROLL,n()):r(e))}function l(){A===t.PINCH&&(u.emit(gui.ZoomHelper.signalZoomChanged,x),n(),c(!1));A=t.NONE}function a(){w&&(w.removeEventListener("touchstart",
+q,!1),w.removeEventListener("touchmove",e,!1),w.removeEventListener("touchend",l,!1))}var d,m,h,y,x,z,w,v,u=new core.EventNotifier([gui.ZoomHelper.signalZoomChanged]),t={NONE:0,SCROLL:1,PINCH:2},A=t.NONE,I=runtime.getWindow().hasOwnProperty("ontouchstart"),K="";this.subscribe=function(a,d){u.subscribe(a,d)};this.unsubscribe=function(a,d){u.unsubscribe(a,d)};this.getZoomLevel=function(){return x};this.setZoomLevel=function(a){d&&(x=a,c(!1),u.emit(gui.ZoomHelper.signalZoomChanged,x))};this.destroy=
+function(d){a();b(!1);d()};this.setZoomableElement=function(h){a();d=h;w=d.offsetParent;v=d.parentNode;c(!1);w&&(w.addEventListener("touchstart",q,!1),w.addEventListener("touchmove",e,!1),w.addEventListener("touchend",l,!1));b(!0)};z=x=1;m=new g(0,0)};gui.ZoomHelper.signalZoomChanged="zoomChanged"})();ops.Canvas=function(){};ops.Canvas.prototype.getZoomLevel=function(){};ops.Canvas.prototype.getElement=function(){};ops.Canvas.prototype.getSizer=function(){};ops.Canvas.prototype.getZoomHelper=function(){};
+(function(){function g(){function a(c){b=!0;runtime.setTimeout(function(){try{c()}catch(e){runtime.log(String(e)+"\n"+e.stack)}b=!1;0<d.length&&a(d.pop())},10)}var d=[],b=!1;this.clearQueue=function(){d.length=0};this.addToQueue=function(c){if(0===d.length&&!b)return a(c);d.push(c)}}function k(a){function d(){for(;0<b.cssRules.length;)b.deleteRule(0);b.insertRule("#shadowContent draw|page {display:none;}",0);b.insertRule("office|presentation draw|page {display:none;}",1);b.insertRule("#shadowContent draw|page:nth-of-type("+
+c+") {display:block;}",2);b.insertRule("office|presentation draw|page:nth-of-type("+c+") {display:block;}",3)}var b=a.sheet,c=1;this.showFirstPage=function(){c=1;d()};this.showNextPage=function(){c+=1;d()};this.showPreviousPage=function(){1<c&&(--c,d())};this.showPage=function(a){0<a&&(c=a,d())};this.css=a;this.destroy=function(d){a.parentNode.removeChild(a);d()}}function c(a){a=a.sheet;for(var d=a.cssRules;d.length;)a.deleteRule(d.length-1)}function b(a,d,b){var c=new odf.Style2CSS,e=new odf.ListStyleToCss;
+b=b.sheet;var h=(new odf.StyleTree(a.rootElement.styles,a.rootElement.automaticStyles)).getStyleTree();c.style2css(a.getDocumentType(),a.rootElement,b,d.getFontMap(),h);e.applyListStyles(b,h,a.rootElement.body)}function f(a,d){(new odf.FontLoader).loadFonts(a,d.sheet)}function n(a,d,b){var c=null;a=a.rootElement.body.getElementsByTagNameNS(L,b+"-decl");b=d.getAttributeNS(L,"use-"+b+"-name");var e;if(b&&0<a.length)for(d=0;d<a.length;d+=1)if(e=a[d],e.getAttributeNS(L,"name")===b){c=e.textContent;break}return c}
+function p(a,d,b,c){var e=a.ownerDocument;d=N.getElementsByTagNameNS(a,d,b);for(a=0;a<d.length;a+=1)N.removeAllChildNodes(d[a]),c&&(b=d[a],b.appendChild(e.createTextNode(c)))}function r(a,d,b){d.setAttributeNS("urn:webodf:names:helper","styleid",a);var c,e=d.getAttributeNS(I,"anchor-type"),h=d.getAttributeNS(t,"x"),m=d.getAttributeNS(t,"y"),f=d.getAttributeNS(t,"width"),l=d.getAttributeNS(t,"height"),n=d.getAttributeNS(w,"min-height"),g=d.getAttributeNS(w,"min-width");if("as-char"===e)c="display: inline-block;";
+else if(e||h||m)c="position: absolute;";else if(f||l||n||g)c="display: block;";h&&(c+="left: "+h+";");m&&(c+="top: "+m+";");f&&(c+="width: "+f+";");l&&(c+="height: "+l+";");n&&(c+="min-height: "+n+";");g&&(c+="min-width: "+g+";");c&&(c="draw|"+d.localName+'[webodfhelper|styleid="'+a+'"] {'+c+"}",b.insertRule(c,b.cssRules.length))}function q(a){for(a=a.firstChild;a;){if(a.namespaceURI===v&&"binary-data"===a.localName)return"data:image/png;base64,"+a.textContent.replace(/[\r\n\s]/g,"");a=a.nextSibling}return""}
+function e(a,d,b,c){function e(d){d&&(d='draw|image[webodfhelper|styleid="'+a+'"] {'+("background-image: url("+d+");")+"}",c.insertRule(d,c.cssRules.length))}function h(a){e(a.url)}b.setAttributeNS("urn:webodf:names:helper","styleid",a);var m=b.getAttributeNS(K,"href"),f;if(m)try{f=d.getPart(m),f.onchange=h,f.load()}catch(l){runtime.log("slight problem: "+String(l))}else m=q(b),e(m)}function l(a){var d=a.ownerDocument;N.getElementsByTagNameNS(a,I,"line-break").forEach(function(a){a.hasChildNodes()||
+a.appendChild(d.createElement("br"))})}function a(a){var d=a.ownerDocument;N.getElementsByTagNameNS(a,I,"s").forEach(function(a){var b,c;N.removeAllChildNodes(a);a.appendChild(d.createTextNode(" "));c=parseInt(a.getAttributeNS(I,"c"),10);if(1<c)for(a.removeAttributeNS(I,"c"),b=1;b<c;b+=1)a.parentNode.insertBefore(a.cloneNode(!0),a)})}function d(a){N.getElementsByTagNameNS(a,I,"tab").forEach(function(a){a.textContent="\t"})}function m(a,d){function b(a,c){var m=f.documentElement.namespaceURI;"video/"===
+c.substr(0,6)?(e=f.createElementNS(m,"video"),e.setAttribute("controls","controls"),h=f.createElementNS(m,"source"),a&&h.setAttribute("src",a),h.setAttribute("type",c),e.appendChild(h),d.parentNode.appendChild(e)):d.innerHtml="Unrecognised Plugin"}function c(a){b(a.url,a.mimetype)}var e,h,m,f=d.ownerDocument,l;if(m=d.getAttributeNS(K,"href"))try{l=a.getPart(m),l.onchange=c,l.load()}catch(n){runtime.log("slight problem: "+String(n))}else runtime.log("using MP4 data fallback"),m=q(d),b(m,"video/mp4")}
+function h(a){var d=a.getElementsByTagName("head")[0],b,c;b=a.styleSheets.length;for(c=d.firstElementChild;c&&("style"!==c.localName||!c.hasAttribute("webodfcss"));)c=c.nextElementSibling;if(c)return b=parseInt(c.getAttribute("webodfcss"),10),c.setAttribute("webodfcss",b+1),c;"string"===String(typeof webodf_css)?b=webodf_css:(c="webodf.css",runtime.currentDirectory&&(c=runtime.currentDirectory(),0<c.length&&"/"!==c.substr(-1)&&(c+="/"),c+="../webodf.css"),b=runtime.readFileSync(c,"utf-8"));c=a.createElementNS(d.namespaceURI,
+"style");c.setAttribute("media","screen, print, handheld, projection");c.setAttribute("type","text/css");c.setAttribute("webodfcss","1");c.appendChild(a.createTextNode(b));d.appendChild(c);return c}function y(a){var d=parseInt(a.getAttribute("webodfcss"),10);1===d?a.parentNode.removeChild(a):a.setAttribute("count",d-1)}function x(a){var d=a.getElementsByTagName("head")[0],b=a.createElementNS(d.namespaceURI,"style"),c="";b.setAttribute("type","text/css");b.setAttribute("media","screen, print, handheld, projection");
+odf.Namespaces.forEachPrefix(function(a,d){c+="@namespace "+a+" url("+d+");\n"});c+="@namespace webodfhelper url(urn:webodf:names:helper);\n";b.appendChild(a.createTextNode(c));d.appendChild(b);return b}var z=odf.Namespaces.drawns,w=odf.Namespaces.fons,v=odf.Namespaces.officens,u=odf.Namespaces.stylens,t=odf.Namespaces.svgns,A=odf.Namespaces.tablens,I=odf.Namespaces.textns,K=odf.Namespaces.xlinkns,L=odf.Namespaces.presentationns,E=xmldom.XPath,N=core.DomUtils;odf.OdfCanvas=function(q,D){function t(a,
+d,b){function c(a,d,b,h){na.addToQueue(function(){e(a,d,b,h)})}var h,m;h=d.getElementsByTagNameNS(z,"image");for(d=0;d<h.length;d+=1)m=h.item(d),c("image"+String(d),a,m,b)}function W(a,d){function b(a,d){na.addToQueue(function(){m(a,d)})}var c,e,h;e=d.getElementsByTagNameNS(z,"plugin");for(c=0;c<e.length;c+=1)h=e.item(c),b(a,h)}function w(){var a;a=U.firstChild;var d=ea.getZoomLevel();a&&(U.style.WebkitTransformOrigin="0% 0%",U.style.MozTransformOrigin="0% 0%",U.style.msTransformOrigin="0% 0%",U.style.OTransformOrigin=
+"0% 0%",U.style.transformOrigin="0% 0%",M&&((a=M.getMinimumHeightForAnnotationPane())?U.style.minHeight=a:U.style.removeProperty("min-height")),q.style.width=Math.round(d*U.offsetWidth)+"px",q.style.height=Math.round(d*U.offsetHeight)+"px",q.style.display="inline-block")}function K(b,c){var e=ca.sheet;N.removeAllChildNodes(q);U=ha.createElementNS(q.namespaceURI,"div");U.style.display="inline-block";U.style.background="white";U.style.setProperty("float","left","important");U.appendChild(c);q.appendChild(U);
+ga=ha.createElementNS(q.namespaceURI,"div");ga.id="annotationsPane";X=ha.createElementNS(q.namespaceURI,"div");X.id="shadowContent";X.style.position="absolute";X.style.top=0;X.style.left=0;b.getContentElement().appendChild(X);var h=c.body,m,f=[],g;for(m=h.firstElementChild;m&&m!==h;)if(m.namespaceURI===z&&(f[f.length]=m),m.firstElementChild)m=m.firstElementChild;else{for(;m&&m!==h&&!m.nextElementSibling;)m=m.parentNode;m&&m.nextElementSibling&&(m=m.nextElementSibling)}for(g=0;g<f.length;g+=1)m=f[g],
+r("frame"+String(g),m,e);f=E.getODFElementsWithXPath(h,".//*[*[@text:anchor-type='paragraph']]",odf.Namespaces.lookupNamespaceURI);for(m=0;m<f.length;m+=1)h=f[m],h.setAttributeNS&&h.setAttributeNS("urn:webodf:names:helper","containsparagraphanchor",!0);h=Z;m=X;var k,D,y,x,w=0,J;g=b.rootElement.ownerDocument;if((f=c.body.firstElementChild)&&f.namespaceURI===v&&("presentation"===f.localName||"drawing"===f.localName))for(f=f.firstElementChild;f;){if(k=(k=f.getAttributeNS(z,"master-page-name"))?h.getMasterPageElement(k):
+null){D=f.getAttributeNS("urn:webodf:names:helper","styleid");y=g.createElementNS(z,"draw:page");J=k.firstElementChild;for(w=0;J;)"true"!==J.getAttributeNS(L,"placeholder")&&(x=J.cloneNode(!0),y.appendChild(x)),J=J.nextElementSibling,w+=1;J=x=w=void 0;for(var B=N.getElementsByTagNameNS(y,z,"frame"),w=0;w<B.length;w+=1)x=B[w],(J=x.getAttributeNS(L,"class"))&&!/^(date-time|footer|header|page-number)$/.test(J)&&x.parentNode.removeChild(x);x=N.getElementsByTagNameNS(y,z,"*");for(w=0;w<x.length;w+=1)r(D+
+"_"+w,x[w],e);m.appendChild(y);w=String(m.getElementsByTagNameNS(z,"page").length);p(y,I,"page-number",w);p(y,L,"header",n(b,f,"header"));p(y,L,"footer",n(b,f,"footer"));r(D,y,e);y.setAttributeNS("urn:webodf:names:helper","page-style-name",f.getAttributeNS(z,"style-name"));y.setAttributeNS(z,"draw:master-page-name",k.getAttributeNS(u,"name"))}f=f.nextElementSibling}h=q.namespaceURI;f=N.getElementsByTagNameNS(c.body,A,"table-cell");for(m=0;m<f.length;m+=1)g=f[m],g.hasAttributeNS(A,"number-columns-spanned")&&
+g.setAttributeNS(h,"colspan",g.getAttributeNS(A,"number-columns-spanned")),g.hasAttributeNS(A,"number-rows-spanned")&&g.setAttributeNS(h,"rowspan",g.getAttributeNS(A,"number-rows-spanned"));l(c.body);a(c.body);d(c.body);t(b,c.body,e);W(b,c.body);U.insertBefore(X,U.firstChild);ea.setZoomableElement(U)}function P(a){B?(ga.parentNode||U.appendChild(ga),M&&M.forgetAnnotations(),M=new gui.AnnotationViewManager(fa,a.body,ga,Y),a=N.getElementsByTagNameNS(a.body,v,"annotation"),M.addAnnotations(a),w()):ga.parentNode&&
+(U.removeChild(ga),M.forgetAnnotations(),w())}function aa(a){function d(){c(F);c(ja);c(ca);N.removeAllChildNodes(q);q.style.display="inline-block";var e=C.rootElement;q.ownerDocument.importNode(e,!0);Z.setOdfContainer(C);f(C,F);b(C,Z,ja);K(C,e);P(e);a||na.addToQueue(function(){var a=[C];if(da.hasOwnProperty("statereadychange")){var d=da.statereadychange,b;for(b=0;b<d.length;b+=1)d[b].apply(null,a)}})}C.state===odf.OdfContainer.DONE?d():(runtime.log("WARNING: refreshOdf called but ODF was not DONE."),
+qa=runtime.setTimeout(function T(){C.state===odf.OdfContainer.DONE?d():(runtime.log("will be back later..."),qa=runtime.setTimeout(T,500))},100))}function S(a){na.clearQueue();N.removeAllChildNodes(q);q.appendChild(q.ownerDocument.createTextNode(runtime.tr("Loading")+a+"..."));q.removeAttribute("style");C=new odf.OdfContainer(a,function(a){C=a;aa(!1)})}runtime.assert(null!==q&&void 0!==q,"odf.OdfCanvas constructor needs DOM element");runtime.assert(null!==q.ownerDocument&&void 0!==q.ownerDocument,
+"odf.OdfCanvas constructor needs DOM");var fa=this,ha=q.ownerDocument,C,Z=new odf.Formatting,ba,U=null,ga=null,B=!1,Y=!1,M=null,Q,F,ja,ca,X,da={},qa,la,ia=!1,ma=!1,na=new g,ea=new gui.ZoomHelper,ka=D||new gui.SingleScrollViewport(q.parentNode);this.refreshCSS=function(){ia=!0;la.trigger()};this.refreshSize=function(){la.trigger()};this.odfContainer=function(){return C};this.setOdfContainer=function(a,d){C=a;aa(!0===d)};this.load=this.load=S;this.save=function(a){C.save(a)};this.addListener=function(a,
+d){switch(a){case "click":var b=a;q.addEventListener?q.addEventListener(b,d,!1):q.attachEvent?q.attachEvent("on"+b,d):q["on"+b]=d;break;default:b=da.hasOwnProperty(a)?da[a]:da[a]=[],d&&-1===b.indexOf(d)&&b.push(d)}};this.getFormatting=function(){return Z};this.getAnnotationViewManager=function(){return M};this.refreshAnnotations=function(){P(C.rootElement)};this.rerenderAnnotations=function(){M&&(ma=!0,la.trigger())};this.getSizer=function(){return U};this.enableAnnotations=function(a,d){a!==B&&(B=
+a,Y=d,C&&P(C.rootElement))};this.addAnnotation=function(a){M&&(M.addAnnotations([a]),w())};this.forgetAnnotation=function(a){M&&(M.forgetAnnotation(a),w())};this.getZoomHelper=function(){return ea};this.setZoomLevel=function(a){ea.setZoomLevel(a)};this.getZoomLevel=function(){return ea.getZoomLevel()};this.fitToContainingElement=function(a,d){var b=ea.getZoomLevel(),c=q.offsetHeight/b,b=a/(q.offsetWidth/b);d/c<b&&(b=d/c);ea.setZoomLevel(b)};this.fitToWidth=function(a){var d=q.offsetWidth/ea.getZoomLevel();
+ea.setZoomLevel(a/d)};this.fitSmart=function(a,d){var b,c;c=ea.getZoomLevel();b=q.offsetWidth/c;c=q.offsetHeight/c;b=a/b;void 0!==d&&d/c<b&&(b=d/c);ea.setZoomLevel(Math.min(1,b))};this.fitToHeight=function(a){var d=q.offsetHeight/ea.getZoomLevel();ea.setZoomLevel(a/d)};this.showFirstPage=function(){ba.showFirstPage()};this.showNextPage=function(){ba.showNextPage()};this.showPreviousPage=function(){ba.showPreviousPage()};this.showPage=function(a){ba.showPage(a);w()};this.getElement=function(){return q};
+this.getViewport=function(){return ka};this.addCssForFrameWithImage=function(a){var d=a.getAttributeNS(z,"name"),b=a.firstElementChild;r(d,a,ca.sheet);b&&e(d+"img",C,b,ca.sheet)};this.destroy=function(a){var d=ha.getElementsByTagName("head")[0],b=[ba.destroy,la.destroy];runtime.clearTimeout(qa);ga&&ga.parentNode&&ga.parentNode.removeChild(ga);ea.destroy(function(){U&&(q.removeChild(U),U=null)});y(Q);d.removeChild(F);d.removeChild(ja);d.removeChild(ca);core.Async.destroyAll(b,a)};Q=h(ha);ba=new k(x(ha));
+F=x(ha);ja=x(ha);ca=x(ha);la=core.Task.createRedrawTask(function(){ia&&(b(C,Z,ja),ia=!1);ma&&(M&&M.rerenderAnnotations(),ma=!1);w()});ea.subscribe(gui.ZoomHelper.signalZoomChanged,w)}})();
+odf.StepUtils=function(){this.getContentBounds=function(g){var k=g.container(),c,b;runtime.assert(g.isStep(),"Step iterator must be on a step");k.nodeType===Node.TEXT_NODE&&0<g.offset()?c=g.offset():(k=g.leftNode())&&k.nodeType===Node.TEXT_NODE&&(c=k.length);k&&(k.nodeType===Node.TEXT_NODE?(runtime.assert(0<c,"Empty text node found"),b={container:k,startOffset:c-1,endOffset:c}):b={container:k,startOffset:0,endOffset:k.childNodes.length});return b}};ops.MemberProperties=function(){};
+ops.Member=function(g,k){var c=new ops.MemberProperties;this.getMemberId=function(){return g};this.getProperties=function(){return c};this.setProperties=function(b){Object.keys(b).forEach(function(f){c[f]=b[f]})};this.removeProperties=function(b){Object.keys(b).forEach(function(b){"fullName"!==b&&"color"!==b&&"imageUrl"!==b&&c.hasOwnProperty(b)&&delete c[b]})};runtime.assert(Boolean(g),"No memberId was supplied!");k.fullName||(k.fullName=runtime.tr("Unknown Author"));k.color||(k.color="black");k.imageUrl||
+(k.imageUrl="avatar-joe.png");c=k};ops.Document=function(){};ops.Document.prototype.getMemberIds=function(){};ops.Document.prototype.removeCursor=function(g){};ops.Document.prototype.getDocumentElement=function(){};ops.Document.prototype.getRootNode=function(){};ops.Document.prototype.getDOMDocument=function(){};ops.Document.prototype.cloneDocumentElement=function(){};ops.Document.prototype.setDocumentElement=function(g){};ops.Document.prototype.subscribe=function(g,k){};
+ops.Document.prototype.unsubscribe=function(g,k){};ops.Document.prototype.getCanvas=function(){};ops.Document.prototype.createRootFilter=function(g){};ops.Document.prototype.createPositionIterator=function(g){};ops.Document.prototype.hasCursor=function(g){};ops.Document.signalCursorAdded="cursor/added";ops.Document.signalCursorRemoved="cursor/removed";ops.Document.signalCursorMoved="cursor/moved";ops.Document.signalMemberAdded="member/added";ops.Document.signalMemberUpdated="member/updated";
+ops.Document.signalMemberRemoved="member/removed";
+ops.OdtCursor=function(g,k){var c=this,b={},f,n,p=new core.EventNotifier([ops.OdtCursor.signalCursorUpdated]);this.removeFromDocument=function(){n.remove()};this.subscribe=function(b,c){p.subscribe(b,c)};this.unsubscribe=function(b,c){p.unsubscribe(b,c)};this.getMemberId=function(){return g};this.getNode=function(){return n.getNode()};this.getAnchorNode=function(){return n.getAnchorNode()};this.getSelectedRange=function(){return n.getSelectedRange()};this.setSelectedRange=function(b,f){n.setSelectedRange(b,
+f);p.emit(ops.OdtCursor.signalCursorUpdated,c)};this.hasForwardSelection=function(){return n.hasForwardSelection()};this.getDocument=function(){return k};this.getSelectionType=function(){return f};this.setSelectionType=function(c){b.hasOwnProperty(c)?f=c:runtime.log("Invalid selection type: "+c)};this.resetSelectionType=function(){c.setSelectionType(ops.OdtCursor.RangeSelection)};n=new core.Cursor(k.getDOMDocument(),g);b[ops.OdtCursor.RangeSelection]=!0;b[ops.OdtCursor.RegionSelection]=!0;c.resetSelectionType()};
+ops.OdtCursor.RangeSelection="Range";ops.OdtCursor.RegionSelection="Region";ops.OdtCursor.signalCursorUpdated="cursorUpdated";
+(function(){var g=0;ops.StepsCache=function(k,c,b){function f(a,d){var c=this;this.nodeId=a;this.steps=-1;this.node=d;this.previousBookmark=this.nextBookmark=null;this.setIteratorPosition=function(a){a.setPositionBeforeElement(d);b(c.steps,a)}}function n(a,d,c){var e=this;this.nodeId=a;this.steps=d;this.node=c;this.previousBookmark=this.nextBookmark=null;this.setIteratorPosition=function(a){a.setUnfilteredPosition(c,0);b(e.steps,a)}}function p(a,d){var b="["+a.nodeId;d&&(b+=" => "+d.nodeId);return b+
+"]"}function r(){if(!0===ops.StepsCache.ENABLE_CACHE_VERIFICATION){for(var a=x,d,b,c,e=new core.LoopWatchDog(0,1E5),h={};a;){e.check();(d=a.previousBookmark)?runtime.assert(d.nextBookmark===a,"Broken bookmark link to previous @"+p(d,a)):(runtime.assert(a===x,"Broken bookmark link @"+p(a)),runtime.assert(void 0===z||x===x||x.steps<=z,"Base point is damaged @"+p(a)));(b=a.nextBookmark)&&runtime.assert(b.previousBookmark===a,"Broken bookmark link to next @"+p(a,b));if(void 0===z||a===x||a.steps<=z)runtime.assert(y.containsNode(k,
+a.node),"Disconnected node is being reported as undamaged @"+p(a)),d&&(c=a.node.compareDocumentPosition(d.node),runtime.assert(0===c||0!==(c&v),"Bookmark order with previous does not reflect DOM order @"+p(d,a))),b&&y.containsNode(k,b.node)&&(c=a.node.compareDocumentPosition(b.node),runtime.assert(0===c||0!==(c&w),"Bookmark order with next does not reflect DOM order @"+p(a,b)));a=a.nextBookmark}Object.keys(m).forEach(function(a){var d=m[a];(void 0===z||a<=z)&&runtime.assert(d.steps<=a,"Bookmark step of "+
+d.steps+" exceeds cached step lookup for "+a+" @"+p(d));runtime.assert(!1===h.hasOwnProperty(d.nodeId),"Bookmark "+p(d)+" appears twice in cached step lookup at steps "+h[d.nodeId]+" and "+a);h[d.nodeId]=a})}}function q(a){var d="";a.nodeType===Node.ELEMENT_NODE&&(d=a.getAttributeNS("urn:webodf:names:steps","nodeId")||"");return d}function e(a){var d=g.toString();a.setAttributeNS("urn:webodf:names:steps","nodeId",d);g+=1;return d}function l(a){var d,b,e=new core.LoopWatchDog(0,1E4);void 0!==z&&a>
+z&&(a=z);for(d=Math.floor(a/c)*c;!b&&0<=d;)b=m[d],d-=c;for(b=b||x;b.nextBookmark&&b.nextBookmark.steps<=a;)e.check(),b=b.nextBookmark;runtime.assert(-1===a||b.steps<=a,"Bookmark @"+p(b)+" at step "+b.steps+" exceeds requested step of "+a);return b}function a(a){a.previousBookmark&&(a.previousBookmark.nextBookmark=a.nextBookmark);a.nextBookmark&&(a.nextBookmark.previousBookmark=a.previousBookmark)}function d(a){for(var d,b=null;!b&&a&&a!==k;)(d=q(a))&&(b=h[d])&&b.node!==a&&(runtime.log("Cloned node detected. Creating new bookmark"),
+b=null,a.removeAttributeNS("urn:webodf:names:steps","nodeId")),a=a.parentNode;return b}var m={},h={},y=core.DomUtils,x,z,w=Node.DOCUMENT_POSITION_FOLLOWING,v=Node.DOCUMENT_POSITION_PRECEDING;this.updateBookmark=function(d,b){var g,n=Math.ceil(d/c)*c,p,v,E;if(void 0!==z&&z<d){p=l(z);for(v=p.nextBookmark;v&&v.steps<=d;)g=v.nextBookmark,E=Math.ceil(v.steps/c)*c,m[E]===v&&delete m[E],y.containsNode(k,v.node)?v.steps=d+1:(a(v),delete h[v.nodeId]),v=g;z=d}else p=l(d);v=q(b)||e(b);g=h[v];g?g.node!==b&&(runtime.log("Cloned node detected. Creating new bookmark"),
+v=e(b),g=h[v]=new f(v,b)):g=h[v]=new f(v,b);v=g;v.steps!==d&&(g=Math.ceil(v.steps/c)*c,g!==n&&m[g]===v&&delete m[g],v.steps=d);if(p!==v&&p.nextBookmark!==v){if(p.steps===v.steps)for(;0!==(v.node.compareDocumentPosition(p.node)&w)&&p!==x;)p=p.previousBookmark;p!==v&&p.nextBookmark!==v&&(a(v),g=p.nextBookmark,v.nextBookmark=p.nextBookmark,v.previousBookmark=p,p.nextBookmark=v,g&&(g.previousBookmark=v))}p=m[n];if(!p||v.steps>p.steps)m[n]=v;r()};this.setToClosestStep=function(a,d){var b;r();b=l(a);b.setIteratorPosition(d);
+return b.steps};this.setToClosestDomPoint=function(a,b,c){var e,h;r();if(a===k&&0===b)e=x;else if(a===k&&b===k.childNodes.length)for(h in e=x,m)m.hasOwnProperty(h)&&(a=m[h],a.steps>e.steps&&(e=a));else if(e=d(a.childNodes.item(b)||a),!e)for(c.setUnfilteredPosition(a,b);!e&&c.previousNode();)e=d(c.getCurrentNode());e=e||x;void 0!==z&&e.steps>z&&(e=l(z));e.setIteratorPosition(c);return e.steps};this.damageCacheAfterStep=function(a){0>a&&(a=-1);void 0===z?z=a:a<z&&(z=a);r()};(function(){var a=q(k)||
+e(k);x=new n(a,0,k)})()};ops.StepsCache.ENABLE_CACHE_VERIFICATION=!1;ops.StepsCache.Bookmark=function(){};ops.StepsCache.Bookmark.prototype.setIteratorPosition=function(g){}})();
+(function(){ops.OdtStepsTranslator=function(g,k,c,b){function f(a,b,c){var e=b.getCurrentNode();b.isBeforeNode()&&r.isParagraph(e)&&(c||(a+=1),p.updateBookmark(a,e))}function n(d,b){if(!b||c.acceptPosition(d)===e)return!0;for(;d.previousPosition();)if(c.acceptPosition(d)===e){if(b(l,d.container(),d.unfilteredDomOffset()))return!0;break}for(;d.nextPosition();)if(c.acceptPosition(d)===e){if(b(a,d.container(),d.unfilteredDomOffset()))return!0;break}return!1}var p,r=odf.OdfUtils,q=core.DomUtils,e=core.PositionFilter.FilterResult.FILTER_ACCEPT,
+l=core.StepDirection.PREVIOUS,a=core.StepDirection.NEXT;this.convertStepsToDomPoint=function(a){var b,h;if(isNaN(a))throw new TypeError("Requested steps is not numeric ("+a+")");if(0>a)throw new RangeError("Requested steps is negative ("+a+")");for(b=p.setToClosestStep(a,k);b<a&&k.nextPosition();)(h=c.acceptPosition(k)===e)&&(b+=1),f(b,k,h);if(b!==a)throw new RangeError("Requested steps ("+a+") exceeds available steps ("+b+")");return{node:k.container(),offset:k.unfilteredDomOffset()}};this.convertDomPointToSteps=
+function(a,b,h){var l;q.containsNode(g,a)||(b=0>q.comparePoints(g,0,a,b),a=g,b=b?0:g.childNodes.length);k.setUnfilteredPosition(a,b);n(k,h)||k.setUnfilteredPosition(a,b);h=k.container();b=k.unfilteredDomOffset();a=p.setToClosestDomPoint(h,b,k);if(0>q.comparePoints(k.container(),k.unfilteredDomOffset(),h,b))return 0<a?a-1:a;for(;(k.container()!==h||k.unfilteredDomOffset()!==b)&&k.nextPosition();)(l=c.acceptPosition(k)===e)&&(a+=1),f(a,k,l);return a+0};this.prime=function(){var a,b;for(a=p.setToClosestStep(0,
+k);k.nextPosition();)(b=c.acceptPosition(k)===e)&&(a+=1),f(a,k,b)};this.handleStepsInserted=function(a){p.damageCacheAfterStep(a.position)};this.handleStepsRemoved=function(a){p.damageCacheAfterStep(a.position-1)};p=new ops.StepsCache(g,b,function(a,b){do{if(c.acceptPosition(b)===e){f(a,b,!0);break}f(a-1,b,!1)}while(b.nextPosition())})}})();ops.Operation=function(){};ops.Operation.prototype.init=function(g){};ops.Operation.prototype.execute=function(g){};ops.Operation.prototype.spec=function(){};
+ops.TextPositionFilter=function(){function g(b,c){for(;b&&c(b)!==n;)b=b.previousSibling;return b}function k(b,f,e,l){var a;if(f){if(c.isInlineRoot(f)&&c.isGroupingElement(e))return p;l=c.lookLeftForCharacter(f);if(1===l||2===l&&(c.scanRightForAnyCharacter(e)||c.scanRightForAnyCharacter(c.nextNode(b))))return n}else if(c.isGroupingElement(b)&&c.isInlineRoot(g(b.previousSibling,l)))return n;l=null===f&&c.isParagraph(b);a=c.lookRightForCharacter(e);if(l)return a?n:c.scanRightForAnyCharacter(e)?p:n;if(!a)return p;
+f=f||c.previousNode(b);return c.scanLeftForAnyCharacter(f)?p:n}var c=odf.OdfUtils,b=Node.ELEMENT_NODE,f=Node.TEXT_NODE,n=core.PositionFilter.FilterResult.FILTER_ACCEPT,p=core.PositionFilter.FilterResult.FILTER_REJECT;this.acceptPosition=function(g){var q=g.container(),e=q.nodeType,l,a,d;if(e!==b&&e!==f)return p;if(e===f){e=g.unfilteredDomOffset();l=q.data;runtime.assert(e!==l.length,"Unexpected offset.");if(0<e){g=l[e-1];if(!c.isODFWhitespace(g))return n;if(1<e)if(g=l[e-2],!c.isODFWhitespace(g))d=
+n;else{if(!c.isODFWhitespace(l.substr(0,e)))return p}else a=c.previousNode(q),c.scanLeftForNonSpace(a)&&(d=n);if(d===n)return c.isTrailingWhitespace(q,e)?p:n;g=l[e];return c.isODFWhitespace(g)?p:c.scanLeftForAnyCharacter(c.previousNode(q))?p:n}a=g.leftNode();d=q;q=q.parentNode;d=k(q,a,d,g.getNodeFilter())}else c.isGroupingElement(q)?(a=g.leftNode(),d=g.rightNode(),d=k(q,a,d,g.getNodeFilter())):d=p;return d}};
+function RootFilter(g,k,c){var b=core.PositionFilter.FilterResult.FILTER_ACCEPT,f=core.PositionFilter.FilterResult.FILTER_REJECT;this.acceptPosition=function(n){n=n.container();var p;p="string"===typeof g?k[g].getNode():g;return c(n)===c(p)?b:f}}
+ops.OdtDocument=function(g){function k(a){return new core.PositionIterator(a,A,L,!1)}function c(){var a=g.odfContainer().getContentElement(),d=a&&a.localName;runtime.assert("text"===d,"Unsupported content element type '"+d+"' for OdtDocument");return a}function b(){return a.getDocumentElement().ownerDocument}function f(a){for(;a&&!(a.namespaceURI===odf.Namespaces.officens&&"text"===a.localName||a.namespaceURI===odf.Namespaces.officens&&"annotation"===a.localName);)a=a.parentNode;return a}function n(a,
+d,b,c){c=k(c);var e;1===b.length?e=b[0]:(e=new core.PositionFilterChain,b.forEach(e.addFilter));b=new core.StepIterator(e,c);b.setPosition(a,d);return b}function p(a){var d=k(c());a=u.convertStepsToDomPoint(a);d.setUnfilteredPosition(a.node,a.offset);return d}function r(a){return a===w}function q(d){var b=d.spec(),c=b.memberid,e=(new Date(b.timestamp)).toISOString(),b=g.odfContainer();d.isEdit&&(c=a.getMember(c).getProperties().fullName,b.setMetadata({"dc:creator":c,"dc:date":e},null),c={setProperties:{"dc:creator":c,
+"dc:date":e},removedProperties:[]},t||(c.setProperties["meta:editing-cycles"]=b.incrementEditingCycles(),b.setMetadata(null,["meta:editing-duration","meta:document-statistic"])),t=d,a.emit(ops.OdtDocument.signalMetadataUpdated,c))}function e(a){var b,c=[],e,f=2;runtime.assert(a.isStep(),"positionIterator is not at a step");do{if(b=d.getContentBounds(a))if(b=b.container,m.isDowngradableSpaceElement(b)){for(e=b.lastChild;b.firstChild;)c.push(b.firstChild),b.parentNode.insertBefore(b.firstChild,b);b.parentNode.removeChild(b);
+a.setPosition(e,e.nodeType===Node.TEXT_NODE?e.length:e.childNodes.length);a.roundToPreviousStep()}--f}while(0<f&&a.nextStep());c.forEach(h.normalizeTextNodes)}function l(a,d,b){a=a.childNodes.item(d)||a;return(a=m.getParagraphElement(a))&&h.containsNode(b,a)?a:b}var a=this,d,m=odf.OdfUtils,h=core.DomUtils,y={},x={},z=new core.EventNotifier([ops.Document.signalMemberAdded,ops.Document.signalMemberUpdated,ops.Document.signalMemberRemoved,ops.Document.signalCursorAdded,ops.Document.signalCursorRemoved,
+ops.Document.signalCursorMoved,ops.OdtDocument.signalParagraphChanged,ops.OdtDocument.signalParagraphStyleModified,ops.OdtDocument.signalCommonStyleCreated,ops.OdtDocument.signalCommonStyleDeleted,ops.OdtDocument.signalTableAdded,ops.OdtDocument.signalOperationStart,ops.OdtDocument.signalOperationEnd,ops.OdtDocument.signalProcessingBatchStart,ops.OdtDocument.signalProcessingBatchEnd,ops.OdtDocument.signalUndoStackChanged,ops.OdtDocument.signalStepsInserted,ops.OdtDocument.signalStepsRemoved,ops.OdtDocument.signalMetadataUpdated,
+ops.OdtDocument.signalAnnotationAdded]),w=core.StepDirection.NEXT,v,u,t,A=NodeFilter.SHOW_ALL,I=new gui.BlacklistNamespaceNodeFilter(["urn:webodf:names:cursor","urn:webodf:names:editinfo"]),K=new gui.OdfTextBodyNodeFilter,L=new core.NodeFilterChain([I,K]);this.createPositionIterator=k;this.getDocumentElement=function(){return g.odfContainer().rootElement};this.cloneDocumentElement=function(){var d=a.getDocumentElement(),b=g.getAnnotationViewManager();b&&b.forgetAnnotations();d=d.cloneNode(!0);g.refreshAnnotations();
+a.fixCursorPositions();return d};this.setDocumentElement=function(a){var d=g.odfContainer();z.unsubscribe(ops.OdtDocument.signalStepsInserted,u.handleStepsInserted);z.unsubscribe(ops.OdtDocument.signalStepsRemoved,u.handleStepsRemoved);d.setRootElement(a);g.setOdfContainer(d,!0);g.refreshCSS();a=c();u=new ops.OdtStepsTranslator(a,k(a),v,500);z.subscribe(ops.OdtDocument.signalStepsInserted,u.handleStepsInserted);z.subscribe(ops.OdtDocument.signalStepsRemoved,u.handleStepsRemoved)};this.getDOMDocument=
+b;this.getRootElement=f;this.createStepIterator=n;this.getIteratorAtPosition=p;this.convertCursorStepToDomPoint=function(a){return u.convertStepsToDomPoint(a)};this.convertDomPointToCursorStep=function(a,d,b){var c;b===w&&(c=r);return u.convertDomPointToSteps(a,d,c)};this.convertDomToCursorRange=function(a){var d;d=u.convertDomPointToSteps(a.anchorNode,a.anchorOffset);a=a.anchorNode===a.focusNode&&a.anchorOffset===a.focusOffset?d:u.convertDomPointToSteps(a.focusNode,a.focusOffset);return{position:d,
+length:a-d}};this.convertCursorToDomRange=function(a,d){var c=b().createRange(),e,h;e=u.convertStepsToDomPoint(a);d?(h=u.convertStepsToDomPoint(a+d),0<d?(c.setStart(e.node,e.offset),c.setEnd(h.node,h.offset)):(c.setStart(h.node,h.offset),c.setEnd(e.node,e.offset))):c.setStart(e.node,e.offset);return c};this.upgradeWhitespacesAtPosition=function(a){var b=p(a),b=new core.StepIterator(v,b),c,e=2;runtime.assert(b.isStep(),"positionIterator is not at a step (requested step: "+a+")");do{if(c=d.getContentBounds(b))if(a=
+c.container,c=c.startOffset,a.nodeType===Node.TEXT_NODE&&m.isSignificantWhitespace(a,c)){runtime.assert(" "===a.data[c],"upgradeWhitespaceToElement: textNode.data[offset] should be a literal space");var h=a.ownerDocument.createElementNS(odf.Namespaces.textns,"text:s"),f=a.parentNode,l=a;h.appendChild(a.ownerDocument.createTextNode(" "));1===a.length?f.replaceChild(h,a):(a.deleteData(c,1),0<c&&(c<a.length&&a.splitText(c),l=a.nextSibling),f.insertBefore(h,l));a=h;b.setPosition(a,a.childNodes.length);
+b.roundToPreviousStep()}--e}while(0<e&&b.nextStep())};this.downgradeWhitespaces=e;this.downgradeWhitespacesAtPosition=function(a){a=p(a);a=new core.StepIterator(v,a);e(a)};this.getTextNodeAtStep=function(d,c){var e=p(d),h=e.container(),m,f=0,l=null;h.nodeType===Node.TEXT_NODE?(m=h,f=e.unfilteredDomOffset(),0<m.length&&(0<f&&(m=m.splitText(f)),m.parentNode.insertBefore(b().createTextNode(""),m),m=m.previousSibling,f=0)):(m=b().createTextNode(""),f=0,h.insertBefore(m,e.rightNode()));if(c){if(y[c]&&
+a.getCursorPosition(c)===d){for(l=y[c].getNode();l.nextSibling&&"cursor"===l.nextSibling.localName;)l.parentNode.insertBefore(l.nextSibling,l);0<m.length&&m.nextSibling!==l&&(m=b().createTextNode(""),f=0);l.parentNode.insertBefore(m,l)}}else for(;m.nextSibling&&"cursor"===m.nextSibling.localName;)m.parentNode.insertBefore(m.nextSibling,m);for(;m.previousSibling&&m.previousSibling.nodeType===Node.TEXT_NODE;)e=m.previousSibling,e.appendData(m.data),f=e.length,m=e,m.parentNode.removeChild(m.nextSibling);
+for(;m.nextSibling&&m.nextSibling.nodeType===Node.TEXT_NODE;)e=m.nextSibling,m.appendData(e.data),m.parentNode.removeChild(e);return{textNode:m,offset:f}};this.fixCursorPositions=function(){Object.keys(y).forEach(function(d){var b=y[d],c=f(b.getNode()),e=a.createRootFilter(c),h,m,g,k=!1;g=b.getSelectedRange();h=l(g.startContainer,g.startOffset,c);m=n(g.startContainer,g.startOffset,[v,e],h);g.collapsed?c=m:(h=l(g.endContainer,g.endOffset,c),c=n(g.endContainer,g.endOffset,[v,e],h));m.isStep()&&c.isStep()?
+m.container()!==c.container()||m.offset()!==c.offset()||g.collapsed&&b.getAnchorNode()===b.getNode()||(k=!0,g.setStart(m.container(),m.offset()),g.collapse(!0)):(k=!0,runtime.assert(m.roundToClosestStep(),"No walkable step found for cursor owned by "+d),g.setStart(m.container(),m.offset()),runtime.assert(c.roundToClosestStep(),"No walkable step found for cursor owned by "+d),g.setEnd(c.container(),c.offset()));k&&(b.setSelectedRange(g,b.hasForwardSelection()),a.emit(ops.Document.signalCursorMoved,
+b))})};this.getCursorPosition=function(a){return(a=y[a])?u.convertDomPointToSteps(a.getNode(),0):0};this.getCursorSelection=function(a){a=y[a];var d=0,b=0;a&&(d=u.convertDomPointToSteps(a.getNode(),0),b=u.convertDomPointToSteps(a.getAnchorNode(),0));return{position:b,length:d-b}};this.getPositionFilter=function(){return v};this.getOdfCanvas=function(){return g};this.getCanvas=function(){return g};this.getRootNode=c;this.addMember=function(a){runtime.assert(void 0===x[a.getMemberId()],"This member already exists");
+x[a.getMemberId()]=a};this.getMember=function(a){return x.hasOwnProperty(a)?x[a]:null};this.removeMember=function(a){delete x[a]};this.getCursor=function(a){return y[a]};this.hasCursor=function(a){return y.hasOwnProperty(a)};this.getMemberIds=function(){return Object.keys(x)};this.addCursor=function(d){runtime.assert(Boolean(d),"OdtDocument::addCursor without cursor");var b=d.getMemberId(),c=a.convertCursorToDomRange(0,0);runtime.assert("string"===typeof b,"OdtDocument::addCursor has cursor without memberid");
+runtime.assert(!y[b],"OdtDocument::addCursor is adding a duplicate cursor with memberid "+b);d.setSelectedRange(c,!0);y[b]=d};this.removeCursor=function(d){var b=y[d];return b?(b.removeFromDocument(),delete y[d],a.emit(ops.Document.signalCursorRemoved,d),!0):!1};this.moveCursor=function(d,b,c,e){d=y[d];b=a.convertCursorToDomRange(b,c);d&&(d.setSelectedRange(b,0<=c),d.setSelectionType(e||ops.OdtCursor.RangeSelection))};this.getFormatting=function(){return g.getFormatting()};this.emit=function(a,d){z.emit(a,
+d)};this.subscribe=function(a,d){z.subscribe(a,d)};this.unsubscribe=function(a,d){z.unsubscribe(a,d)};this.createRootFilter=function(a){return new RootFilter(a,y,f)};this.close=function(a){a()};this.destroy=function(a){a()};(function(){var a=c();v=new ops.TextPositionFilter;d=new odf.StepUtils;u=new ops.OdtStepsTranslator(a,k(a),v,500);z.subscribe(ops.OdtDocument.signalStepsInserted,u.handleStepsInserted);z.subscribe(ops.OdtDocument.signalStepsRemoved,u.handleStepsRemoved);z.subscribe(ops.OdtDocument.signalOperationEnd,
+q);z.subscribe(ops.OdtDocument.signalProcessingBatchEnd,core.Task.processTasks)})()};ops.OdtDocument.signalParagraphChanged="paragraph/changed";ops.OdtDocument.signalTableAdded="table/added";ops.OdtDocument.signalCommonStyleCreated="style/created";ops.OdtDocument.signalCommonStyleDeleted="style/deleted";ops.OdtDocument.signalParagraphStyleModified="paragraphstyle/modified";ops.OdtDocument.signalOperationStart="operation/start";ops.OdtDocument.signalOperationEnd="operation/end";
+ops.OdtDocument.signalProcessingBatchStart="router/batchstart";ops.OdtDocument.signalProcessingBatchEnd="router/batchend";ops.OdtDocument.signalUndoStackChanged="undo/changed";ops.OdtDocument.signalStepsInserted="steps/inserted";ops.OdtDocument.signalStepsRemoved="steps/removed";ops.OdtDocument.signalMetadataUpdated="metadata/updated";ops.OdtDocument.signalAnnotationAdded="annotation/added";
+ops.OpAddAnnotation=function(){function g(b,c,e){var f=b.getTextNodeAtStep(e,k);f&&(b=f.textNode,e=b.parentNode,f.offset!==b.length&&b.splitText(f.offset),e.insertBefore(c,b.nextSibling),0===b.length&&e.removeChild(b))}var k,c,b,f,n,p;this.init=function(g){k=g.memberid;c=parseInt(g.timestamp,10);b=parseInt(g.position,10);f=void 0!==g.length?parseInt(g.length,10)||0:void 0;n=g.name};this.isEdit=!0;this.group=void 0;this.execute=function(r){var q=r.getCursor(k),e,l;p=r.getDOMDocument();var a=new Date(c),
+d,m,h;d=p.createElementNS(odf.Namespaces.officens,"office:annotation");d.setAttributeNS(odf.Namespaces.officens,"office:name",n);e=p.createElementNS(odf.Namespaces.dcns,"dc:creator");e.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",k);e.textContent=r.getMember(k).getProperties().fullName;l=p.createElementNS(odf.Namespaces.dcns,"dc:date");l.appendChild(p.createTextNode(a.toISOString()));a=p.createElementNS(odf.Namespaces.textns,"text:list");m=p.createElementNS(odf.Namespaces.textns,
+"text:list-item");h=p.createElementNS(odf.Namespaces.textns,"text:p");m.appendChild(h);a.appendChild(m);d.appendChild(e);d.appendChild(l);d.appendChild(a);void 0!==f&&(e=p.createElementNS(odf.Namespaces.officens,"office:annotation-end"),e.setAttributeNS(odf.Namespaces.officens,"office:name",n),d.annotationEndElement=e,g(r,e,b+f));g(r,d,b);r.emit(ops.OdtDocument.signalStepsInserted,{position:b});q&&(e=p.createRange(),l=d.getElementsByTagNameNS(odf.Namespaces.textns,"p")[0],e.selectNodeContents(l),
+q.setSelectedRange(e,!1),q.setSelectionType(ops.OdtCursor.RangeSelection),r.emit(ops.Document.signalCursorMoved,q));r.getOdfCanvas().addAnnotation(d);r.fixCursorPositions();r.emit(ops.OdtDocument.signalAnnotationAdded,{memberId:k,annotation:d});return!0};this.spec=function(){return{optype:"AddAnnotation",memberid:k,timestamp:c,position:b,length:f,name:n}}};
+ops.OpAddCursor=function(){var g,k;this.init=function(c){g=c.memberid;k=c.timestamp};this.isEdit=!1;this.group=void 0;this.execute=function(c){var b=c.getCursor(g);if(b)return!1;b=new ops.OdtCursor(g,c);c.addCursor(b);c.emit(ops.Document.signalCursorAdded,b);return!0};this.spec=function(){return{optype:"AddCursor",memberid:g,timestamp:k}}};
+ops.OpAddMember=function(){var g,k,c;this.init=function(b){g=b.memberid;k=parseInt(b.timestamp,10);c=b.setProperties};this.isEdit=!1;this.group=void 0;this.execute=function(b){var f;if(b.getMember(g))return!1;f=new ops.Member(g,c);b.addMember(f);b.emit(ops.Document.signalMemberAdded,f);return!0};this.spec=function(){return{optype:"AddMember",memberid:g,timestamp:k,setProperties:c}}};
+ops.OpAddStyle=function(){var g,k,c,b,f,n,p=odf.Namespaces.stylens;this.init=function(p){g=p.memberid;k=p.timestamp;c=p.styleName;b=p.styleFamily;f="true"===p.isAutomaticStyle||!0===p.isAutomaticStyle;n=p.setProperties};this.isEdit=!0;this.group=void 0;this.execute=function(g){var k=g.getOdfCanvas().odfContainer(),e=g.getFormatting(),l=g.getDOMDocument().createElementNS(p,"style:style");if(!l)return!1;n&&e.updateStyle(l,n);l.setAttributeNS(p,"style:family",b);l.setAttributeNS(p,"style:name",c);f?
+k.rootElement.automaticStyles.appendChild(l):k.rootElement.styles.appendChild(l);g.getOdfCanvas().refreshCSS();f||g.emit(ops.OdtDocument.signalCommonStyleCreated,{name:c,family:b});return!0};this.spec=function(){return{optype:"AddStyle",memberid:g,timestamp:k,styleName:c,styleFamily:b,isAutomaticStyle:f,setProperties:n}}};
+odf.ObjectNameGenerator=function(g,k){function c(a,d){var b={};this.generateName=function(){var c=d(),e=0,f;do f=a+e,e+=1;while(b[f]||c[f]);b[f]=!0;return f}}function b(){var a={};[g.rootElement.automaticStyles,g.rootElement.styles].forEach(function(d){for(d=d.firstElementChild;d;)d.namespaceURI===f&&"style"===d.localName&&(a[d.getAttributeNS(f,"name")]=!0),d=d.nextElementSibling});return a}var f=odf.Namespaces.stylens,n=odf.Namespaces.drawns,p=odf.Namespaces.xlinkns,r=(new core.Utils).hashString(k),
+q=null,e=null,l=null,a={},d={};this.generateStyleName=function(){null===q&&(q=new c("auto"+r+"_",function(){return b()}));return q.generateName()};this.generateFrameName=function(){var d,b,f;if(null===e){b=g.rootElement.body.getElementsByTagNameNS(n,"frame");for(d=0;d<b.length;d+=1)f=b.item(d),a[f.getAttributeNS(n,"name")]=!0;e=new c("fr"+r+"_",function(){return a})}return e.generateName()};this.generateImageName=function(){var a,b,e;if(null===l){e=g.rootElement.body.getElementsByTagNameNS(n,"image");
+for(a=0;a<e.length;a+=1)b=e.item(a),b=b.getAttributeNS(p,"href"),b=b.substring(9,b.lastIndexOf(".")),d[b]=!0;l=new c("img"+r+"_",function(){return d})}return l.generateName()}};
+odf.TextStyleApplicator=function(g,k,c){function b(b){function c(a,b){return"object"===typeof a&&"object"===typeof b?Object.keys(a).every(function(e){return c(a[e],b[e])}):a===b}var a={};this.isStyleApplied=function(d){d=k.getAppliedStylesForElement(d,a).styleProperties;return c(b,d)}}function f(b){var f={};this.applyStyleToContainer=function(a){var d;d=a.getAttributeNS(r,"style-name");var m=a.ownerDocument;d=d||"";if(!f.hasOwnProperty(d)){var h=d,n;n=d?k.createDerivedStyleObject(d,"text",b):b;m=
+m.createElementNS(q,"style:style");k.updateStyle(m,n);m.setAttributeNS(q,"style:name",g.generateStyleName());m.setAttributeNS(q,"style:family","text");m.setAttributeNS("urn:webodf:names:scope","scope","document-content");c.appendChild(m);f[h]=m}d=f[d].getAttributeNS(q,"name");a.setAttributeNS(r,"text:style-name",d)}}function n(b,c){var a=b.ownerDocument,d=b.parentNode,m,h,f,g=new core.LoopWatchDog(1E4);h=[];h.push(b);for(f=b.nextSibling;f&&p.rangeContainsNode(c,f);)g.check(),h.push(f),f=f.nextSibling;
+"span"!==d.localName||d.namespaceURI!==r?(m=a.createElementNS(r,"text:span"),d.insertBefore(m,b),a=!1):(b.previousSibling&&!p.rangeContainsNode(c,d.firstChild)?(m=d.cloneNode(!1),d.parentNode.insertBefore(m,d.nextSibling)):m=d,a=!0);h.forEach(function(a){a.parentNode!==m&&m.appendChild(a)});if(f&&a)for(h=m.cloneNode(!1),m.parentNode.insertBefore(h,m.nextSibling);f;)g.check(),a=f.nextSibling,h.appendChild(f),f=a;return m}var p=core.DomUtils,r=odf.Namespaces.textns,q=odf.Namespaces.stylens;this.applyStyle=
+function(c,g,a){var d={},m,h,k,p;runtime.assert(a&&a.hasOwnProperty("style:text-properties"),"applyStyle without any text properties");d["style:text-properties"]=a["style:text-properties"];k=new f(d);p=new b(d);c.forEach(function(a){m=p.isStyleApplied(a);!1===m&&(h=n(a,g),k.applyStyleToContainer(h))})}};
+ops.OpApplyDirectStyling=function(){function g(b,c,f){var a=b.getOdfCanvas().odfContainer(),d=r.splitBoundaries(c),m=p.getTextNodes(c,!1);(new odf.TextStyleApplicator(new odf.ObjectNameGenerator(a,k),b.getFormatting(),a.rootElement.automaticStyles)).applyStyle(m,c,f);d.forEach(r.normalizeTextNodes)}var k,c,b,f,n,p=odf.OdfUtils,r=core.DomUtils;this.init=function(g){k=g.memberid;c=g.timestamp;b=parseInt(g.position,10);f=parseInt(g.length,10);n=g.setProperties};this.isEdit=!0;this.group=void 0;this.execute=
+function(r){var e=r.convertCursorToDomRange(b,f),l=p.getParagraphElements(e);g(r,e,n);e.detach();r.getOdfCanvas().refreshCSS();r.fixCursorPositions();l.forEach(function(a){r.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:a,memberId:k,timeStamp:c})});r.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"ApplyDirectStyling",memberid:k,timestamp:c,position:b,length:f,setProperties:n}}};
+ops.OpApplyHyperlink=function(){function g(b){for(;b;){if(r.isHyperlink(b))return!0;b=b.parentNode}return!1}var k,c,b,f,n,p=core.DomUtils,r=odf.OdfUtils;this.init=function(g){k=g.memberid;c=g.timestamp;b=g.position;f=g.length;n=g.hyperlink};this.isEdit=!0;this.group=void 0;this.execute=function(q){var e=q.getDOMDocument(),l=q.convertCursorToDomRange(b,f),a=p.splitBoundaries(l),d=[],m=r.getTextNodes(l,!1);if(0===m.length)return!1;m.forEach(function(a){var b=r.getParagraphElement(a);runtime.assert(!1===
+g(a),"The given range should not contain any link.");var c=n,m=e.createElementNS(odf.Namespaces.textns,"text:a");m.setAttributeNS(odf.Namespaces.xlinkns,"xlink:type","simple");m.setAttributeNS(odf.Namespaces.xlinkns,"xlink:href",c);a.parentNode.insertBefore(m,a);m.appendChild(a);-1===d.indexOf(b)&&d.push(b)});a.forEach(p.normalizeTextNodes);l.detach();q.fixCursorPositions();q.getOdfCanvas().refreshSize();q.getOdfCanvas().rerenderAnnotations();d.forEach(function(a){q.emit(ops.OdtDocument.signalParagraphChanged,
+{paragraphElement:a,memberId:k,timeStamp:c})});return!0};this.spec=function(){return{optype:"ApplyHyperlink",memberid:k,timestamp:c,position:b,length:f,hyperlink:n}}};
+ops.OpInsertImage=function(){var g,k,c,b,f,n,p,r,q=odf.Namespaces.drawns,e=odf.Namespaces.svgns,l=odf.Namespaces.textns,a=odf.Namespaces.xlinkns,d=odf.OdfUtils;this.init=function(a){g=a.memberid;k=a.timestamp;c=a.position;b=a.filename;f=a.frameWidth;n=a.frameHeight;p=a.frameStyleName;r=a.frameName};this.isEdit=!0;this.group=void 0;this.execute=function(m){var h=m.getOdfCanvas(),y=m.getTextNodeAtStep(c,g),x,z;if(!y)return!1;x=y.textNode;z=d.getParagraphElement(x);var y=y.offset!==x.length?x.splitText(y.offset):
+x.nextSibling,w=m.getDOMDocument(),v=w.createElementNS(q,"draw:image"),w=w.createElementNS(q,"draw:frame");v.setAttributeNS(a,"xlink:href",b);v.setAttributeNS(a,"xlink:type","simple");v.setAttributeNS(a,"xlink:show","embed");v.setAttributeNS(a,"xlink:actuate","onLoad");w.setAttributeNS(q,"draw:style-name",p);w.setAttributeNS(q,"draw:name",r);w.setAttributeNS(l,"text:anchor-type","as-char");w.setAttributeNS(e,"svg:width",f);w.setAttributeNS(e,"svg:height",n);w.appendChild(v);x.parentNode.insertBefore(w,
+y);m.emit(ops.OdtDocument.signalStepsInserted,{position:c});0===x.length&&x.parentNode.removeChild(x);h.addCssForFrameWithImage(w);h.refreshCSS();m.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:z,memberId:g,timeStamp:k});h.rerenderAnnotations();return!0};this.spec=function(){return{optype:"InsertImage",memberid:g,timestamp:k,filename:b,position:c,frameWidth:f,frameHeight:n,frameStyleName:p,frameName:r}}};
+ops.OpInsertTable=function(){function g(a,d){var c;if(1===e.length)c=e[0];else if(3===e.length)switch(a){case 0:c=e[0];break;case b-1:c=e[2];break;default:c=e[1]}else c=e[a];if(1===c.length)return c[0];if(3===c.length)switch(d){case 0:return c[0];case f-1:return c[2];default:return c[1]}return c[d]}var k,c,b,f,n,p,r,q,e,l=odf.OdfUtils;this.init=function(a){k=a.memberid;c=a.timestamp;n=a.position;b=a.initialRows;f=a.initialColumns;p=a.tableName;r=a.tableStyleName;q=a.tableColumnStyleName;e=a.tableCellStyleMatrix};
+this.isEdit=!0;this.group=void 0;this.execute=function(a){var d=a.getTextNodeAtStep(n),e=a.getRootNode();if(d){var h=a.getDOMDocument(),y=h.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table"),x=h.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-column"),z,w,v,u;r&&y.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",r);p&&y.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:name",p);x.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0",
+"table:number-columns-repeated",f);q&&x.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",q);y.appendChild(x);for(v=0;v<b;v+=1){x=h.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-row");for(u=0;u<f;u+=1)z=h.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-cell"),(w=g(v,u))&&z.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",w),w=h.createElementNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0",
+"text:p"),z.appendChild(w),x.appendChild(z);y.appendChild(x)}d=l.getParagraphElement(d.textNode);e.insertBefore(y,d.nextSibling);a.emit(ops.OdtDocument.signalStepsInserted,{position:n});a.getOdfCanvas().refreshSize();a.emit(ops.OdtDocument.signalTableAdded,{tableElement:y,memberId:k,timeStamp:c});a.getOdfCanvas().rerenderAnnotations();return!0}return!1};this.spec=function(){return{optype:"InsertTable",memberid:k,timestamp:c,position:n,initialRows:b,initialColumns:f,tableName:p,tableStyleName:r,tableColumnStyleName:q,
+tableCellStyleMatrix:e}}};
+ops.OpInsertText=function(){function g(b){return"\t"!==b&&p.isODFWhitespace(b)}var k,c,b,f,n,p=odf.OdfUtils;this.init=function(g){k=g.memberid;c=g.timestamp;b=g.position;n=g.text;f="true"===g.moveCursor||!0===g.moveCursor};this.isEdit=!0;this.group=void 0;this.execute=function(r){var q,e,l,a=null,d=r.getDOMDocument(),m,h=0,y,x=r.getCursor(k),z;r.upgradeWhitespacesAtPosition(b);if(q=r.getTextNodeAtStep(b)){e=q.textNode;a=e.nextSibling;l=e.parentNode;m=p.getParagraphElement(e);for(z=0;z<n.length;z+=
+1){if(!(y="\t"===n[z])){y=n;var w=z;y=g(y[w])&&(0===w||w===y.length-1||g(y[w-1]))}y&&(0===h?(q.offset!==e.length&&(a=e.splitText(q.offset)),0<z&&e.appendData(n.substring(0,z))):h<z&&(h=n.substring(h,z),l.insertBefore(d.createTextNode(h),a)),h=z+1,"\t"===n[z]?(y=d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","text:tab"),y.appendChild(d.createTextNode("\t"))):(" "!==n[z]&&runtime.log("WARN: InsertText operation contains non-tab, non-space whitespace character (character code "+n.charCodeAt(z)+
+")"),y=d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","text:s"),y.appendChild(d.createTextNode(" "))),l.insertBefore(y,a))}0===h?e.insertData(q.offset,n):h<n.length&&(q=n.substring(h),l.insertBefore(d.createTextNode(q),a));l=e.parentNode;a=e.nextSibling;l.removeChild(e);l.insertBefore(e,a);0===e.length&&e.parentNode.removeChild(e);r.emit(ops.OdtDocument.signalStepsInserted,{position:b});x&&f&&(r.moveCursor(k,b+n.length,0),r.emit(ops.Document.signalCursorMoved,x));r.downgradeWhitespacesAtPosition(b);
+r.downgradeWhitespacesAtPosition(b+n.length);r.getOdfCanvas().refreshSize();r.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:m,memberId:k,timeStamp:c});r.getOdfCanvas().rerenderAnnotations();return!0}return!1};this.spec=function(){return{optype:"InsertText",memberid:k,timestamp:c,position:b,text:n,moveCursor:f}}};
+odf.CollapsingRules=function(g){function k(c){return b.isODFNode(c)||"br"===c.localName&&b.isLineBreak(c.parentNode)||c.nodeType===Node.TEXT_NODE&&b.isODFNode(c.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function c(n){var p;n.nodeType===Node.TEXT_NODE?(p=n.parentNode,p.removeChild(n)):p=f.removeUnwantedNodes(n,k);if(n=p)n=p,n=!b.isParagraph(n)&&n!==g&&b.hasNoODFContent(n);return n?c(p):p}var b=odf.OdfUtils,f=core.DomUtils;this.mergeChildrenIntoParent=c};
+ops.OpMergeParagraph=function(){function g(a){return odf.OdfUtils.isInlineRoot(a)?NodeFilter.FILTER_SKIP:l.isGroupingElement(a)&&l.hasNoODFContent(a)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function k(a){if(a.nodeType===Node.TEXT_NODE){if(0===a.length)return runtime.log("WARN: Empty text node found during merge operation"),!0;if(l.isODFWhitespace(a.data)&&!1===l.isSignificantWhitespace(a,0))return!0;a="#text"}else a=(a.prefix?a.prefix+":":"")+a.localName;runtime.log("WARN: Unexpected text element found near paragraph boundary ["+
+a+"]");return!1}function c(d){d.collapsed||(a.splitBoundaries(d),d=l.getTextElements(d,!1,!0).filter(k),d.forEach(function(a){a.parentNode.removeChild(a)}))}function b(a,d,b){a=a.convertCursorStepToDomPoint(d);var c=l.getParagraphElement(a.node,a.offset);runtime.assert(Boolean(c),"Paragraph not found at step "+d);b&&b.setPosition(a.node,a.offset);return c}var f,n,p,r,q,e,l=odf.OdfUtils,a=core.DomUtils,d=odf.Namespaces.textns;this.init=function(a){f=a.memberid;n=a.timestamp;p=a.moveCursor;r=a.paragraphStyleName;
+q=parseInt(a.sourceStartPosition,10);e=parseInt(a.destinationStartPosition,10)};this.isEdit=!0;this.group=void 0;this.execute=function(m){var h,l,k=m.getCursor(f);h=m.getRootNode();var z=new odf.CollapsingRules(h),w=m.createStepIterator(h,0,[m.getPositionFilter()],h),v;runtime.assert(e<q,"Destination paragraph ("+e+") must be before source paragraph ("+q+")");l=b(m,e);h=b(m,q,w);w.previousStep();runtime.assert(a.containsNode(l,w.container()),"Destination paragraph must be adjacent to the source paragraph");
+v=l.ownerDocument.createRange();w.setPosition(l,l.childNodes.length);w.roundToPreviousStep();v.setStart(w.container(),w.offset());v.setEnd(l,l.childNodes.length);c(v);v=l.childNodes.length;var u=h.ownerDocument.createRange();w.setPosition(h,0);w.roundToNextStep();u.setStart(h,0);u.setEnd(w.container(),w.offset());c(u);for(u=h.firstChild;u;)"editinfo"===u.localName?h.removeChild(u):(l.appendChild(u),a.removeUnwantedNodes(u,g)),u=h.firstChild;runtime.assert(0===h.childNodes.length,"Source paragraph should be empty before it is removed");
+z.mergeChildrenIntoParent(h);m.emit(ops.OdtDocument.signalStepsRemoved,{position:q-1});w.setPosition(l,v);w.roundToClosestStep();w.previousStep()||w.roundToNextStep();m.downgradeWhitespaces(w);r?l.setAttributeNS(d,"text:style-name",r):l.removeAttributeNS(d,"style-name");k&&p&&(m.moveCursor(f,q-1,0),m.emit(ops.Document.signalCursorMoved,k));m.fixCursorPositions();m.getOdfCanvas().refreshSize();m.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:l,memberId:f,timeStamp:n});m.getOdfCanvas().rerenderAnnotations();
+return!0};this.spec=function(){return{optype:"MergeParagraph",memberid:f,timestamp:n,moveCursor:p,paragraphStyleName:r,sourceStartPosition:q,destinationStartPosition:e}}};
+ops.OpMoveCursor=function(){var g,k,c,b,f;this.init=function(n){g=n.memberid;k=n.timestamp;c=n.position;b=n.length||0;f=n.selectionType||ops.OdtCursor.RangeSelection};this.isEdit=!1;this.group=void 0;this.execute=function(n){var k=n.getCursor(g),r;if(!k)return!1;r=n.convertCursorToDomRange(c,b);k.setSelectedRange(r,0<=b);k.setSelectionType(f);n.emit(ops.Document.signalCursorMoved,k);return!0};this.spec=function(){return{optype:"MoveCursor",memberid:g,timestamp:k,position:c,length:b,selectionType:f}}};
+ops.OpRemoveAnnotation=function(){var g,k,c,b,f=core.DomUtils;this.init=function(f){g=f.memberid;k=f.timestamp;c=parseInt(f.position,10);b=parseInt(f.length,10)};this.isEdit=!0;this.group=void 0;this.execute=function(b){function g(b){q.parentNode.insertBefore(b,q)}for(var k=b.getIteratorAtPosition(c).container(),q;k.namespaceURI!==odf.Namespaces.officens||"annotation"!==k.localName;)k=k.parentNode;if(null===k)return!1;q=k;k=q.annotationEndElement;b.getOdfCanvas().forgetAnnotation(q);f.getElementsByTagNameNS(q,
+"urn:webodf:names:cursor","cursor").forEach(g);f.getElementsByTagNameNS(q,"urn:webodf:names:cursor","anchor").forEach(g);q.parentNode.removeChild(q);k&&k.parentNode.removeChild(k);b.emit(ops.OdtDocument.signalStepsRemoved,{position:0<c?c-1:c});b.getOdfCanvas().rerenderAnnotations();b.fixCursorPositions();return!0};this.spec=function(){return{optype:"RemoveAnnotation",memberid:g,timestamp:k,position:c,length:b}}};
+ops.OpRemoveBlob=function(){var g,k,c;this.init=function(b){g=b.memberid;k=b.timestamp;c=b.filename};this.isEdit=!0;this.group=void 0;this.execute=function(b){b.getOdfCanvas().odfContainer().removeBlob(c);return!0};this.spec=function(){return{optype:"RemoveBlob",memberid:g,timestamp:k,filename:c}}};
+ops.OpRemoveCursor=function(){var g,k;this.init=function(c){g=c.memberid;k=c.timestamp};this.isEdit=!1;this.group=void 0;this.execute=function(c){return c.removeCursor(g)?!0:!1};this.spec=function(){return{optype:"RemoveCursor",memberid:g,timestamp:k}}};
+ops.OpRemoveHyperlink=function(){var g,k,c,b,f=core.DomUtils,n=odf.OdfUtils;this.init=function(f){g=f.memberid;k=f.timestamp;c=f.position;b=f.length};this.isEdit=!0;this.group=void 0;this.execute=function(p){var r=p.convertCursorToDomRange(c,b),q=n.getHyperlinkElements(r);runtime.assert(1===q.length,"The given range should only contain a single link.");q=f.mergeIntoParent(q[0]);r.detach();p.fixCursorPositions();p.getOdfCanvas().refreshSize();p.getOdfCanvas().rerenderAnnotations();p.emit(ops.OdtDocument.signalParagraphChanged,
+{paragraphElement:n.getParagraphElement(q),memberId:g,timeStamp:k});return!0};this.spec=function(){return{optype:"RemoveHyperlink",memberid:g,timestamp:k,position:c,length:b}}};ops.OpRemoveMember=function(){var g,k;this.init=function(c){g=c.memberid;k=parseInt(c.timestamp,10)};this.isEdit=!1;this.group=void 0;this.execute=function(c){if(!c.getMember(g))return!1;c.removeMember(g);c.emit(ops.Document.signalMemberRemoved,g);return!0};this.spec=function(){return{optype:"RemoveMember",memberid:g,timestamp:k}}};
+ops.OpRemoveStyle=function(){var g,k,c,b;this.init=function(f){g=f.memberid;k=f.timestamp;c=f.styleName;b=f.styleFamily};this.isEdit=!0;this.group=void 0;this.execute=function(f){var g=f.getFormatting().getStyleElement(c,b);if(!g)return!1;g.parentNode.removeChild(g);f.getOdfCanvas().refreshCSS();f.emit(ops.OdtDocument.signalCommonStyleDeleted,{name:c,family:b});return!0};this.spec=function(){return{optype:"RemoveStyle",memberid:g,timestamp:k,styleName:c,styleFamily:b}}};
+ops.OpRemoveText=function(){var g,k,c,b,f=odf.OdfUtils,n=core.DomUtils;this.init=function(f){runtime.assert(0<=f.length,"OpRemoveText only supports positive lengths");g=f.memberid;k=f.timestamp;c=parseInt(f.position,10);b=parseInt(f.length,10)};this.isEdit=!0;this.group=void 0;this.execute=function(p){var r,q,e,l=p.getCursor(g),a=new odf.CollapsingRules(p.getRootNode());p.upgradeWhitespacesAtPosition(c);p.upgradeWhitespacesAtPosition(c+b);r=p.convertCursorToDomRange(c,b);n.splitBoundaries(r);q=f.getTextElements(r,
+!1,!0);e=f.getParagraphElement(r.startContainer,r.startOffset);runtime.assert(void 0!==e,"Attempting to remove text outside a paragraph element");r.detach();q.forEach(function(d){d.parentNode?(runtime.assert(n.containsNode(e,d),"RemoveText only supports removing elements within the same paragraph"),a.mergeChildrenIntoParent(d)):runtime.log("WARN: text element has already been removed from it's container")});p.emit(ops.OdtDocument.signalStepsRemoved,{position:c});p.downgradeWhitespacesAtPosition(c);
+p.fixCursorPositions();p.getOdfCanvas().refreshSize();p.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:e,memberId:g,timeStamp:k});l&&(l.resetSelectionType(),p.emit(ops.Document.signalCursorMoved,l));p.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"RemoveText",memberid:g,timestamp:k,position:c,length:b}}};
+ops.OpSetBlob=function(){var g,k,c,b,f;this.init=function(n){g=n.memberid;k=n.timestamp;c=n.filename;b=n.mimetype;f=n.content};this.isEdit=!0;this.group=void 0;this.execute=function(g){g.getOdfCanvas().odfContainer().setBlob(c,b,f);return!0};this.spec=function(){return{optype:"SetBlob",memberid:g,timestamp:k,filename:c,mimetype:b,content:f}}};
+ops.OpSetParagraphStyle=function(){function g(b,c,f){var e=[b.getPositionFilter()],g=f.container();f=f.unfilteredDomOffset();return!1===b.createStepIterator(g,f,e,c).previousStep()}var k,c,b,f,n=odf.OdfUtils;this.init=function(g){k=g.memberid;c=g.timestamp;b=g.position;f=g.styleName};this.isEdit=!0;this.group=void 0;this.execute=function(p){var r,q;r=p.getIteratorAtPosition(b);return(q=n.getParagraphElement(r.container()))?(runtime.assert(g(p,q,r),"SetParagraphStyle position should be the first position in the paragraph"),
+f?q.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","text:style-name",f):q.removeAttributeNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","style-name"),p.getOdfCanvas().refreshSize(),p.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:q,timeStamp:c,memberId:k}),p.getOdfCanvas().rerenderAnnotations(),!0):!1};this.spec=function(){return{optype:"SetParagraphStyle",memberid:k,timestamp:c,position:b,styleName:f}}};
+ops.OpSplitParagraph=function(){var g,k,c,b,f,n,p=odf.OdfUtils,r=odf.Namespaces.textns;this.init=function(p){g=p.memberid;k=p.timestamp;b=p.position;c=p.sourceParagraphPosition;n=p.paragraphStyleName;f="true"===p.moveCursor||!0===p.moveCursor};this.isEdit=!0;this.group=void 0;this.execute=function(c){var e,l,a,d,m,h,y,x=c.getCursor(g);c.upgradeWhitespacesAtPosition(b);e=c.getTextNodeAtStep(b);if(!e)return!1;l=p.getParagraphElement(e.textNode);if(!l)return!1;a=p.isListItem(l.parentNode)?l.parentNode:
+l;0===e.offset?(y=e.textNode.previousSibling,h=null):(y=e.textNode,h=e.offset>=e.textNode.length?null:e.textNode.splitText(e.offset));for(d=e.textNode;d!==a;){d=d.parentNode;m=d.cloneNode(!1);h&&m.appendChild(h);if(y)for(;y&&y.nextSibling;)m.appendChild(y.nextSibling);else for(;d.firstChild;)m.appendChild(d.firstChild);d.parentNode.insertBefore(m,d.nextSibling);y=d;h=m}p.isListItem(h)&&(h=h.childNodes.item(0));n?h.setAttributeNS(r,"text:style-name",n):h.removeAttributeNS(r,"style-name");0===e.textNode.length&&
+e.textNode.parentNode.removeChild(e.textNode);c.emit(ops.OdtDocument.signalStepsInserted,{position:b});x&&f&&(c.moveCursor(g,b+1,0),c.emit(ops.Document.signalCursorMoved,x));c.fixCursorPositions();c.getOdfCanvas().refreshSize();c.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:l,memberId:g,timeStamp:k});c.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:h,memberId:g,timeStamp:k});c.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"SplitParagraph",
+memberid:g,timestamp:k,position:b,sourceParagraphPosition:c,paragraphStyleName:n,moveCursor:f}}};
+ops.OpUpdateMember=function(){function g(c){var f="//dc:creator[@editinfo:memberid='"+k+"']";c=xmldom.XPath.getODFElementsWithXPath(c.getRootNode(),f,function(b){return"editinfo"===b?"urn:webodf:names:editinfo":odf.Namespaces.lookupNamespaceURI(b)});for(f=0;f<c.length;f+=1)c[f].textContent=b.fullName}var k,c,b,f;this.init=function(g){k=g.memberid;c=parseInt(g.timestamp,10);b=g.setProperties;f=g.removedProperties};this.isEdit=!1;this.group=void 0;this.execute=function(c){var p=c.getMember(k);if(!p)return!1;
+f&&p.removeProperties(f);b&&(p.setProperties(b),b.fullName&&g(c));c.emit(ops.Document.signalMemberUpdated,p);return!0};this.spec=function(){return{optype:"UpdateMember",memberid:k,timestamp:c,setProperties:b,removedProperties:f}}};
+ops.OpUpdateMetadata=function(){var g,k,c,b;this.init=function(f){g=f.memberid;k=parseInt(f.timestamp,10);c=f.setProperties;b=f.removedProperties};this.isEdit=!0;this.group=void 0;this.execute=function(f){var g=f.getOdfCanvas().odfContainer(),k=null;b&&(k=b.attributes.split(","));g.setMetadata(c,k);f.emit(ops.OdtDocument.signalMetadataUpdated,{setProperties:null!==c?c:{},removedProperties:null!==k?k:[]});return!0};this.spec=function(){return{optype:"UpdateMetadata",memberid:g,timestamp:k,setProperties:c,
+removedProperties:b}}};
+ops.OpUpdateParagraphStyle=function(){function g(b,c){var e,f,a=c?c.split(","):[];for(e=0;e<a.length;e+=1)f=a[e].split(":"),b.removeAttributeNS(odf.Namespaces.lookupNamespaceURI(f[0]),f[1])}var k,c,b,f,n,p=odf.Namespaces.stylens;this.init=function(g){k=g.memberid;c=g.timestamp;b=g.styleName;f=g.setProperties;n=g.removedProperties};this.isEdit=!0;this.group=void 0;this.execute=function(c){var k=c.getFormatting(),e,l,a;return(e=""!==b?k.getStyleElement(b,"paragraph"):k.getDefaultStyleElement("paragraph"))?(l=
+e.getElementsByTagNameNS(p,"paragraph-properties").item(0),a=e.getElementsByTagNameNS(p,"text-properties").item(0),f&&k.updateStyle(e,f),n&&(k=n["style:paragraph-properties"],l&&k&&(g(l,k.attributes),0===l.attributes.length&&e.removeChild(l)),k=n["style:text-properties"],a&&k&&(g(a,k.attributes),0===a.attributes.length&&e.removeChild(a)),g(e,n.attributes)),c.getOdfCanvas().refreshCSS(),c.emit(ops.OdtDocument.signalParagraphStyleModified,b),c.getOdfCanvas().rerenderAnnotations(),!0):!1};this.spec=
+function(){return{optype:"UpdateParagraphStyle",memberid:k,timestamp:c,styleName:b,setProperties:f,removedProperties:n}}};
+ops.OperationFactory=function(){function g(c){return function(b){return new c}}var k;this.register=function(c,b){k[c]=b};this.create=function(c){var b=null,f=k[c.optype];f&&(b=f(c),b.init(c));return b};k={AddMember:g(ops.OpAddMember),UpdateMember:g(ops.OpUpdateMember),RemoveMember:g(ops.OpRemoveMember),AddCursor:g(ops.OpAddCursor),ApplyDirectStyling:g(ops.OpApplyDirectStyling),SetBlob:g(ops.OpSetBlob),RemoveBlob:g(ops.OpRemoveBlob),InsertImage:g(ops.OpInsertImage),InsertTable:g(ops.OpInsertTable),
+InsertText:g(ops.OpInsertText),RemoveText:g(ops.OpRemoveText),MergeParagraph:g(ops.OpMergeParagraph),SplitParagraph:g(ops.OpSplitParagraph),SetParagraphStyle:g(ops.OpSetParagraphStyle),UpdateParagraphStyle:g(ops.OpUpdateParagraphStyle),AddStyle:g(ops.OpAddStyle),RemoveStyle:g(ops.OpRemoveStyle),MoveCursor:g(ops.OpMoveCursor),RemoveCursor:g(ops.OpRemoveCursor),AddAnnotation:g(ops.OpAddAnnotation),RemoveAnnotation:g(ops.OpRemoveAnnotation),UpdateMetadata:g(ops.OpUpdateMetadata),ApplyHyperlink:g(ops.OpApplyHyperlink),
+RemoveHyperlink:g(ops.OpRemoveHyperlink)}};ops.OperationRouter=function(){};ops.OperationRouter.prototype.setOperationFactory=function(g){};ops.OperationRouter.prototype.setPlaybackFunction=function(g){};ops.OperationRouter.prototype.push=function(g){};ops.OperationRouter.prototype.close=function(g){};ops.OperationRouter.prototype.subscribe=function(g,k){};ops.OperationRouter.prototype.unsubscribe=function(g,k){};ops.OperationRouter.prototype.hasLocalUnsyncedOps=function(){};
+ops.OperationRouter.prototype.hasSessionHostConnection=function(){};ops.OperationRouter.signalProcessingBatchStart="router/batchstart";ops.OperationRouter.signalProcessingBatchEnd="router/batchend";
+ops.TrivialOperationRouter=function(){var g=new core.EventNotifier([ops.OperationRouter.signalProcessingBatchStart,ops.OperationRouter.signalProcessingBatchEnd]),k,c,b=0;this.setOperationFactory=function(b){k=b};this.setPlaybackFunction=function(b){c=b};this.push=function(f){b+=1;g.emit(ops.OperationRouter.signalProcessingBatchStart,{});f.forEach(function(f){f=f.spec();f.timestamp=Date.now();f=k.create(f);f.group="g"+b;c(f)});g.emit(ops.OperationRouter.signalProcessingBatchEnd,{})};this.close=function(b){b()};
+this.subscribe=function(b,c){g.subscribe(b,c)};this.unsubscribe=function(b,c){g.unsubscribe(b,c)};this.hasLocalUnsyncedOps=function(){return!1};this.hasSessionHostConnection=function(){return!0}};
+ops.Session=function(g){function k(b){f.emit(ops.OdtDocument.signalProcessingBatchStart,b)}function c(b){f.emit(ops.OdtDocument.signalProcessingBatchEnd,b)}var b=new ops.OperationFactory,f=new ops.OdtDocument(g),n=null;this.setOperationFactory=function(c){b=c;n&&n.setOperationFactory(b)};this.setOperationRouter=function(g){n&&(n.unsubscribe(ops.OperationRouter.signalProcessingBatchStart,k),n.unsubscribe(ops.OperationRouter.signalProcessingBatchEnd,c));n=g;n.subscribe(ops.OperationRouter.signalProcessingBatchStart,
+k);n.subscribe(ops.OperationRouter.signalProcessingBatchEnd,c);g.setPlaybackFunction(function(b){f.emit(ops.OdtDocument.signalOperationStart,b);return b.execute(f)?(f.emit(ops.OdtDocument.signalOperationEnd,b),!0):!1});g.setOperationFactory(b)};this.getOperationFactory=function(){return b};this.getOdtDocument=function(){return f};this.enqueue=function(b){n.push(b)};this.close=function(b){n.close(function(c){c?b(c):f.close(b)})};this.destroy=function(b){f.destroy(b)};this.setOperationRouter(new ops.TrivialOperationRouter)};
+gui.AnnotationController=function(g,k,c){function b(){var a=r.getCursor(c),a=a&&a.getNode(),b=!1;a&&(b=!l.isWithinAnnotation(a,r.getRootNode()));b!==q&&(q=b,e.emit(gui.AnnotationController.annotatableChanged,q))}function f(a){a.getMemberId()===c&&b()}function n(a){a===c&&b()}function p(a){a.getMemberId()===c&&b()}var r=g.getOdtDocument(),q=!1,e=new core.EventNotifier([gui.AnnotationController.annotatableChanged]),l=odf.OdfUtils,a=core.StepDirection.NEXT;this.isAnnotatable=function(){return q};this.addAnnotation=
+function(){var a=new ops.OpAddAnnotation,b=r.getCursorSelection(c),e=b.length,b=b.position;q&&(0===e?e=void 0:(b=0<=e?b:b+e,e=Math.abs(e)),a.init({memberid:c,position:b,length:e,name:c+Date.now()}),g.enqueue([a]))};this.removeAnnotation=function(d){var b,e;b=r.getMember(c).getProperties().fullName;if(!0!==k.getState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN)||b===l.getAnnotationCreator(d))b=r.convertDomPointToCursorStep(d,0,a),e=r.convertDomPointToCursorStep(d,d.childNodes.length),d=
+new ops.OpRemoveAnnotation,d.init({memberid:c,position:b,length:e-b}),e=new ops.OpMoveCursor,e.init({memberid:c,position:0<b?b-1:b,length:0}),g.enqueue([d,e])};this.subscribe=function(a,b){e.subscribe(a,b)};this.unsubscribe=function(a,b){e.unsubscribe(a,b)};this.destroy=function(a){r.unsubscribe(ops.Document.signalCursorAdded,f);r.unsubscribe(ops.Document.signalCursorRemoved,n);r.unsubscribe(ops.Document.signalCursorMoved,p);a()};k.registerConstraint(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN);
+r.subscribe(ops.Document.signalCursorAdded,f);r.subscribe(ops.Document.signalCursorRemoved,n);r.subscribe(ops.Document.signalCursorMoved,p);b()};gui.AnnotationController.annotatableChanged="annotatable/changed";
+gui.Avatar=function(g,k){var c=this,b,f,n;this.setColor=function(b){f.style.borderColor=b};this.setImageUrl=function(b){c.isVisible()?f.src=b:n=b};this.isVisible=function(){return"block"===b.style.display};this.show=function(){n&&(f.src=n,n=void 0);b.style.display="block"};this.hide=function(){b.style.display="none"};this.markAsFocussed=function(c){c?b.classList.add("active"):b.classList.remove("active")};this.destroy=function(c){g.removeChild(b);c()};(function(){var c=g.ownerDocument;b=c.createElement("div");
+f=c.createElement("img");b.appendChild(f);b.style.display=k?"block":"none";b.className="handle";g.appendChild(b)})()};gui.StepInfo=function(){};gui.StepInfo.VisualDirection={LEFT_TO_RIGHT:0,RIGHT_TO_LEFT:1};gui.StepInfo.prototype.container=function(){};gui.StepInfo.prototype.offset=function(){};gui.VisualStepScanner=function(){};gui.VisualStepScanner.prototype.process=function(g,k,c){};
+gui.GuiStepUtils=function(){function g(f){f=c.getContentBounds(f);var g,e=null;if(f)if(f.container.nodeType===Node.TEXT_NODE)g=f.container.ownerDocument.createRange(),g.setStart(f.container,f.startOffset),g.setEnd(f.container,f.endOffset),(e=0<g.getClientRects().length?g.getBoundingClientRect():null)&&" "===f.container.data.substring(f.startOffset,f.endOffset)&&1>=e.width&&(e=null),g.detach();else if(k.isCharacterElement(f.container)||k.isCharacterFrame(f.container))e=b.getBoundingClientRect(f.container);
+return e}var k=odf.OdfUtils,c=new odf.StepUtils,b=core.DomUtils,f=core.StepDirection.NEXT,n=gui.StepInfo.VisualDirection.LEFT_TO_RIGHT,p=gui.StepInfo.VisualDirection.RIGHT_TO_LEFT;this.getContentRect=g;this.moveToFilteredStep=function(b,c,e){function l(a,b){b.process(w,h,k)&&(a=!0,!x&&b.token&&(x=b.token));return a}var a=c===f,d,m,h,k,x,z=b.snapshot();d=!1;var w;do d=g(b),w={token:b.snapshot(),container:b.container,offset:b.offset,direction:c,visualDirection:c===f?n:p},m=b.nextStep()?g(b):null,b.restore(w.token),
+a?(h=d,k=m):(h=m,k=d),d=e.reduce(l,!1);while(!d&&b.advanceStep(c));d||e.forEach(function(a){!x&&a.token&&(x=a.token)});b.restore(x||z);return Boolean(x)}};
+gui.Caret=function(g,k,c,b){function f(){a.style.opacity="0"===a.style.opacity?"1":"0";t.trigger()}function n(){y.selectNodeContents(h);return y.getBoundingClientRect()}function p(a){return E[a]!==L[a]}function r(){Object.keys(L).forEach(function(a){E[a]=L[a]})}function q(){if(!1===L.isShown||g.getSelectionType()!==ops.OdtCursor.RangeSelection||!b&&!g.getSelectedRange().collapsed)L.visibility="hidden",a.style.visibility="hidden",t.cancel();else if(L.visibility="visible",a.style.visibility="visible",
+!1===L.isFocused)a.style.opacity="1",t.cancel();else{if(A||p("visibility"))a.style.opacity="1",t.cancel();t.trigger()}if(K||I){var c;c=g.getNode();var e,h,f=z.getBoundingClientRect(x.getSizer()),q=!1,y=0;c.removeAttributeNS("urn:webodf:names:cursor","caret-sizer-active");if(0<c.getClientRects().length)h=n(),y=h.left-z.getBoundingClientRect(c).left,q=!0;else if(v.setPosition(c,0),h=w.getContentRect(v),!h&&v.nextStep()&&(e=w.getContentRect(v))&&(h=e,q=!0),h||(c.setAttributeNS("urn:webodf:names:cursor",
+"caret-sizer-active","true"),h=n(),q=!0),!h)for(runtime.log("WARN: No suitable client rectangle found for visual caret for "+g.getMemberId());c;){if(0<c.getClientRects().length){h=z.getBoundingClientRect(c);q=!0;break}c=c.parentNode}h=z.translateRect(h,f,x.getZoomLevel());c={top:h.top,height:h.height,right:q?h.left:h.right,width:z.adaptRangeDifferenceToZoomLevel(y,x.getZoomLevel())};8>c.height&&(c={top:c.top-(8-c.height)/2,height:8,right:c.right});l.style.height=c.height+"px";l.style.top=c.top+"px";
+l.style.left=c.right-c.width+"px";l.style.width=c.width?c.width+"px":"";m&&(c=runtime.getWindow().getComputedStyle(g.getNode(),null),c.font?m.style.font=c.font:(m.style.fontStyle=c.fontStyle,m.style.fontVariant=c.fontVariant,m.style.fontWeight=c.fontWeight,m.style.fontSize=c.fontSize,m.style.lineHeight=c.lineHeight,m.style.fontFamily=c.fontFamily))}L.isShown&&I&&k.scrollIntoView(a.getBoundingClientRect());p("isFocused")&&d.markAsFocussed(L.isFocused);r();K=I=A=!1}function e(a){l.parentNode.removeChild(l);
+h.parentNode.removeChild(h);a()}var l,a,d,m,h,y,x=g.getDocument().getCanvas(),z=core.DomUtils,w=new gui.GuiStepUtils,v,u,t,A=!1,I=!1,K=!1,L={isFocused:!1,isShown:!0,visibility:"hidden"},E={isFocused:!L.isFocused,isShown:!L.isShown,visibility:"hidden"};this.handleUpdate=function(){K=!0;u.trigger()};this.refreshCursorBlinking=function(){A=!0;u.trigger()};this.setFocus=function(){L.isFocused=!0;u.trigger()};this.removeFocus=function(){L.isFocused=!1;u.trigger()};this.show=function(){L.isShown=!0;u.trigger()};
+this.hide=function(){L.isShown=!1;u.trigger()};this.setAvatarImageUrl=function(a){d.setImageUrl(a)};this.setColor=function(b){a.style.borderColor=b;d.setColor(b)};this.getCursor=function(){return g};this.getFocusElement=function(){return a};this.toggleHandleVisibility=function(){d.isVisible()?d.hide():d.show()};this.showHandle=function(){d.show()};this.hideHandle=function(){d.hide()};this.setOverlayElement=function(a){m=a;l.appendChild(a);K=!0;u.trigger()};this.ensureVisible=function(){I=!0;u.trigger()};
+this.getBoundingClientRect=function(){return z.getBoundingClientRect(l)};this.destroy=function(a){core.Async.destroyAll([u.destroy,t.destroy,d.destroy,e],a)};(function(){var b=g.getDocument(),e=[b.createRootFilter(g.getMemberId()),b.getPositionFilter()],m=b.getDOMDocument();y=m.createRange();h=m.createElement("span");h.className="webodf-caretSizer";h.textContent="|";g.getNode().appendChild(h);l=m.createElement("div");l.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",g.getMemberId());
+l.className="webodf-caretOverlay";a=m.createElement("div");a.className="caret";l.appendChild(a);d=new gui.Avatar(l,c);x.getSizer().appendChild(l);v=b.createStepIterator(g.getNode(),0,e,b.getRootNode());u=core.Task.createRedrawTask(q);t=core.Task.createTimeoutTask(f,500);u.triggerImmediate()})()};
+odf.TextSerializer=function(){function g(b){var f="",n=k.filter?k.filter.acceptNode(b):NodeFilter.FILTER_ACCEPT,p=b.nodeType,r;if((n===NodeFilter.FILTER_ACCEPT||n===NodeFilter.FILTER_SKIP)&&c.isTextContentContainingNode(b))for(r=b.firstChild;r;)f+=g(r),r=r.nextSibling;n===NodeFilter.FILTER_ACCEPT&&(p===Node.ELEMENT_NODE&&c.isParagraph(b)?f+="\n":p===Node.TEXT_NODE&&b.textContent&&(f+=b.textContent));return f}var k=this,c=odf.OdfUtils;this.filter=null;this.writeToString=function(b){if(!b)return"";
+b=g(b);"\n"===b[b.length-1]&&(b=b.substr(0,b.length-1));return b}};gui.MimeDataExporter=function(){var g;this.exportRangeToDataTransfer=function(k,c){var b;b=c.startContainer.ownerDocument.createElement("span");b.appendChild(c.cloneContents());b=g.writeToString(b);try{k.setData("text/plain",b)}catch(f){k.setData("Text",b)}};g=new odf.TextSerializer;g.filter=new odf.OdfNodeFilter};
+gui.Clipboard=function(g){this.setDataFromRange=function(k,c){var b,f=k.clipboardData;b=runtime.getWindow();!f&&b&&(f=b.clipboardData);f?(b=!0,g.exportRangeToDataTransfer(f,c),k.preventDefault()):b=!1;return b}};
+gui.SessionContext=function(g,k){var c=g.getOdtDocument(),b=odf.OdfUtils;this.isLocalCursorWithinOwnAnnotation=function(){var f=c.getCursor(k),g;if(!f)return!1;g=f&&f.getNode();f=c.getMember(k).getProperties().fullName;return(g=b.getParentAnnotation(g,c.getRootNode()))&&b.getAnnotationCreator(g)===f?!0:!1}};
+gui.StyleSummary=function(g){function k(b,c){var k=b+"|"+c,q;f.hasOwnProperty(k)||(q=[],g.forEach(function(e){e=(e=e.styleProperties[b])&&e[c];-1===q.indexOf(e)&&q.push(e)}),f[k]=q);return f[k]}function c(b,c,f){return function(){var g=k(b,c);return f.length>=g.length&&g.every(function(b){return-1!==f.indexOf(b)})}}function b(b,c){var f=k(b,c);return 1===f.length?f[0]:void 0}var f={};this.getPropertyValues=k;this.getCommonValue=b;this.isBold=c("style:text-properties","fo:font-weight",["bold"]);this.isItalic=
+c("style:text-properties","fo:font-style",["italic"]);this.hasUnderline=c("style:text-properties","style:text-underline-style",["solid"]);this.hasStrikeThrough=c("style:text-properties","style:text-line-through-style",["solid"]);this.fontSize=function(){var c=b("style:text-properties","fo:font-size");return c&&parseFloat(c)};this.fontName=function(){return b("style:text-properties","style:font-name")};this.isAlignedLeft=c("style:paragraph-properties","fo:text-align",["left","start"]);this.isAlignedCenter=
+c("style:paragraph-properties","fo:text-align",["center"]);this.isAlignedRight=c("style:paragraph-properties","fo:text-align",["right","end"]);this.isAlignedJustified=c("style:paragraph-properties","fo:text-align",["justify"]);this.text={isBold:this.isBold,isItalic:this.isItalic,hasUnderline:this.hasUnderline,hasStrikeThrough:this.hasStrikeThrough,fontSize:this.fontSize,fontName:this.fontName};this.paragraph={isAlignedLeft:this.isAlignedLeft,isAlignedCenter:this.isAlignedCenter,isAlignedRight:this.isAlignedRight,
+isAlignedJustified:this.isAlignedJustified}};
+gui.DirectFormattingController=function(g,k,c,b,f,n,p){function r(){return U.value().styleSummary}function q(){return U.value().enabledFeatures}function e(a){var b;a.collapsed?(b=a.startContainer,b.hasChildNodes()&&a.startOffset<b.childNodes.length&&(b=b.childNodes.item(a.startOffset)),a=[b]):a=S.getTextElements(a,!0,!1);return a}function l(){var a=P.getCursor(b),d=a&&a.getSelectedRange(),h=[],h=[],f=!0,g={directTextStyling:!0,directParagraphStyling:!0};d&&(h=e(d),0===h.length&&(h=[d.startContainer,
+d.endContainer],f=!1),h=P.getFormatting().getAppliedStyles(h));void 0!==h[0]&&Z&&(h[0].styleProperties=aa.mergeObjects(h[0].styleProperties,Z));!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(g.directTextStyling=g.directParagraphStyling=c.isLocalCursorWithinOwnAnnotation());g.directTextStyling&&(g.directTextStyling=f&&void 0!==a&&a.getSelectionType()===ops.OdtCursor.RangeSelection);return{enabledFeatures:g,appliedStyles:h,styleSummary:new gui.StyleSummary(h)}}function a(a,b){var d={};Object.keys(a).forEach(function(c){var e=
+a[c](),h=b[c]();e!==h&&(d[c]=h)});return d}function d(){var b,d;d=ba.styleSummary;var c=U.value(),e=c.styleSummary,h=ba.enabledFeatures,f=c.enabledFeatures;b=a(d.text,e.text);d=a(d.paragraph,e.paragraph);h=!(f.directTextStyling===h.directTextStyling&&f.directParagraphStyling===h.directParagraphStyling);ba=c;h&&fa.emit(gui.DirectFormattingController.enabledChanged,f);0<Object.keys(b).length&&fa.emit(gui.DirectFormattingController.textStylingChanged,b);0<Object.keys(d).length&&fa.emit(gui.DirectFormattingController.paragraphStylingChanged,
+d)}function m(){U.reset();d()}function h(a){("string"===typeof a?a:a.getMemberId())===b&&U.reset()}function y(){U.reset()}function x(a){var d=P.getCursor(b);a=a.paragraphElement;d&&S.getParagraphElement(d.getNode())===a&&U.reset()}function z(a,b){b(!a());return!0}function w(a){if(q().directTextStyling){var d=P.getCursorSelection(b),c={"style:text-properties":a};0!==d.length?(a=new ops.OpApplyDirectStyling,a.init({memberid:b,position:d.position,length:d.length,setProperties:c}),g.enqueue([a])):(Z=
+aa.mergeObjects(Z||{},c),U.reset())}}function v(a,b){var d={};d[a]=b;w(d)}function u(a){a=a.spec();Z&&a.memberid===b&&"SplitParagraph"!==a.optype&&(Z=null,U.reset())}function t(a){v("fo:font-weight",a?"bold":"normal")}function A(a){v("fo:font-style",a?"italic":"normal")}function I(a){v("style:text-underline-style",a?"solid":"none")}function K(a){v("style:text-line-through-style",a?"solid":"none")}function L(a){if(q().directParagraphStyling){var d=P.getCursor(b).getSelectedRange(),d=S.getParagraphElements(d),
+c=P.getFormatting(),e=[],h={},m;d.forEach(function(d){var g=P.convertDomPointToCursorStep(d,0,C),l=d.getAttributeNS(odf.Namespaces.textns,"style-name"),k;d=l?h.hasOwnProperty(l)?h[l]:void 0:m;d||(d=f.generateStyleName(),l?(h[l]=d,k=c.createDerivedStyleObject(l,"paragraph",{})):(m=d,k={}),k=a(k),l=new ops.OpAddStyle,l.init({memberid:b,styleName:d.toString(),styleFamily:"paragraph",isAutomaticStyle:!0,setProperties:k}),e.push(l));l=new ops.OpSetParagraphStyle;l.init({memberid:b,styleName:d.toString(),
+position:g});e.push(l)});g.enqueue(e)}}function E(a){L(function(b){return aa.mergeObjects(b,a)})}function N(a){E({"style:paragraph-properties":{"fo:text-align":a}})}function O(a,b){var d=P.getFormatting().getDefaultTabStopDistance(),c=b["style:paragraph-properties"],e;c&&(c=c["fo:margin-left"],e=S.parseLength(c));return aa.mergeObjects(b,{"style:paragraph-properties":{"fo:margin-left":e&&e.unit===d.unit?e.value+a*d.value+e.unit:a*d.value+d.unit}})}function D(a,b){var d=e(a),d=0===d.length?[a.startContainer]:
+d,d=P.getFormatting().getAppliedStyles(d),c=0<d.length?d[0].styleProperties:void 0,h=P.getFormatting().getAppliedStylesForElement(b).styleProperties;if(!c||"text"!==c["style:family"]||!c["style:text-properties"])return!1;if(!h||!h["style:text-properties"])return!0;c=c["style:text-properties"];h=h["style:text-properties"];return!Object.keys(c).every(function(a){return c[a]===h[a]})}function V(){}function W(){return!1}function J(){return!1}var R=this,P=g.getOdtDocument(),aa=new core.Utils,S=odf.OdfUtils,
+fa=new core.EventNotifier([gui.DirectFormattingController.enabledChanged,gui.DirectFormattingController.textStylingChanged,gui.DirectFormattingController.paragraphStylingChanged]),ha=odf.Namespaces.textns,C=core.StepDirection.NEXT,Z=null,ba,U;this.enabledFeatures=q;this.formatTextSelection=w;this.createCursorStyleOp=function(a,d,c){var e=null,h=Z;c&&(h=(c=U.value().appliedStyles[0])&&c.styleProperties);h&&h["style:text-properties"]&&(e=new ops.OpApplyDirectStyling,e.init({memberid:b,position:a,length:d,
+setProperties:{"style:text-properties":h["style:text-properties"]}}),Z=null,U.reset());return e};this.setBold=t;this.setItalic=A;this.setHasUnderline=I;this.setHasStrikethrough=K;this.setFontSize=function(a){v("fo:font-size",a+"pt")};this.setFontName=function(a){v("style:font-name",a)};this.getAppliedStyles=function(){return U.value().appliedStyles};this.toggleBold=z.bind(R,function(){return r().isBold()},t);this.toggleItalic=z.bind(R,function(){return r().isItalic()},A);this.toggleUnderline=z.bind(R,
+function(){return r().hasUnderline()},I);this.toggleStrikethrough=z.bind(R,function(){return r().hasStrikeThrough()},K);this.isBold=function(){return r().isBold()};this.isItalic=function(){return r().isItalic()};this.hasUnderline=function(){return r().hasUnderline()};this.hasStrikeThrough=function(){return r().hasStrikeThrough()};this.fontSize=function(){return r().fontSize()};this.fontName=function(){return r().fontName()};this.isAlignedLeft=function(){return r().isAlignedLeft()};this.isAlignedCenter=
+function(){return r().isAlignedCenter()};this.isAlignedRight=function(){return r().isAlignedRight()};this.isAlignedJustified=function(){return r().isAlignedJustified()};this.alignParagraphLeft=function(){N("left");return!0};this.alignParagraphCenter=function(){N("center");return!0};this.alignParagraphRight=function(){N("right");return!0};this.alignParagraphJustified=function(){N("justify");return!0};this.indent=function(){L(O.bind(null,1));return!0};this.outdent=function(){L(O.bind(null,-1));return!0};
+this.createParagraphStyleOps=function(a){if(!q().directParagraphStyling)return[];var d=P.getCursor(b),c=d.getSelectedRange(),e=[],h,g;d.hasForwardSelection()?(h=d.getAnchorNode(),g=d.getNode()):(h=d.getNode(),g=d.getAnchorNode());d=S.getParagraphElement(g);runtime.assert(Boolean(d),"DirectFormattingController: Cursor outside paragraph");var m=d,l=[P.getPositionFilter(),P.createRootFilter(b)];if(!1!==P.createStepIterator(c.endContainer,c.endOffset,l,m).nextStep())return e;g!==h&&(d=S.getParagraphElement(h));
+if(!Z&&!D(c,d))return e;c=(c=U.value().appliedStyles[0])&&c.styleProperties;if(!c)return e;if(d=d.getAttributeNS(ha,"style-name"))c={"style:text-properties":c["style:text-properties"]},c=P.getFormatting().createDerivedStyleObject(d,"paragraph",c);h=f.generateStyleName();d=new ops.OpAddStyle;d.init({memberid:b,styleName:h,styleFamily:"paragraph",isAutomaticStyle:!0,setProperties:c});e.push(d);d=new ops.OpSetParagraphStyle;d.init({memberid:b,styleName:h,position:a});e.push(d);return e};this.subscribe=
+function(a,d){fa.subscribe(a,d)};this.unsubscribe=function(a,d){fa.unsubscribe(a,d)};this.destroy=function(a){P.unsubscribe(ops.Document.signalCursorAdded,h);P.unsubscribe(ops.Document.signalCursorRemoved,h);P.unsubscribe(ops.Document.signalCursorMoved,h);P.unsubscribe(ops.OdtDocument.signalParagraphStyleModified,y);P.unsubscribe(ops.OdtDocument.signalParagraphChanged,x);P.unsubscribe(ops.OdtDocument.signalOperationEnd,u);P.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,d);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,
+m);a()};(function(){P.subscribe(ops.Document.signalCursorAdded,h);P.subscribe(ops.Document.signalCursorRemoved,h);P.subscribe(ops.Document.signalCursorMoved,h);P.subscribe(ops.OdtDocument.signalParagraphStyleModified,y);P.subscribe(ops.OdtDocument.signalParagraphChanged,x);P.subscribe(ops.OdtDocument.signalOperationEnd,u);P.subscribe(ops.OdtDocument.signalProcessingBatchEnd,d);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,m);U=new core.LazyProperty(l);ba=U.value();n||(R.formatTextSelection=V,
+R.setBold=V,R.setItalic=V,R.setHasUnderline=V,R.setHasStrikethrough=V,R.setFontSize=V,R.setFontName=V,R.toggleBold=J,R.toggleItalic=J,R.toggleUnderline=J,R.toggleStrikethrough=J);p||(R.alignParagraphCenter=W,R.alignParagraphJustified=W,R.alignParagraphLeft=W,R.alignParagraphRight=W,R.createParagraphStyleOps=function(){return[]},R.indent=W,R.outdent=W)})()};gui.DirectFormattingController.enabledChanged="enabled/changed";gui.DirectFormattingController.textStylingChanged="textStyling/changed";
+gui.DirectFormattingController.paragraphStylingChanged="paragraphStyling/changed";gui.DirectFormattingController.SelectionInfo=function(){};
+gui.KeyboardHandler=function(){function g(b,c){c||(c=k.None);switch(b){case gui.KeyboardHandler.KeyCode.LeftMeta:case gui.KeyboardHandler.KeyCode.RightMeta:case gui.KeyboardHandler.KeyCode.MetaInMozilla:c|=k.Meta;break;case gui.KeyboardHandler.KeyCode.Ctrl:c|=k.Ctrl;break;case gui.KeyboardHandler.KeyCode.Alt:c|=k.Alt;break;case gui.KeyboardHandler.KeyCode.Shift:c|=k.Shift}return b+":"+c}var k=gui.KeyboardHandler.Modifier,c=null,b={};this.setDefault=function(b){c=b};this.bind=function(c,k,p,r){c=g(c,
+k);runtime.assert(r||!1===b.hasOwnProperty(c),"tried to overwrite the callback handler of key combo: "+c);b[c]=p};this.unbind=function(c,k){var p=g(c,k);delete b[p]};this.reset=function(){c=null;b={}};this.handleEvent=function(f){var n=f.keyCode,p=k.None;f.metaKey&&(p|=k.Meta);f.ctrlKey&&(p|=k.Ctrl);f.altKey&&(p|=k.Alt);f.shiftKey&&(p|=k.Shift);n=g(n,p);n=b[n];p=!1;n?p=n():null!==c&&(p=c(f));p&&(f.preventDefault?f.preventDefault():f.returnValue=!1)}};
+gui.KeyboardHandler.Modifier={None:0,Meta:1,Ctrl:2,Alt:4,CtrlAlt:6,Shift:8,MetaShift:9,CtrlShift:10,AltShift:12};gui.KeyboardHandler.KeyCode={Backspace:8,Tab:9,Clear:12,Enter:13,Shift:16,Ctrl:17,Alt:18,End:35,Home:36,Left:37,Up:38,Right:39,Down:40,Delete:46,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,LeftMeta:91,RightMeta:93,MetaInMozilla:224};
+gui.HyperlinkClickHandler=function(g,k,c){function b(){var a=g();runtime.assert(Boolean(a.classList),"Document container has no classList element");a.classList.remove("webodf-inactiveLinks")}function f(){var a=g();runtime.assert(Boolean(a.classList),"Document container has no classList element");a.classList.add("webodf-inactiveLinks")}function n(){a.removeEventListener("focus",f,!1);m.forEach(function(a){k.unbind(a.keyCode,a.modifier);c.unbind(a.keyCode,a.modifier)});m.length=0}function p(d){n();
+if(d!==r.None){a.addEventListener("focus",f,!1);switch(d){case r.Ctrl:m.push({keyCode:q.Ctrl,modifier:r.None});break;case r.Meta:m.push({keyCode:q.LeftMeta,modifier:r.None}),m.push({keyCode:q.RightMeta,modifier:r.None}),m.push({keyCode:q.MetaInMozilla,modifier:r.None})}m.forEach(function(a){k.bind(a.keyCode,a.modifier,b);c.bind(a.keyCode,a.modifier,f)})}}var r=gui.KeyboardHandler.Modifier,q=gui.KeyboardHandler.KeyCode,e=xmldom.XPath,l=odf.OdfUtils,a=runtime.getWindow(),d=r.None,m=[];runtime.assert(null!==
+a,"Expected to be run in an environment which has a global window, like a browser.");this.handleClick=function(b){var c=b.target||b.srcElement,f,m;b.ctrlKey?f=r.Ctrl:b.metaKey&&(f=r.Meta);if(d===r.None||d===f){a:{for(;null!==c;){if(l.isHyperlink(c))break a;if(l.isParagraph(c))break;c=c.parentNode}c=null}c&&(c=l.getHyperlinkTarget(c),""!==c&&("#"===c[0]?(c=c.substring(1),f=g(),m=e.getODFElementsWithXPath(f,"//text:bookmark-start[@text:name='"+c+"']",odf.Namespaces.lookupNamespaceURI),0===m.length&&
+(m=e.getODFElementsWithXPath(f,"//text:bookmark[@text:name='"+c+"']",odf.Namespaces.lookupNamespaceURI)),0<m.length&&m[0].scrollIntoView(!0)):/^\s*(javascript|data):/.test(c)?runtime.log("WARN:","potentially malicious URL ignored"):a.open(c),b.preventDefault?b.preventDefault():b.returnValue=!1))}};this.setModifier=function(a){d!==a&&(runtime.assert(a===r.None||a===r.Ctrl||a===r.Meta,"Unsupported KeyboardHandler.Modifier value: "+a),d=a,d!==r.None?f():b(),p(d))};this.getModifier=function(){return d};
+this.destroy=function(a){f();n();a()}};
+gui.EventManager=function(g){function k(a){function d(a,b,c){var e,h=!1;e="on"+b;a.attachEvent&&(a.attachEvent(e,c),h=!0);!h&&a.addEventListener&&(a.addEventListener(b,c,!1),h=!0);h&&!u[b]||!a.hasOwnProperty(e)||(a[e]=c)}function b(a,d,c){var e="on"+d;a.detachEvent&&a.detachEvent(e,c);a.removeEventListener&&a.removeEventListener(d,c,!1);a[e]===c&&(a[e]=null)}function c(b){if(-1===h.indexOf(b)){h.push(b);if(e.filters.every(function(a){return a(b)}))try{f.emit(a,b)}catch(d){runtime.log("Error occurred while processing "+
+a+":\n"+d.message+"\n"+d.stack)}runtime.setTimeout(function(){h.splice(h.indexOf(b),1)},0)}}var e=this,h=[],f=new core.EventNotifier([a]);this.filters=[];this.subscribe=function(b){f.subscribe(a,b)};this.unsubscribe=function(b){f.unsubscribe(a,b)};this.destroy=function(){b(v,a,c);b(K,a,c);b(L,a,c)};t[a]&&d(v,a,c);d(K,a,c);d(L,a,c)}function c(a,b,d){function c(b){d(b,e,function(b){b.type=a;h.emit(a,b)})}var e={},h=new core.EventNotifier([a]);this.subscribe=function(b){h.subscribe(a,b)};this.unsubscribe=
+function(b){h.unsubscribe(a,b)};this.destroy=function(){b.forEach(function(a){E.unsubscribe(a,c)})};(function(){b.forEach(function(a){E.subscribe(a,c)})})()}function b(a){runtime.clearTimeout(a);delete N[a]}function f(a,d){var c=runtime.setTimeout(function(){a();b(c)},d);N[c]=!0;return c}function n(a,d,c){var e=a.touches.length,h=a.touches[0],g=d.timer;"touchmove"===a.type||"touchend"===a.type?g&&b(g):"touchstart"===a.type&&(1!==e?runtime.clearTimeout(g):g=f(function(){c({clientX:h.clientX,clientY:h.clientY,
+pageX:h.pageX,pageY:h.pageY,target:a.target||a.srcElement||null,detail:1})},400));d.timer=g}function p(a,b,d){var c=a.touches[0],e=a.target||a.srcElement||null,h=b.target;1!==a.touches.length||"touchend"===a.type?h=null:"touchstart"===a.type&&"webodf-draggable"===e.getAttribute("class")?h=e:"touchmove"===a.type&&h&&(a.preventDefault(),a.stopPropagation(),d({clientX:c.clientX,clientY:c.clientY,pageX:c.pageX,pageY:c.pageY,target:h,detail:1}));b.target=h}function r(a,b,d){var c=a.target||a.srcElement||
+null,e=b.dragging;"drag"===a.type?e=!0:"touchend"===a.type&&e&&(e=!1,a=a.changedTouches[0],d({clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY,target:c,detail:1}));b.dragging=e}function q(){L.classList.add("webodf-touchEnabled");E.unsubscribe("touchstart",q)}function e(a){var b=a.scrollX,d=a.scrollY;this.restore=function(){a.scrollX===b&&a.scrollY===d||a.scrollTo(b,d)}}function l(a){var b=a.scrollTop,d=a.scrollLeft;this.restore=function(){if(a.scrollTop!==b||a.scrollLeft!==d)a.scrollTop=
+b,a.scrollLeft=d}}function a(a,b){var d=I[a]||A[a]||null;!d&&b&&(d=I[a]=new k(a));return d}function d(b,d){a(b,!0).subscribe(d)}function m(b,d){var c=a(b,!1);c&&c.unsubscribe(d)}function h(){return g.getDOMDocument().activeElement===K}function y(){h()&&K.blur();K.setAttribute("disabled","true")}function x(){K.removeAttribute("disabled")}function z(a){for(var b=[];a;)(a.scrollWidth>a.clientWidth||a.scrollHeight>a.clientHeight)&&b.push(new l(a)),a=a.parentNode;b.push(new e(v));return b}function w(){var a;
+h()||(a=z(K),x(),K.focus(),a.forEach(function(a){a.restore()}))}var v=runtime.getWindow(),u={beforecut:!0,beforepaste:!0,longpress:!0,drag:!0,dragstop:!0},t={mousedown:!0,mouseup:!0,focus:!0},A={},I={},K,L=g.getCanvas().getElement(),E=this,N={};this.addFilter=function(b,d){a(b,!0).filters.push(d)};this.removeFilter=function(b,d){var c=a(b,!0),e=c.filters.indexOf(d);-1!==e&&c.filters.splice(e,1)};this.subscribe=d;this.unsubscribe=m;this.hasFocus=h;this.focus=w;this.getEventTrap=function(){return K};
+this.setEditing=function(a){var b=h();b&&K.blur();a?K.removeAttribute("readOnly"):K.setAttribute("readOnly","true");b&&w()};this.destroy=function(a){m("touchstart",q);Object.keys(N).forEach(function(a){b(parseInt(a,10))});N.length=0;Object.keys(A).forEach(function(a){A[a].destroy()});A={};m("mousedown",y);m("mouseup",x);m("contextmenu",x);Object.keys(I).forEach(function(a){I[a].destroy()});I={};K.parentNode.removeChild(K);a()};(function(){var a=g.getOdfCanvas().getSizer(),b=a.ownerDocument;runtime.assert(Boolean(v),
+"EventManager requires a window object to operate correctly");K=b.createElement("textarea");K.id="eventTrap";K.setAttribute("tabindex","-1");K.setAttribute("readOnly","true");K.setAttribute("rows","1");a.appendChild(K);d("mousedown",y);d("mouseup",x);d("contextmenu",x);A.longpress=new c("longpress",["touchstart","touchmove","touchend"],n);A.drag=new c("drag",["touchstart","touchmove","touchend"],p);A.dragstop=new c("dragstop",["drag","touchend"],r);d("touchstart",q)})()};
+gui.IOSSafariSupport=function(g){function k(){c.innerHeight!==c.outerHeight&&(b.style.display="none",runtime.requestAnimationFrame(function(){b.style.display="block"}))}var c=runtime.getWindow(),b=g.getEventTrap();this.destroy=function(c){g.unsubscribe("focus",k);b.removeAttribute("autocapitalize");b.style.WebkitTransform="";c()};g.subscribe("focus",k);b.setAttribute("autocapitalize","off");b.style.WebkitTransform="translateX(-10000px)"};
+gui.HyperlinkController=function(g,k,c,b){function f(){var b=!0;!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(b=c.isLocalCursorWithinOwnAnnotation());b!==e&&(e=b,q.emit(gui.HyperlinkController.enabledChanged,e))}function n(c){c.getMemberId()===b&&f()}var p=odf.OdfUtils,r=g.getOdtDocument(),q=new core.EventNotifier([gui.HyperlinkController.enabledChanged]),e=!1;this.isEnabled=function(){return e};this.subscribe=function(b,a){q.subscribe(b,a)};this.unsubscribe=function(b,a){q.unsubscribe(b,
+a)};this.addHyperlink=function(c,a){if(e){var d=r.getCursorSelection(b),f=new ops.OpApplyHyperlink,h=[];if(0===d.length||a)a=a||c,f=new ops.OpInsertText,f.init({memberid:b,position:d.position,text:a}),d.length=a.length,h.push(f);f=new ops.OpApplyHyperlink;f.init({memberid:b,position:d.position,length:d.length,hyperlink:c});h.push(f);g.enqueue(h)}};this.removeHyperlinks=function(){if(e){var c=r.createPositionIterator(r.getRootNode()),a=r.getCursor(b).getSelectedRange(),d=p.getHyperlinkElements(a),
+f=a.collapsed&&1===d.length,h=r.getDOMDocument().createRange(),k=[],n,q;0!==d.length&&(d.forEach(function(a){h.selectNodeContents(a);n=r.convertDomToCursorRange({anchorNode:h.startContainer,anchorOffset:h.startOffset,focusNode:h.endContainer,focusOffset:h.endOffset});q=new ops.OpRemoveHyperlink;q.init({memberid:b,position:n.position,length:n.length});k.push(q)}),f||(f=d[0],-1===a.comparePoint(f,0)&&(h.setStart(f,0),h.setEnd(a.startContainer,a.startOffset),n=r.convertDomToCursorRange({anchorNode:h.startContainer,
+anchorOffset:h.startOffset,focusNode:h.endContainer,focusOffset:h.endOffset}),0<n.length&&(q=new ops.OpApplyHyperlink,q.init({memberid:b,position:n.position,length:n.length,hyperlink:p.getHyperlinkTarget(f)}),k.push(q))),d=d[d.length-1],c.moveToEndOfNode(d),c=c.unfilteredDomOffset(),1===a.comparePoint(d,c)&&(h.setStart(a.endContainer,a.endOffset),h.setEnd(d,c),n=r.convertDomToCursorRange({anchorNode:h.startContainer,anchorOffset:h.startOffset,focusNode:h.endContainer,focusOffset:h.endOffset}),0<n.length&&
+(q=new ops.OpApplyHyperlink,q.init({memberid:b,position:n.position,length:n.length,hyperlink:p.getHyperlinkTarget(d)}),k.push(q)))),g.enqueue(k),h.detach())}};this.destroy=function(b){r.unsubscribe(ops.Document.signalCursorMoved,n);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,f);b()};r.subscribe(ops.Document.signalCursorMoved,n);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,f);f()};gui.HyperlinkController.enabledChanged="enabled/changed";
+gui.ImageController=function(g,k,c,b,f){function n(){var a=!0;!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(a=c.isLocalCursorWithinOwnAnnotation());a!==m&&(m=a,d.emit(gui.ImageController.enabledChanged,m))}function p(a){a.getMemberId()===b&&n()}var r={"image/gif":".gif","image/jpeg":".jpg","image/png":".png"},q=odf.Namespaces.textns,e=g.getOdtDocument(),l=odf.OdfUtils,a=e.getFormatting(),d=new core.EventNotifier([gui.HyperlinkController.enabledChanged]),m=!1;this.isEnabled=function(){return m};
+this.subscribe=function(a,b){d.subscribe(a,b)};this.unsubscribe=function(a,b){d.unsubscribe(a,b)};this.insertImage=function(d,c,k,n){if(m){var p=new core.CSSUnits;runtime.assert(0<k&&0<n,"Both width and height of the image should be greater than 0px.");n={width:k,height:n};if(k=l.getParagraphElement(e.getCursor(b).getNode()).getAttributeNS(q,"style-name")){k=a.getContentSize(k,"paragraph");var v=1,u=1;n.width>k.width&&(v=k.width/n.width);n.height>k.height&&(u=k.height/n.height);k=Math.min(v,u);n=
+{width:n.width*k,height:n.height*k}}k=p.convert(n.width,"px","cm")+"cm";p=p.convert(n.height,"px","cm")+"cm";u=e.getOdfCanvas().odfContainer().rootElement.styles;n=d.toLowerCase();var v=r.hasOwnProperty(n)?r[n]:null,t;n=[];runtime.assert(null!==v,"Image type is not supported: "+d);v="Pictures/"+f.generateImageName()+v;t=new ops.OpSetBlob;t.init({memberid:b,filename:v,mimetype:d,content:c});n.push(t);a.getStyleElement("Graphics","graphic",[u])||(d=new ops.OpAddStyle,d.init({memberid:b,styleName:"Graphics",
+styleFamily:"graphic",isAutomaticStyle:!1,setProperties:{"style:graphic-properties":{"text:anchor-type":"paragraph","svg:x":"0cm","svg:y":"0cm","style:wrap":"dynamic","style:number-wrapped-paragraphs":"no-limit","style:wrap-contour":"false","style:vertical-pos":"top","style:vertical-rel":"paragraph","style:horizontal-pos":"center","style:horizontal-rel":"paragraph"}}}),n.push(d));d=f.generateStyleName();c=new ops.OpAddStyle;c.init({memberid:b,styleName:d,styleFamily:"graphic",isAutomaticStyle:!0,
+setProperties:{"style:parent-style-name":"Graphics","style:graphic-properties":{"style:vertical-pos":"top","style:vertical-rel":"baseline","style:horizontal-pos":"center","style:horizontal-rel":"paragraph","fo:background-color":"transparent","style:background-transparency":"100%","style:shadow":"none","style:mirror":"none","fo:clip":"rect(0cm, 0cm, 0cm, 0cm)","draw:luminance":"0%","draw:contrast":"0%","draw:red":"0%","draw:green":"0%","draw:blue":"0%","draw:gamma":"100%","draw:color-inversion":"false",
+"draw:image-opacity":"100%","draw:color-mode":"standard"}}});n.push(c);t=new ops.OpInsertImage;t.init({memberid:b,position:e.getCursorPosition(b),filename:v,frameWidth:k,frameHeight:p,frameStyleName:d,frameName:f.generateFrameName()});n.push(t);g.enqueue(n)}};this.destroy=function(a){e.unsubscribe(ops.Document.signalCursorMoved,p);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,n);a()};e.subscribe(ops.Document.signalCursorMoved,p);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,n);n()};
+gui.ImageController.enabledChanged="enabled/changed";
+gui.ImageSelector=function(g){function k(){var c=g.getSizer(),k=f.createElement("div");k.id="imageSelector";k.style.borderWidth="1px";c.appendChild(k);b.forEach(function(b){var c=f.createElement("div");c.className=b;k.appendChild(c)});return k}var c=odf.Namespaces.svgns,b="topLeft topRight bottomRight bottomLeft topMiddle rightMiddle bottomMiddle leftMiddle".split(" "),f=g.getElement().ownerDocument,n=!1;this.select=function(b){var r,q,e=f.getElementById("imageSelector");e||(e=k());n=!0;r=e.parentNode;
+q=b.getBoundingClientRect();var l=r.getBoundingClientRect(),a=g.getZoomLevel();r=(q.left-l.left)/a-1;q=(q.top-l.top)/a-1;e.style.display="block";e.style.left=r+"px";e.style.top=q+"px";e.style.width=b.getAttributeNS(c,"width");e.style.height=b.getAttributeNS(c,"height")};this.clearSelection=function(){var b;n&&(b=f.getElementById("imageSelector"))&&(b.style.display="none");n=!1};this.isSelectorElement=function(b){var c=f.getElementById("imageSelector");return c?b===c||b.parentNode===c:!1}};
+(function(){function g(g){function c(b){p=b.which&&String.fromCharCode(b.which)===n;n=void 0;return!1===p}function b(){p=!1}function f(b){n=b.data;p=!1}var n,p=!1;this.destroy=function(n){g.unsubscribe("textInput",b);g.unsubscribe("compositionend",f);g.removeFilter("keypress",c);n()};g.subscribe("textInput",b);g.subscribe("compositionend",f);g.addFilter("keypress",c)}gui.InputMethodEditor=function(k,c){function b(b){a&&(b?a.getNode().setAttributeNS("urn:webodf:names:cursor","composing","true"):(a.getNode().removeAttributeNS("urn:webodf:names:cursor",
+"composing"),h.textContent=""))}function f(){x&&(x=!1,b(!1),w.emit(gui.InputMethodEditor.signalCompositionEnd,{data:z}),z="")}function n(){I||(I=!0,f(),a&&a.getSelectedRange().collapsed?d.value="":d.value=u.writeToString(a.getSelectedRange().cloneContents()),d.setSelectionRange(0,d.value.length),I=!1)}function p(){c.hasFocus()&&y.trigger()}function r(){v=void 0;y.cancel();b(!0);x||w.emit(gui.InputMethodEditor.signalCompositionStart,{data:""})}function q(a){a=v=a.data;x=!0;z+=a;y.trigger()}function e(a){a.data!==
+v&&(a=a.data,x=!0,z+=a,y.trigger());v=void 0}function l(){h.textContent=d.value}var a=null,d=c.getEventTrap(),m=d.ownerDocument,h,y,x=!1,z="",w=new core.EventNotifier([gui.InputMethodEditor.signalCompositionStart,gui.InputMethodEditor.signalCompositionEnd]),v,u,t=[],A,I=!1;this.subscribe=w.subscribe;this.unsubscribe=w.unsubscribe;this.registerCursor=function(b){b.getMemberId()===k&&(a=b,a.getNode().appendChild(h),b.subscribe(ops.OdtCursor.signalCursorUpdated,p),c.subscribe("input",l),c.subscribe("compositionupdate",
+l))};this.removeCursor=function(b){a&&b===k&&(a.getNode().removeChild(h),a.unsubscribe(ops.OdtCursor.signalCursorUpdated,p),c.unsubscribe("input",l),c.unsubscribe("compositionupdate",l),a=null)};this.destroy=function(a){c.unsubscribe("compositionstart",r);c.unsubscribe("compositionend",q);c.unsubscribe("textInput",e);c.unsubscribe("keypress",f);c.unsubscribe("focus",n);core.Async.destroyAll(A,a)};(function(){u=new odf.TextSerializer;u.filter=new odf.OdfNodeFilter;c.subscribe("compositionstart",r);
+c.subscribe("compositionend",q);c.subscribe("textInput",e);c.subscribe("keypress",f);c.subscribe("focus",n);t.push(new g(c));A=t.map(function(a){return a.destroy});h=m.createElement("span");h.setAttribute("id","composer");y=core.Task.createTimeoutTask(n,1);A.push(y.destroy)})()};gui.InputMethodEditor.signalCompositionStart="input/compositionstart";gui.InputMethodEditor.signalCompositionEnd="input/compositionend"})();
+gui.MetadataController=function(g,k){function c(b){n.emit(gui.MetadataController.signalMetadataChanged,b)}function b(b){var c=-1===p.indexOf(b);c||runtime.log("Setting "+b+" is restricted.");return c}var f=g.getOdtDocument(),n=new core.EventNotifier([gui.MetadataController.signalMetadataChanged]),p=["dc:creator","dc:date","meta:editing-cycles","meta:editing-duration","meta:document-statistic"];this.setMetadata=function(c,f){var e={},l="",a;c&&Object.keys(c).filter(b).forEach(function(a){e[a]=c[a]});
+f&&(l=f.filter(b).join(","));if(0<l.length||0<Object.keys(e).length)a=new ops.OpUpdateMetadata,a.init({memberid:k,setProperties:e,removedProperties:0<l.length?{attributes:l}:null}),g.enqueue([a])};this.getMetadata=function(b){var c;runtime.assert("string"===typeof b,"Property must be a string");c=b.split(":");runtime.assert(2===c.length,"Property must be a namespace-prefixed string");b=odf.Namespaces.lookupNamespaceURI(c[0]);runtime.assert(Boolean(b),"Prefix must be for an ODF namespace.");return f.getOdfCanvas().odfContainer().getMetadata(b,
+c[1])};this.subscribe=function(b,c){n.subscribe(b,c)};this.unsubscribe=function(b,c){n.unsubscribe(b,c)};this.destroy=function(b){f.unsubscribe(ops.OdtDocument.signalMetadataUpdated,c);b()};f.subscribe(ops.OdtDocument.signalMetadataUpdated,c)};gui.MetadataController.signalMetadataChanged="metadata/changed";
+gui.PasteController=function(g,k,c,b){function f(){r=!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)?c.isLocalCursorWithinOwnAnnotation():!0}function n(a){a.getMemberId()===b&&f()}var p=g.getOdtDocument(),r=!1,q=odf.Namespaces.textns,e=core.StepDirection.NEXT,l=odf.OdfUtils;this.isEnabled=function(){return r};this.paste=function(a){if(r){var d=p.getCursorPosition(b),c=p.getCursor(b).getNode(),c=l.getParagraphElement(c),h=c.getAttributeNS(q,"style-name")||"",f=d,k=[],n=p.convertDomPointToCursorStep(c,
+0,e);a.replace(/\r/g,"").split("\n").forEach(function(a){var d=new ops.OpInsertText,c=new ops.OpSplitParagraph;d.init({memberid:b,position:f,text:a,moveCursor:!0});k.push(d);f+=a.length;c.init({memberid:b,position:f,paragraphStyleName:h,sourceParagraphPosition:n,moveCursor:!0});k.push(c);n=f+=1});k.pop();g.enqueue(k)}};this.destroy=function(a){p.unsubscribe(ops.Document.signalCursorMoved,n);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,f);a()};p.subscribe(ops.Document.signalCursorMoved,n);
+k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,f);f()};gui.ClosestXOffsetScanner=function(g){function k(b){return null!==b&&void 0!==f?Math.abs(b-g)>f:!1}function c(b){null!==b&&!1===k(b)&&(f=Math.abs(b-g))}var b=this,f,n=gui.StepInfo.VisualDirection.LEFT_TO_RIGHT;this.token=void 0;this.process=function(f,g,q){var e,l;f.visualDirection===n?(e=g&&g.right,l=q&&q.left):(e=g&&g.left,l=q&&q.right);if(k(e)||k(l))return!0;if(g||q)c(e),c(l),b.token=f.token;return!1}};
+gui.LineBoundaryScanner=function(){var g=this,k=null;this.token=void 0;this.process=function(c,b,f){var n;if(n=f)if(k){var p=k;n=Math.min(p.bottom-p.top,f.bottom-f.top);var r=Math.max(p.top,f.top),p=Math.min(p.bottom,f.bottom)-r;n=.4>=(0<n?p/n:0)}else n=!1;!b||f&&!n||(g.token=c.token);if(n)return!0;k=(c=k)&&b?{left:Math.min(c.left,b.left),right:Math.max(c.right,b.right),top:Math.min(c.top,b.top),bottom:Math.min(c.bottom,b.bottom)}:c||b;return!1}};
+gui.ParagraphBoundaryScanner=function(){var g=this,k=!1,c,b=odf.OdfUtils;this.token=void 0;this.process=function(f){var n=b.getParagraphElement(f.container());k||(c=n,k=!0);if(c!==n)return!0;g.token=f.token;return!1}};
+odf.WordBoundaryFilter=function(g,k){function c(a,b,d){for(var c=null,e=g.getRootNode(),f;a!==e&&null!==a&&null===c;)f=0>b?a.previousSibling:a.nextSibling,d(f)===NodeFilter.FILTER_ACCEPT&&(c=f),a=a.parentNode;return c}function b(a,b){var d;return null===a?m.NO_NEIGHBOUR:p.isCharacterElement(a)?m.SPACE_CHAR:a.nodeType===f||p.isTextSpan(a)||p.isHyperlink(a)?(d=a.textContent.charAt(b()),q.test(d)?m.SPACE_CHAR:r.test(d)?m.PUNCTUATION_CHAR:m.WORD_CHAR):m.OTHER}var f=Node.TEXT_NODE,n=Node.ELEMENT_NODE,
+p=odf.OdfUtils,r=/[!-#%-*,-\/:-;?-@\[-\]_{}\u00a1\u00ab\u00b7\u00bb\u00bf;\u00b7\u055a-\u055f\u0589-\u058a\u05be\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0964-\u0965\u0970\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u104a-\u104f\u10fb\u1361-\u1368\u166d-\u166e\u169b-\u169c\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944-\u1945\u19de-\u19df\u1a1e-\u1a1f\u1b5a-\u1b60\u1c3b-\u1c3f\u1c7e-\u1c7f\u2000-\u206e\u207d-\u207e\u208d-\u208e\u3008-\u3009\u2768-\u2775\u27c5-\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc-\u29fd\u2cf9-\u2cfc\u2cfe-\u2cff\u2e00-\u2e7e\u3000-\u303f\u30a0\u30fb\ua60d-\ua60f\ua673\ua67e\ua874-\ua877\ua8ce-\ua8cf\ua92e-\ua92f\ua95f\uaa5c-\uaa5f\ufd3e-\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]|\ud800[\udd00-\udd01\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]/,
+q=/\s/,e=core.PositionFilter.FilterResult.FILTER_ACCEPT,l=core.PositionFilter.FilterResult.FILTER_REJECT,a=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,d=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,m={NO_NEIGHBOUR:0,SPACE_CHAR:1,PUNCTUATION_CHAR:2,WORD_CHAR:3,OTHER:4};this.acceptPosition=function(f){var g=f.container(),p=f.leftNode(),q=f.rightNode(),r=f.unfilteredDomOffset,v=function(){return f.unfilteredDomOffset()-1};g.nodeType===n&&(null===q&&(q=c(g,1,f.getNodeFilter())),null===p&&(p=
+c(g,-1,f.getNodeFilter())));g!==q&&(r=function(){return 0});g!==p&&null!==p&&(v=function(){return p.textContent.length-1});g=b(p,v);q=b(q,r);return g===m.WORD_CHAR&&q===m.WORD_CHAR||g===m.PUNCTUATION_CHAR&&q===m.PUNCTUATION_CHAR||k===a&&g!==m.NO_NEIGHBOUR&&q===m.SPACE_CHAR||k===d&&g===m.SPACE_CHAR&&q!==m.NO_NEIGHBOUR?l:e}};odf.WordBoundaryFilter.IncludeWhitespace={None:0,TRAILING:1,LEADING:2};
+gui.SelectionController=function(g,k){function c(a){var b=a.spec();if(a.isEdit||b.memberid===k)I=void 0,K.cancel()}function b(){var a=x.getCursor(k).getNode();return x.createStepIterator(a,0,[v,t],x.getRootElement(a))}function f(a,b,d){d=new odf.WordBoundaryFilter(x,d);var c=x.getRootElement(a)||x.getRootNode(),e=x.createRootFilter(c);return x.createStepIterator(a,b,[v,e,d],c)}function n(a,b){return b?{anchorNode:a.startContainer,anchorOffset:a.startOffset,focusNode:a.endContainer,focusOffset:a.endOffset}:
+{anchorNode:a.endContainer,anchorOffset:a.endOffset,focusNode:a.startContainer,focusOffset:a.startOffset}}function p(a,b,d){var c=new ops.OpMoveCursor;c.init({memberid:k,position:a,length:b||0,selectionType:d});return c}function r(a,b,d){var c;c=x.getCursor(k);c=n(c.getSelectedRange(),c.hasForwardSelection());c.focusNode=a;c.focusOffset=b;d||(c.anchorNode=c.focusNode,c.anchorOffset=c.focusOffset);a=x.convertDomToCursorRange(c);g.enqueue([p(a.position,a.length)])}function q(a){var b;b=f(a.startContainer,
+a.startOffset,L);b.roundToPreviousStep()&&a.setStart(b.container(),b.offset());b=f(a.endContainer,a.endOffset,E);b.roundToNextStep()&&a.setEnd(b.container(),b.offset())}function e(a){var b=w.getParagraphElements(a),d=b[0],b=b[b.length-1];d&&a.setStart(d,0);b&&(w.isParagraph(a.endContainer)&&0===a.endOffset?a.setEndBefore(b):a.setEnd(b,b.childNodes.length))}function l(a,b,d,c){var e,f;c?(e=d.startContainer,f=d.startOffset):(e=d.endContainer,f=d.endOffset);z.containsNode(a,e)||(f=0>z.comparePoints(a,
+0,e,f)?0:a.childNodes.length,e=a);a=x.createStepIterator(e,f,b,w.getParagraphElement(e)||a);a.roundToClosestStep()||runtime.assert(!1,"No step found in requested range");c?d.setStart(a.container(),a.offset()):d.setEnd(a.container(),a.offset())}function a(a,d){var c=b();c.advanceStep(a)&&r(c.container(),c.offset(),d)}function d(a,d){var c,e=I,f=[new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner];void 0===e&&A&&(e=A());isNaN(e)||(c=b(),u.moveToFilteredStep(c,a,f)&&c.advanceStep(a)&&(f=[new gui.ClosestXOffsetScanner(e),
+new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner],u.moveToFilteredStep(c,a,f)&&(r(c.container(),c.offset(),d),I=e,K.restart())))}function m(a,d){var c=b(),e=[new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner];u.moveToFilteredStep(c,a,e)&&r(c.container(),c.offset(),d)}function h(a,b){var d=x.getCursor(k),d=n(d.getSelectedRange(),d.hasForwardSelection()),d=f(d.focusNode,d.focusOffset,L);d.advanceStep(a)&&r(d.container(),d.offset(),b)}function y(a,b,d){var c=!1,e=x.getCursor(k),
+e=n(e.getSelectedRange(),e.hasForwardSelection()),c=x.getRootElement(e.focusNode);runtime.assert(Boolean(c),"SelectionController: Cursor outside root");e=x.createStepIterator(e.focusNode,e.focusOffset,[v,t],c);e.roundToClosestStep();e.advanceStep(a)&&(d=d(e.container()))&&(a===N?(e.setPosition(d,0),c=e.roundToNextStep()):(e.setPosition(d,d.childNodes.length),c=e.roundToPreviousStep()),c&&r(e.container(),e.offset(),b))}var x=g.getOdtDocument(),z=core.DomUtils,w=odf.OdfUtils,v=x.getPositionFilter(),
+u=new gui.GuiStepUtils,t=x.createRootFilter(k),A=null,I,K,L=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,E=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,N=core.StepDirection.PREVIOUS,O=core.StepDirection.NEXT;this.selectionToRange=function(a){var b=0<=z.comparePoints(a.anchorNode,a.anchorOffset,a.focusNode,a.focusOffset),d=a.focusNode.ownerDocument.createRange();b?(d.setStart(a.anchorNode,a.anchorOffset),d.setEnd(a.focusNode,a.focusOffset)):(d.setStart(a.focusNode,a.focusOffset),d.setEnd(a.anchorNode,
+a.anchorOffset));return{range:d,hasForwardSelection:b}};this.rangeToSelection=n;this.selectImage=function(a){var b=x.getRootElement(a),d=x.createRootFilter(b),b=x.createStepIterator(a,0,[d,x.getPositionFilter()],b),c;b.roundToPreviousStep()||runtime.assert(!1,"No walkable position before frame");d=b.container();c=b.offset();b.setPosition(a,a.childNodes.length);b.roundToNextStep()||runtime.assert(!1,"No walkable position after frame");a=x.convertDomToCursorRange({anchorNode:d,anchorOffset:c,focusNode:b.container(),
+focusOffset:b.offset()});a=p(a.position,a.length,ops.OdtCursor.RegionSelection);g.enqueue([a])};this.expandToWordBoundaries=q;this.expandToParagraphBoundaries=e;this.selectRange=function(a,b,d){var c=x.getOdfCanvas().getElement(),f,h=[v];f=z.containsNode(c,a.startContainer);c=z.containsNode(c,a.endContainer);if(f||c)if(f&&c&&(2===d?q(a):3<=d&&e(a)),(d=b?x.getRootElement(a.startContainer):x.getRootElement(a.endContainer))||(d=x.getRootNode()),h.push(x.createRootFilter(d)),l(d,h,a,!0),l(d,h,a,!1),a=
+n(a,b),b=x.convertDomToCursorRange(a),a=x.getCursorSelection(k),b.position!==a.position||b.length!==a.length)a=p(b.position,b.length,ops.OdtCursor.RangeSelection),g.enqueue([a])};this.moveCursorToLeft=function(){a(N,!1);return!0};this.moveCursorToRight=function(){a(O,!1);return!0};this.extendSelectionToLeft=function(){a(N,!0);return!0};this.extendSelectionToRight=function(){a(O,!0);return!0};this.setCaretXPositionLocator=function(a){A=a};this.moveCursorUp=function(){d(N,!1);return!0};this.moveCursorDown=
+function(){d(O,!1);return!0};this.extendSelectionUp=function(){d(N,!0);return!0};this.extendSelectionDown=function(){d(O,!0);return!0};this.moveCursorBeforeWord=function(){h(N,!1);return!0};this.moveCursorPastWord=function(){h(O,!1);return!0};this.extendSelectionBeforeWord=function(){h(N,!0);return!0};this.extendSelectionPastWord=function(){h(O,!0);return!0};this.moveCursorToLineStart=function(){m(N,!1);return!0};this.moveCursorToLineEnd=function(){m(O,!1);return!0};this.extendSelectionToLineStart=
+function(){m(N,!0);return!0};this.extendSelectionToLineEnd=function(){m(O,!0);return!0};this.extendSelectionToParagraphStart=function(){y(N,!0,w.getParagraphElement);return!0};this.extendSelectionToParagraphEnd=function(){y(O,!0,w.getParagraphElement);return!0};this.moveCursorToParagraphStart=function(){y(N,!1,w.getParagraphElement);return!0};this.moveCursorToParagraphEnd=function(){y(O,!1,w.getParagraphElement);return!0};this.moveCursorToDocumentStart=function(){y(N,!1,x.getRootElement);return!0};
+this.moveCursorToDocumentEnd=function(){y(O,!1,x.getRootElement);return!0};this.extendSelectionToDocumentStart=function(){y(N,!0,x.getRootElement);return!0};this.extendSelectionToDocumentEnd=function(){y(O,!0,x.getRootElement);return!0};this.extendSelectionToEntireDocument=function(){var a=x.getCursor(k),a=x.getRootElement(a.getNode()),b,d,c;runtime.assert(Boolean(a),"SelectionController: Cursor outside root");c=x.createStepIterator(a,0,[v,t],a);c.roundToClosestStep();b=c.container();d=c.offset();
+c.setPosition(a,a.childNodes.length);c.roundToClosestStep();a=x.convertDomToCursorRange({anchorNode:b,anchorOffset:d,focusNode:c.container(),focusOffset:c.offset()});g.enqueue([p(a.position,a.length)]);return!0};this.destroy=function(a){x.unsubscribe(ops.OdtDocument.signalOperationStart,c);core.Async.destroyAll([K.destroy],a)};(function(){K=core.Task.createTimeoutTask(function(){I=void 0},2E3);x.subscribe(ops.OdtDocument.signalOperationStart,c)})()};
+gui.TextController=function(g,k,c,b,f,n){function p(){y=!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)?c.isLocalCursorWithinOwnAnnotation():!0}function r(a){a.getMemberId()===b&&p()}function q(a,b,c){var e=[d.getPositionFilter()];c&&e.push(d.createRootFilter(a.startContainer));c=d.createStepIterator(a.startContainer,a.startOffset,e,b);c.roundToClosestStep()||runtime.assert(!1,"No walkable step found in paragraph element at range start");b=d.convertDomPointToCursorStep(c.container(),c.offset());
+a.collapsed?a=b:(c.setPosition(a.endContainer,a.endOffset),c.roundToClosestStep()||runtime.assert(!1,"No walkable step found in paragraph element at range end"),a=d.convertDomPointToCursorStep(c.container(),c.offset()));return{position:b,length:a-b}}function e(a){var d,c,e,f=m.getParagraphElements(a),g=a.cloneRange(),l=[];d=f[0];1<f.length&&(m.hasNoODFContent(d)&&(d=f[f.length-1]),c=d.getAttributeNS(odf.Namespaces.textns,"style-name")||"");f.forEach(function(d,f){var m,k;g.setStart(d,0);g.collapse(!0);
+m=q(g,d,!1).position;0<f&&(k=new ops.OpMergeParagraph,k.init({memberid:b,paragraphStyleName:c,destinationStartPosition:e,sourceStartPosition:m,moveCursor:1===f}),l.unshift(k));e=m;g.selectNodeContents(d);if(m=h.rangeIntersection(g,a))m=q(m,d,!0),0<m.length&&(k=new ops.OpRemoveText,k.init({memberid:b,position:m.position,length:m.length}),l.unshift(k))});return l}function l(a){0>a.length&&(a.position+=a.length,a.length=-a.length);return a}function a(a){if(!y)return!1;var c,f=d.getCursor(b).getSelectedRange().cloneRange(),
+h=l(d.getCursorSelection(b)),m;if(0===h.length){h=void 0;c=d.getCursor(b).getNode();m=d.getRootElement(c);var k=[d.getPositionFilter(),d.createRootFilter(m)];m=d.createStepIterator(c,0,k,m);m.roundToClosestStep()&&(a?m.nextStep():m.previousStep())&&(h=l(d.convertDomToCursorRange({anchorNode:c,anchorOffset:0,focusNode:m.container(),focusOffset:m.offset()})),a?(f.setStart(c,0),f.setEnd(m.container(),m.offset())):(f.setStart(m.container(),m.offset()),f.setEnd(c,0)))}h&&g.enqueue(e(f));return void 0!==
+h}var d=g.getOdtDocument(),m=odf.OdfUtils,h=core.DomUtils,y=!1,x=odf.Namespaces.textns,z=core.StepDirection.NEXT;this.isEnabled=function(){return y};this.enqueueParagraphSplittingOps=function(){if(!y)return!1;var a=d.getCursor(b),c=a.getSelectedRange(),f=l(d.getCursorSelection(b)),h=[],a=m.getParagraphElement(a.getNode()),k=a.getAttributeNS(x,"style-name")||"";0<f.length&&(h=h.concat(e(c)));c=new ops.OpSplitParagraph;c.init({memberid:b,position:f.position,paragraphStyleName:k,sourceParagraphPosition:d.convertDomPointToCursorStep(a,
+0,z),moveCursor:!0});h.push(c);n&&(f=n(f.position+1),h=h.concat(f));g.enqueue(h);return!0};this.removeTextByBackspaceKey=function(){return a(!1)};this.removeTextByDeleteKey=function(){return a(!0)};this.removeCurrentSelection=function(){if(!y)return!1;var a=d.getCursor(b).getSelectedRange();g.enqueue(e(a));return!0};this.insertText=function(a){if(y){var c=d.getCursor(b).getSelectedRange(),h=l(d.getCursorSelection(b)),m=[],k=!1;0<h.length&&(m=m.concat(e(c)),k=!0);c=new ops.OpInsertText;c.init({memberid:b,
+position:h.position,text:a,moveCursor:!0});m.push(c);f&&(a=f(h.position,a.length,k))&&m.push(a);g.enqueue(m)}};this.destroy=function(a){d.unsubscribe(ops.Document.signalCursorMoved,r);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,p);a()};d.subscribe(ops.Document.signalCursorMoved,r);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,p);p()};gui.UndoManager=function(){};gui.UndoManager.prototype.subscribe=function(g,k){};gui.UndoManager.prototype.unsubscribe=function(g,k){};
+gui.UndoManager.prototype.setDocument=function(g){};gui.UndoManager.prototype.setInitialState=function(){};gui.UndoManager.prototype.initialize=function(){};gui.UndoManager.prototype.purgeInitialState=function(){};gui.UndoManager.prototype.setPlaybackFunction=function(g){};gui.UndoManager.prototype.hasUndoStates=function(){};gui.UndoManager.prototype.hasRedoStates=function(){};gui.UndoManager.prototype.moveForward=function(g){};gui.UndoManager.prototype.moveBackward=function(g){};
+gui.UndoManager.prototype.onOperationExecuted=function(g){};gui.UndoManager.prototype.isDocumentModified=function(){};gui.UndoManager.prototype.setDocumentModified=function(g){};gui.UndoManager.signalUndoStackChanged="undoStackChanged";gui.UndoManager.signalUndoStateCreated="undoStateCreated";gui.UndoManager.signalUndoStateModified="undoStateModified";gui.UndoManager.signalDocumentModifiedChanged="documentModifiedChanged";
+gui.SessionControllerOptions=function(){this.annotationsEnabled=this.directParagraphStylingEnabled=this.directTextStylingEnabled=!1};
+(function(){var g=core.PositionFilter.FilterResult.FILTER_ACCEPT;gui.SessionController=function(k,c,b,f){function n(a,b){var d=J.getDOMDocument(),c=null;d.caretRangeFromPoint?(d=d.caretRangeFromPoint(a,b),c={container:d.startContainer,offset:d.startOffset}):d.caretPositionFromPoint&&(d=d.caretPositionFromPoint(a,b))&&d.offsetNode&&(c={container:d.offsetNode,offset:d.offset});return c}function p(a){var b=J.getCursor(c).getSelectedRange();b.collapsed?a.preventDefault():ha.setDataFromRange(a,b)?da.removeCurrentSelection():
+runtime.log("Cut operation failed")}function r(){return!1!==J.getCursor(c).getSelectedRange().collapsed}function q(a){var b=J.getCursor(c).getSelectedRange();b.collapsed?a.preventDefault():ha.setDataFromRange(a,b)||runtime.log("Copy operation failed")}function e(a){var b;W.clipboardData&&W.clipboardData.getData?b=W.clipboardData.getData("Text"):a.clipboardData&&a.clipboardData.getData&&(b=a.clipboardData.getData("text/plain"));b&&(da.removeCurrentSelection(),ea.paste(b));a.preventDefault?a.preventDefault():
+a.returnValue=!1}function l(){return!1}function a(a){if(Q)Q.onOperationExecuted(a)}function d(a){J.emit(ops.OdtDocument.signalUndoStackChanged,a)}function m(){var a;return Q?(a=F.hasFocus(),Q.moveBackward(1),a&&F.focus(),!0):!1}function h(){var a;return Q?(a=F.hasFocus(),Q.moveForward(1),a&&F.focus(),!0):!1}function y(a){var d=J.getCursor(c).getSelectedRange(),e=(a.target||a.srcElement||null).getAttribute("end");d&&e&&(a=n(a.clientX,a.clientY))&&(ia.setUnfilteredPosition(a.container,a.offset),Y.acceptPosition(ia)===
+g&&(d=d.cloneRange(),"left"===e?d.setStart(ia.container(),ia.unfilteredDomOffset()):d.setEnd(ia.container(),ia.unfilteredDomOffset()),b.setSelectedRange(d,"right"===e),J.emit(ops.Document.signalCursorMoved,b)))}function x(){T.selectRange(b.getSelectedRange(),b.hasForwardSelection(),1)}function z(){var a=W.getSelection(),d=0<a.rangeCount&&T.selectionToRange(a);U&&d&&(B=!0,la.clearSelection(),ia.setUnfilteredPosition(a.focusNode,a.focusOffset),Y.acceptPosition(ia)===g&&(2===oa?T.expandToWordBoundaries(d.range):
+3<=oa&&T.expandToParagraphBoundaries(d.range),b.setSelectedRange(d.range,d.hasForwardSelection),J.emit(ops.Document.signalCursorMoved,b)))}function w(a){var b=a.target||a.srcElement||null,d=J.getCursor(c);if(U=null!==b&&aa.containsNode(J.getOdfCanvas().getElement(),b))B=!1,b=J.getRootElement(b)||J.getRootNode(),Y=J.createRootFilter(b),oa=0===a.button?a.detail:0,d&&a.shiftKey?W.getSelection().collapse(d.getAnchorNode(),0):(a=W.getSelection(),b=d.getSelectedRange(),a.extend?d.hasForwardSelection()?
+(a.collapse(b.startContainer,b.startOffset),a.extend(b.endContainer,b.endOffset)):(a.collapse(b.endContainer,b.endOffset),a.extend(b.startContainer,b.startOffset)):(a.removeAllRanges(),a.addRange(b.cloneRange()))),1<oa&&z()}function v(a){var b=J.getRootElement(a),d=J.createRootFilter(b),b=J.createStepIterator(a,0,[d,J.getPositionFilter()],b);b.setPosition(a,a.childNodes.length);return b.roundToNextStep()?{container:b.container(),offset:b.offset()}:null}function u(a){var b;b=(b=W.getSelection())?{anchorNode:b.anchorNode,
+anchorOffset:b.anchorOffset,focusNode:b.focusNode,focusOffset:b.focusOffset}:null;var d=W.getSelection().isCollapsed,c,e;b.anchorNode||b.focusNode||!(c=n(a.clientX,a.clientY))||(b.anchorNode=c.container,b.anchorOffset=c.offset,b.focusNode=b.anchorNode,b.focusOffset=b.anchorOffset);if(S.isImage(b.focusNode)&&0===b.focusOffset&&S.isCharacterFrame(b.focusNode.parentNode)){if(e=b.focusNode.parentNode,c=e.getBoundingClientRect(),a.clientX>c.left&&(c=v(e)))b.focusNode=c.container,b.focusOffset=c.offset,
+d&&(b.anchorNode=b.focusNode,b.anchorOffset=b.focusOffset)}else S.isImage(b.focusNode.firstChild)&&1===b.focusOffset&&S.isCharacterFrame(b.focusNode)&&(c=v(b.focusNode))&&(b.anchorNode=b.focusNode=c.container,b.anchorOffset=b.focusOffset=c.offset);b.anchorNode&&b.focusNode&&(b=T.selectionToRange(b),T.selectRange(b.range,b.hasForwardSelection,0===a.button?a.detail:0));F.focus()}function t(a){var b;if(b=n(a.clientX,a.clientY))a=b.container,b=b.offset,a={anchorNode:a,anchorOffset:b,focusNode:a,focusOffset:b},
+a=T.selectionToRange(a),T.selectRange(a.range,a.hasForwardSelection,2),F.focus()}function A(a){var d=a.target||a.srcElement||null,c,e,f;ma.processRequests();U&&(S.isImage(d)&&S.isCharacterFrame(d.parentNode)&&W.getSelection().isCollapsed?(T.selectImage(d.parentNode),F.focus()):la.isSelectorElement(d)?F.focus():B?(d=b.getSelectedRange(),e=d.collapsed,S.isImage(d.endContainer)&&0===d.endOffset&&S.isCharacterFrame(d.endContainer.parentNode)&&(f=d.endContainer.parentNode,f=v(f))&&(d.setEnd(f.container,
+f.offset),e&&d.collapse(!1)),T.selectRange(d,b.hasForwardSelection(),0===a.button?a.detail:0),F.focus()):ua?u(a):(c=aa.cloneEvent(a),M=runtime.setTimeout(function(){u(c)},0)),oa=0,B=U=!1)}function I(a){var b=J.getCursor(c).getSelectedRange();b.collapsed||fa.exportRangeToDataTransfer(a.dataTransfer,b)}function K(){U&&F.focus();oa=0;B=U=!1}function L(a){A(a)}function E(a){var b=a.target||a.srcElement||null,d=null;"annotationRemoveButton"===b.className?(runtime.assert(ja,"Remove buttons are displayed on annotations while annotation editing is disabled in the controller."),
+d=b.parentNode.getElementsByTagNameNS(odf.Namespaces.officens,"annotation").item(0),ca.removeAnnotation(d),F.focus()):"webodf-draggable"!==b.getAttribute("class")&&A(a)}function N(a){(a=a.data)&&(-1===a.indexOf("\n")?da.insertText(a):ea.paste(a))}function O(a){return function(){a();return!0}}function D(a){return function(b){return J.getCursor(c).getSelectionType()===ops.OdtCursor.RangeSelection?a(b):!0}}function V(b){F.unsubscribe("keydown",C.handleEvent);F.unsubscribe("keypress",Z.handleEvent);F.unsubscribe("keyup",
+ba.handleEvent);F.unsubscribe("copy",q);F.unsubscribe("mousedown",w);F.unsubscribe("mousemove",ma.trigger);F.unsubscribe("mouseup",E);F.unsubscribe("contextmenu",L);F.unsubscribe("dragstart",I);F.unsubscribe("dragend",K);F.unsubscribe("click",pa.handleClick);F.unsubscribe("longpress",t);F.unsubscribe("drag",y);F.unsubscribe("dragstop",x);J.unsubscribe(ops.OdtDocument.signalOperationEnd,na.trigger);J.unsubscribe(ops.Document.signalCursorAdded,ka.registerCursor);J.unsubscribe(ops.Document.signalCursorRemoved,
+ka.removeCursor);J.unsubscribe(ops.OdtDocument.signalOperationEnd,a);b()}var W=runtime.getWindow(),J=k.getOdtDocument(),R=new gui.SessionConstraints,P=new gui.SessionContext(k,c),aa=core.DomUtils,S=odf.OdfUtils,fa=new gui.MimeDataExporter,ha=new gui.Clipboard(fa),C=new gui.KeyboardHandler,Z=new gui.KeyboardHandler,ba=new gui.KeyboardHandler,U=!1,ga=new odf.ObjectNameGenerator(J.getOdfCanvas().odfContainer(),c),B=!1,Y=null,M,Q=null,F=new gui.EventManager(J),ja=f.annotationsEnabled,ca=new gui.AnnotationController(k,
+R,c),X=new gui.DirectFormattingController(k,R,P,c,ga,f.directTextStylingEnabled,f.directParagraphStylingEnabled),da=new gui.TextController(k,R,P,c,X.createCursorStyleOp,X.createParagraphStyleOps),qa=new gui.ImageController(k,R,P,c,ga),la=new gui.ImageSelector(J.getOdfCanvas()),ia=J.createPositionIterator(J.getRootNode()),ma,na,ea=new gui.PasteController(k,R,P,c),ka=new gui.InputMethodEditor(c,F),oa=0,pa=new gui.HyperlinkClickHandler(J.getOdfCanvas().getElement,C,ba),ta=new gui.HyperlinkController(k,
+R,P,c),T=new gui.SelectionController(k,c),va=new gui.MetadataController(k,c),G=gui.KeyboardHandler.Modifier,H=gui.KeyboardHandler.KeyCode,ra=-1!==W.navigator.appVersion.toLowerCase().indexOf("mac"),ua=-1!==["iPad","iPod","iPhone"].indexOf(W.navigator.platform),sa;runtime.assert(null!==W,"Expected to be run in an environment which has a global window, like a browser.");this.undo=m;this.redo=h;this.insertLocalCursor=function(){runtime.assert(void 0===k.getOdtDocument().getCursor(c),"Inserting local cursor a second time.");
+var a=new ops.OpAddCursor;a.init({memberid:c});k.enqueue([a]);F.focus()};this.removeLocalCursor=function(){runtime.assert(void 0!==k.getOdtDocument().getCursor(c),"Removing local cursor without inserting before.");var a=new ops.OpRemoveCursor;a.init({memberid:c});k.enqueue([a])};this.startEditing=function(){ka.subscribe(gui.InputMethodEditor.signalCompositionStart,da.removeCurrentSelection);ka.subscribe(gui.InputMethodEditor.signalCompositionEnd,N);F.subscribe("beforecut",r);F.subscribe("cut",p);
+F.subscribe("beforepaste",l);F.subscribe("paste",e);Q&&Q.initialize();F.setEditing(!0);pa.setModifier(ra?G.Meta:G.Ctrl);C.bind(H.Backspace,G.None,O(da.removeTextByBackspaceKey),!0);C.bind(H.Delete,G.None,da.removeTextByDeleteKey);C.bind(H.Tab,G.None,D(function(){da.insertText("\t");return!0}));ra?(C.bind(H.Clear,G.None,da.removeCurrentSelection),C.bind(H.B,G.Meta,D(X.toggleBold)),C.bind(H.I,G.Meta,D(X.toggleItalic)),C.bind(H.U,G.Meta,D(X.toggleUnderline)),C.bind(H.L,G.MetaShift,D(X.alignParagraphLeft)),
+C.bind(H.E,G.MetaShift,D(X.alignParagraphCenter)),C.bind(H.R,G.MetaShift,D(X.alignParagraphRight)),C.bind(H.J,G.MetaShift,D(X.alignParagraphJustified)),ja&&C.bind(H.C,G.MetaShift,ca.addAnnotation),C.bind(H.Z,G.Meta,m),C.bind(H.Z,G.MetaShift,h)):(C.bind(H.B,G.Ctrl,D(X.toggleBold)),C.bind(H.I,G.Ctrl,D(X.toggleItalic)),C.bind(H.U,G.Ctrl,D(X.toggleUnderline)),C.bind(H.L,G.CtrlShift,D(X.alignParagraphLeft)),C.bind(H.E,G.CtrlShift,D(X.alignParagraphCenter)),C.bind(H.R,G.CtrlShift,D(X.alignParagraphRight)),
+C.bind(H.J,G.CtrlShift,D(X.alignParagraphJustified)),ja&&C.bind(H.C,G.CtrlAlt,ca.addAnnotation),C.bind(H.Z,G.Ctrl,m),C.bind(H.Z,G.CtrlShift,h));Z.setDefault(D(function(a){var b;b=null===a.which||void 0===a.which?String.fromCharCode(a.keyCode):0!==a.which&&0!==a.charCode?String.fromCharCode(a.which):null;return!b||a.altKey||a.ctrlKey||a.metaKey?!1:(da.insertText(b),!0)}));Z.bind(H.Enter,G.None,D(da.enqueueParagraphSplittingOps))};this.endEditing=function(){ka.unsubscribe(gui.InputMethodEditor.signalCompositionStart,
+da.removeCurrentSelection);ka.unsubscribe(gui.InputMethodEditor.signalCompositionEnd,N);F.unsubscribe("cut",p);F.unsubscribe("beforecut",r);F.unsubscribe("paste",e);F.unsubscribe("beforepaste",l);F.setEditing(!1);pa.setModifier(G.None);C.bind(H.Backspace,G.None,function(){return!0},!0);C.unbind(H.Delete,G.None);C.unbind(H.Tab,G.None);ra?(C.unbind(H.Clear,G.None),C.unbind(H.B,G.Meta),C.unbind(H.I,G.Meta),C.unbind(H.U,G.Meta),C.unbind(H.L,G.MetaShift),C.unbind(H.E,G.MetaShift),C.unbind(H.R,G.MetaShift),
+C.unbind(H.J,G.MetaShift),ja&&C.unbind(H.C,G.MetaShift),C.unbind(H.Z,G.Meta),C.unbind(H.Z,G.MetaShift)):(C.unbind(H.B,G.Ctrl),C.unbind(H.I,G.Ctrl),C.unbind(H.U,G.Ctrl),C.unbind(H.L,G.CtrlShift),C.unbind(H.E,G.CtrlShift),C.unbind(H.R,G.CtrlShift),C.unbind(H.J,G.CtrlShift),ja&&C.unbind(H.C,G.CtrlAlt),C.unbind(H.Z,G.Ctrl),C.unbind(H.Z,G.CtrlShift));Z.setDefault(null);Z.unbind(H.Enter,G.None)};this.getInputMemberId=function(){return c};this.getSession=function(){return k};this.getSessionConstraints=function(){return R};
+this.setUndoManager=function(a){Q&&Q.unsubscribe(gui.UndoManager.signalUndoStackChanged,d);if(Q=a)Q.setDocument(J),Q.setPlaybackFunction(k.enqueue),Q.subscribe(gui.UndoManager.signalUndoStackChanged,d)};this.getUndoManager=function(){return Q};this.getMetadataController=function(){return va};this.getAnnotationController=function(){return ca};this.getDirectFormattingController=function(){return X};this.getHyperlinkClickHandler=function(){return pa};this.getHyperlinkController=function(){return ta};
+this.getImageController=function(){return qa};this.getSelectionController=function(){return T};this.getTextController=function(){return da};this.getEventManager=function(){return F};this.getKeyboardHandlers=function(){return{keydown:C,keypress:Z}};this.destroy=function(a){var b=[ma.destroy,na.destroy,X.destroy,ka.destroy,F.destroy,pa.destroy,ta.destroy,va.destroy,T.destroy,da.destroy,V];sa&&b.unshift(sa.destroy);runtime.clearTimeout(M);core.Async.destroyAll(b,a)};ma=core.Task.createRedrawTask(z);
+na=core.Task.createRedrawTask(function(){var a=J.getCursor(c);if(a&&a.getSelectionType()===ops.OdtCursor.RegionSelection&&(a=S.getImageElements(a.getSelectedRange())[0])){la.select(a.parentNode);return}la.clearSelection()});C.bind(H.Left,G.None,D(T.moveCursorToLeft));C.bind(H.Right,G.None,D(T.moveCursorToRight));C.bind(H.Up,G.None,D(T.moveCursorUp));C.bind(H.Down,G.None,D(T.moveCursorDown));C.bind(H.Left,G.Shift,D(T.extendSelectionToLeft));C.bind(H.Right,G.Shift,D(T.extendSelectionToRight));C.bind(H.Up,
+G.Shift,D(T.extendSelectionUp));C.bind(H.Down,G.Shift,D(T.extendSelectionDown));C.bind(H.Home,G.None,D(T.moveCursorToLineStart));C.bind(H.End,G.None,D(T.moveCursorToLineEnd));C.bind(H.Home,G.Ctrl,D(T.moveCursorToDocumentStart));C.bind(H.End,G.Ctrl,D(T.moveCursorToDocumentEnd));C.bind(H.Home,G.Shift,D(T.extendSelectionToLineStart));C.bind(H.End,G.Shift,D(T.extendSelectionToLineEnd));C.bind(H.Up,G.CtrlShift,D(T.extendSelectionToParagraphStart));C.bind(H.Down,G.CtrlShift,D(T.extendSelectionToParagraphEnd));
+C.bind(H.Home,G.CtrlShift,D(T.extendSelectionToDocumentStart));C.bind(H.End,G.CtrlShift,D(T.extendSelectionToDocumentEnd));ra?(C.bind(H.Left,G.Alt,D(T.moveCursorBeforeWord)),C.bind(H.Right,G.Alt,D(T.moveCursorPastWord)),C.bind(H.Left,G.Meta,D(T.moveCursorToLineStart)),C.bind(H.Right,G.Meta,D(T.moveCursorToLineEnd)),C.bind(H.Home,G.Meta,D(T.moveCursorToDocumentStart)),C.bind(H.End,G.Meta,D(T.moveCursorToDocumentEnd)),C.bind(H.Left,G.AltShift,D(T.extendSelectionBeforeWord)),C.bind(H.Right,G.AltShift,
+D(T.extendSelectionPastWord)),C.bind(H.Left,G.MetaShift,D(T.extendSelectionToLineStart)),C.bind(H.Right,G.MetaShift,D(T.extendSelectionToLineEnd)),C.bind(H.Up,G.AltShift,D(T.extendSelectionToParagraphStart)),C.bind(H.Down,G.AltShift,D(T.extendSelectionToParagraphEnd)),C.bind(H.Up,G.MetaShift,D(T.extendSelectionToDocumentStart)),C.bind(H.Down,G.MetaShift,D(T.extendSelectionToDocumentEnd)),C.bind(H.A,G.Meta,D(T.extendSelectionToEntireDocument))):(C.bind(H.Left,G.Ctrl,D(T.moveCursorBeforeWord)),C.bind(H.Right,
+G.Ctrl,D(T.moveCursorPastWord)),C.bind(H.Left,G.CtrlShift,D(T.extendSelectionBeforeWord)),C.bind(H.Right,G.CtrlShift,D(T.extendSelectionPastWord)),C.bind(H.A,G.Ctrl,D(T.extendSelectionToEntireDocument)));ua&&(sa=new gui.IOSSafariSupport(F));F.subscribe("keydown",C.handleEvent);F.subscribe("keypress",Z.handleEvent);F.subscribe("keyup",ba.handleEvent);F.subscribe("copy",q);F.subscribe("mousedown",w);F.subscribe("mousemove",ma.trigger);F.subscribe("mouseup",E);F.subscribe("contextmenu",L);F.subscribe("dragstart",
+I);F.subscribe("dragend",K);F.subscribe("click",pa.handleClick);F.subscribe("longpress",t);F.subscribe("drag",y);F.subscribe("dragstop",x);J.subscribe(ops.OdtDocument.signalOperationEnd,na.trigger);J.subscribe(ops.Document.signalCursorAdded,ka.registerCursor);J.subscribe(ops.Document.signalCursorRemoved,ka.removeCursor);J.subscribe(ops.OdtDocument.signalOperationEnd,a)}})();
+gui.CaretManager=function(g,k){function c(b){return n.hasOwnProperty(b)?n[b]:null}function b(){return Object.keys(n).map(function(b){return n[b]})}function f(b){var c=n[b];c&&(delete n[b],b===g.getInputMemberId()?(r.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,c.ensureVisible),r.unsubscribe(ops.Document.signalCursorMoved,c.refreshCursorBlinking),q.unsubscribe("compositionupdate",c.handleUpdate),q.unsubscribe("compositionend",c.handleUpdate),q.unsubscribe("focus",c.setFocus),q.unsubscribe("blur",
+c.removeFocus),p.removeEventListener("focus",c.show,!1),p.removeEventListener("blur",c.hide,!1)):r.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,c.handleUpdate),c.destroy(function(){}))}var n={},p=runtime.getWindow(),r=g.getSession().getOdtDocument(),q=g.getEventManager();this.registerCursor=function(b,c,a){var d=b.getMemberId();b=new gui.Caret(b,k,c,a);n[d]=b;d===g.getInputMemberId()?(runtime.log("Starting to track input on new cursor of "+d),r.subscribe(ops.OdtDocument.signalProcessingBatchEnd,
+b.ensureVisible),r.subscribe(ops.Document.signalCursorMoved,b.refreshCursorBlinking),q.subscribe("compositionupdate",b.handleUpdate),q.subscribe("compositionend",b.handleUpdate),q.subscribe("focus",b.setFocus),q.subscribe("blur",b.removeFocus),p.addEventListener("focus",b.show,!1),p.addEventListener("blur",b.hide,!1),b.setOverlayElement(q.getEventTrap())):r.subscribe(ops.OdtDocument.signalProcessingBatchEnd,b.handleUpdate);return b};this.getCaret=c;this.getCarets=b;this.destroy=function(c){var l=
+b().map(function(a){return a.destroy});g.getSelectionController().setCaretXPositionLocator(null);r.unsubscribe(ops.Document.signalCursorRemoved,f);n={};core.Async.destroyAll(l,c)};g.getSelectionController().setCaretXPositionLocator(function(){var b=c(g.getInputMemberId()),f;b&&(f=b.getBoundingClientRect());return f?f.right:void 0});r.subscribe(ops.Document.signalCursorRemoved,f)};
+gui.EditInfoHandle=function(g){var k=[],c,b=g.ownerDocument,f=b.documentElement.namespaceURI;this.setEdits=function(g){k=g;var p,r,q,e;core.DomUtils.removeAllChildNodes(c);for(g=0;g<k.length;g+=1)p=b.createElementNS(f,"div"),p.className="editInfo",r=b.createElementNS(f,"span"),r.className="editInfoColor",r.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",k[g].memberid),q=b.createElementNS(f,"span"),q.className="editInfoAuthor",q.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",
+k[g].memberid),e=b.createElementNS(f,"span"),e.className="editInfoTime",e.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",k[g].memberid),e.appendChild(b.createTextNode(k[g].time.toString())),p.appendChild(r),p.appendChild(q),p.appendChild(e),c.appendChild(p)};this.show=function(){c.style.display="block"};this.hide=function(){c.style.display="none"};this.destroy=function(b){g.removeChild(c);b()};c=b.createElementNS(f,"div");c.setAttribute("class","editInfoHandle");c.style.display="none";
+g.appendChild(c)};
+ops.EditInfo=function(g,k){function c(){var b=[],c;for(c in f)f.hasOwnProperty(c)&&b.push({memberid:c,time:f[c].time});b.sort(function(b,c){return b.time-c.time});return b}var b,f={};this.getNode=function(){return b};this.getOdtDocument=function(){return k};this.getEdits=function(){return f};this.getSortedEdits=function(){return c()};this.addEdit=function(b,c){f[b]={time:c}};this.clearEdits=function(){f={}};this.destroy=function(c){g.parentNode&&g.removeChild(b);c()};b=k.getDOMDocument().createElementNS("urn:webodf:names:editinfo","editinfo");
+g.insertBefore(b,g.firstChild)};
+gui.EditInfoMarker=function(g,k){function c(b,a){return runtime.setTimeout(function(){p.style.opacity=b},a)}var b=this,f,n,p,r,q,e;this.addEdit=function(b,a){var d=Date.now()-a;g.addEdit(b,a);n.setEdits(g.getSortedEdits());p.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",b);runtime.clearTimeout(q);runtime.clearTimeout(e);1E4>d?(r=c(1,0),q=c(.5,1E4-d),e=c(.2,2E4-d)):1E4<=d&&2E4>d?(r=c(.5,0),e=c(.2,2E4-d)):r=c(.2,0)};this.getEdits=function(){return g.getEdits()};this.clearEdits=function(){g.clearEdits();
+n.setEdits([]);p.hasAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")&&p.removeAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")};this.getEditInfo=function(){return g};this.show=function(){p.style.display="block"};this.hide=function(){b.hideHandle();p.style.display="none"};this.showHandle=function(){n.show()};this.hideHandle=function(){n.hide()};this.destroy=function(b){runtime.clearTimeout(r);runtime.clearTimeout(q);runtime.clearTimeout(e);f.removeChild(p);n.destroy(function(a){a?
+b(a):g.destroy(b)})};(function(){var c=g.getOdtDocument().getDOMDocument();p=c.createElementNS(c.documentElement.namespaceURI,"div");p.setAttribute("class","editInfoMarker");p.onmouseover=function(){b.showHandle()};p.onmouseout=function(){b.hideHandle()};f=g.getNode();f.appendChild(p);n=new gui.EditInfoHandle(f);k||b.hide()})()};
+gui.HyperlinkTooltipView=function(g,k){var c=core.DomUtils,b=odf.OdfUtils,f=runtime.getWindow(),n,p,r;runtime.assert(null!==f,"Expected to be run in an environment which has a global window, like a browser.");this.showTooltip=function(q){var e=q.target||q.srcElement,l=g.getSizer(),a=g.getZoomLevel(),d;a:{for(;e;){if(b.isHyperlink(e))break a;if(b.isParagraph(e)||b.isInlineRoot(e))break;e=e.parentNode}e=null}if(e){c.containsNode(l,r)||l.appendChild(r);d=p;var m;switch(k()){case gui.KeyboardHandler.Modifier.Ctrl:m=
+runtime.tr("Ctrl-click to follow link");break;case gui.KeyboardHandler.Modifier.Meta:m=runtime.tr("\u2318-click to follow link");break;default:m=""}d.textContent=m;n.textContent=b.getHyperlinkTarget(e);r.style.display="block";d=f.innerWidth-r.offsetWidth-15;e=q.clientX>d?d:q.clientX+15;d=f.innerHeight-r.offsetHeight-10;q=q.clientY>d?d:q.clientY+10;l=l.getBoundingClientRect();e=(e-l.left)/a;q=(q-l.top)/a;r.style.left=e+"px";r.style.top=q+"px"}};this.hideTooltip=function(){r.style.display="none"};this.destroy=
+function(b){r.parentNode&&r.parentNode.removeChild(r);b()};(function(){var b=g.getElement().ownerDocument;n=b.createElement("span");p=b.createElement("span");n.className="webodf-hyperlinkTooltipLink";p.className="webodf-hyperlinkTooltipText";r=b.createElement("div");r.className="webodf-hyperlinkTooltip";r.appendChild(n);r.appendChild(p);g.getElement().appendChild(r)})()};
+gui.OdfFieldView=function(g){function k(){var b=odf.OdfSchema.getFields().map(function(b){return b.replace(":","|")}),c=b.join(",\n")+"\n{ background-color: #D0D0D0; }\n",b=b.map(function(b){return b+":empty::after"}).join(",\n")+"\n{ content:' '; white-space: pre; }\n";return c+"\n"+b}var c,b=g.getElement().ownerDocument;this.showFieldHighlight=function(){c.appendChild(b.createTextNode(k()))};this.hideFieldHighlight=function(){for(var b=c.sheet,g=b.cssRules;g.length;)b.deleteRule(g.length-1)};this.destroy=
+function(b){c.parentNode&&c.parentNode.removeChild(c);b()};c=function(){var c=b.getElementsByTagName("head").item(0),g=b.createElement("style"),k="";g.type="text/css";g.media="screen, print, handheld, projection";odf.Namespaces.forEachPrefix(function(b,c){k+="@namespace "+b+" url("+c+");\n"});g.appendChild(b.createTextNode(k));c.appendChild(g);return g}()};
+gui.ShadowCursor=function(g){var k=g.getDOMDocument().createRange(),c=!0;this.removeFromDocument=function(){};this.getMemberId=function(){return gui.ShadowCursor.ShadowCursorMemberId};this.getSelectedRange=function(){return k};this.setSelectedRange=function(b,f){k=b;c=!1!==f};this.hasForwardSelection=function(){return c};this.getDocument=function(){return g};this.getSelectionType=function(){return ops.OdtCursor.RangeSelection};k.setStart(g.getRootNode(),0)};gui.ShadowCursor.ShadowCursorMemberId="";
+gui.SelectionView=function(g){};gui.SelectionView.prototype.rerender=function(){};gui.SelectionView.prototype.show=function(){};gui.SelectionView.prototype.hide=function(){};gui.SelectionView.prototype.destroy=function(g){};
+gui.SelectionViewManager=function(g){function k(){return Object.keys(c).map(function(b){return c[b]})}var c={};this.getSelectionView=function(b){return c.hasOwnProperty(b)?c[b]:null};this.getSelectionViews=k;this.removeSelectionView=function(b){c.hasOwnProperty(b)&&(c[b].destroy(function(){}),delete c[b])};this.hideSelectionView=function(b){c.hasOwnProperty(b)&&c[b].hide()};this.showSelectionView=function(b){c.hasOwnProperty(b)&&c[b].show()};this.rerenderSelectionViews=function(){Object.keys(c).forEach(function(b){c[b].rerender()})};
+this.registerCursor=function(b,f){var k=b.getMemberId(),p=new g(b);f?p.show():p.hide();return c[k]=p};this.destroy=function(b){function c(k,r){r?b(r):k<g.length?g[k].destroy(function(b){c(k+1,b)}):b()}var g=k();c(0,void 0)}};gui.SessionViewOptions=function(){this.caretBlinksOnRangeSelect=this.caretAvatarsInitiallyVisible=this.editInfoMarkersInitiallyVisible=!0};
+(function(){function g(g,c){return void 0!==g?Boolean(g):c}gui.SessionView=function(k,c,b,f,n,p){function r(a){a.memberId===c&&I.getViewport().scrollIntoView(a.annotation.getBoundingClientRect())}function q(){var a=document.getElementsByTagName("head").item(0),b=document.createElement("style");b.type="text/css";b.media="screen, print, handheld, projection";a.appendChild(b);return b}function e(a,b,d){function e(b,d,c){d=b+'[editinfo|memberid="'+a+'"]'+c+d;a:{var f=v.firstChild;for(b=b+'[editinfo|memberid="'+
+a+'"]'+c+"{";f;){if(f.nodeType===Node.TEXT_NODE&&0===f.data.indexOf(b)){b=f;break a}f=f.nextSibling}b=null}b?b.data=d:v.appendChild(document.createTextNode(d))}e("div.editInfoMarker","{ background-color: "+d+"; }","");e("span.editInfoColor","{ background-color: "+d+"; }","");e("span.editInfoAuthor",'{ content: "'+b+'"; }',":before");e("dc|creator","{ background-color: "+d+"; }","");e(".webodf-selectionOverlay","{ fill: "+d+"; stroke: "+d+";}","");a===c&&(e(".webodf-touchEnabled .webodf-selectionOverlay",
+"{ display: block; }"," > .webodf-draggable"),a=gui.ShadowCursor.ShadowCursorMemberId,e(".webodf-selectionOverlay","{ fill: "+d+"; stroke: "+d+";}",""),e(".webodf-touchEnabled .webodf-selectionOverlay","{ display: block; }"," > .webodf-draggable"))}function l(a){var b,d;for(d in t)t.hasOwnProperty(d)&&(b=t[d],a?b.show():b.hide())}function a(a){n.getCarets().forEach(function(b){a?b.showHandle():b.hideHandle()})}function d(a){var b=a.getMemberId();a=a.getProperties();e(b,a.fullName,a.color)}function m(a){var d=
+a.getMemberId(),c=b.getOdtDocument().getMember(d).getProperties();n.registerCursor(a,E,N);p.registerCursor(a,!0);if(a=n.getCaret(d))a.setAvatarImageUrl(c.imageUrl),a.setColor(c.color);runtime.log("+++ View here +++ eagerly created an Caret for '"+d+"'! +++")}function h(a){a=a.getMemberId();var b=p.getSelectionView(c),d=p.getSelectionView(gui.ShadowCursor.ShadowCursorMemberId),e=n.getCaret(c);a===c?(d.hide(),b&&b.show(),e&&e.show()):a===gui.ShadowCursor.ShadowCursorMemberId&&(d.show(),b&&b.hide(),
+e&&e.hide())}function y(a){p.removeSelectionView(a)}function x(a){var d=a.paragraphElement,c=a.memberId;a=a.timeStamp;var e,f="",h=d.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0);h?(f=h.getAttributeNS("urn:webodf:names:editinfo","id"),e=t[f]):(f=Math.random().toString(),e=new ops.EditInfo(d,b.getOdtDocument()),e=new gui.EditInfoMarker(e,L),h=d.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0),h.setAttributeNS("urn:webodf:names:editinfo","id",f),t[f]=e);
+e.addEdit(c,new Date(a));K.trigger()}function z(){var a;u.hasChildNodes()&&core.DomUtils.removeAllChildNodes(u);!0===f.getState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN)&&(a=b.getOdtDocument().getMember(c))&&(a=a.getProperties().fullName,u.appendChild(document.createTextNode(".annotationWrapper:not([creator = '"+a+"']) .annotationRemoveButton { display: none; }")))}function w(a){var b=Object.keys(t).map(function(a){return t[a]});A.unsubscribe(ops.Document.signalMemberAdded,d);A.unsubscribe(ops.Document.signalMemberUpdated,
+d);A.unsubscribe(ops.Document.signalCursorAdded,m);A.unsubscribe(ops.Document.signalCursorRemoved,y);A.unsubscribe(ops.OdtDocument.signalParagraphChanged,x);A.unsubscribe(ops.Document.signalCursorMoved,h);A.unsubscribe(ops.OdtDocument.signalParagraphChanged,p.rerenderSelectionViews);A.unsubscribe(ops.OdtDocument.signalTableAdded,p.rerenderSelectionViews);A.unsubscribe(ops.OdtDocument.signalParagraphStyleModified,p.rerenderSelectionViews);f.unsubscribe(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN,
+z);A.unsubscribe(ops.Document.signalMemberAdded,z);A.unsubscribe(ops.Document.signalMemberUpdated,z);v.parentNode.removeChild(v);u.parentNode.removeChild(u);(function W(d,c){c?a(c):d<b.length?b[d].destroy(function(a){W(d+1,a)}):a()})(0,void 0)}var v,u,t={},A,I,K,L=g(k.editInfoMarkersInitiallyVisible,!0),E=g(k.caretAvatarsInitiallyVisible,!0),N=g(k.caretBlinksOnRangeSelect,!0);this.showEditInfoMarkers=function(){L||(L=!0,l(L))};this.hideEditInfoMarkers=function(){L&&(L=!1,l(L))};this.showCaretAvatars=
+function(){E||(E=!0,a(E))};this.hideCaretAvatars=function(){E&&(E=!1,a(E))};this.getSession=function(){return b};this.getCaret=function(a){return n.getCaret(a)};this.destroy=function(a){var b=[K.destroy,w];A.unsubscribe(ops.OdtDocument.signalAnnotationAdded,r);core.Async.destroyAll(b,a)};A=b.getOdtDocument();I=A.getOdfCanvas();A.subscribe(ops.OdtDocument.signalAnnotationAdded,r);A.subscribe(ops.Document.signalMemberAdded,d);A.subscribe(ops.Document.signalMemberUpdated,d);A.subscribe(ops.Document.signalCursorAdded,
+m);A.subscribe(ops.Document.signalCursorRemoved,y);A.subscribe(ops.OdtDocument.signalParagraphChanged,x);A.subscribe(ops.Document.signalCursorMoved,h);A.subscribe(ops.OdtDocument.signalParagraphChanged,p.rerenderSelectionViews);A.subscribe(ops.OdtDocument.signalTableAdded,p.rerenderSelectionViews);A.subscribe(ops.OdtDocument.signalParagraphStyleModified,p.rerenderSelectionViews);f.subscribe(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN,z);A.subscribe(ops.Document.signalMemberAdded,z);A.subscribe(ops.Document.signalMemberUpdated,
+z);v=q();v.appendChild(document.createTextNode("@namespace editinfo url(urn:webodf:names:editinfo);"));v.appendChild(document.createTextNode("@namespace dc url(http://purl.org/dc/elements/1.1/);"));u=q();z();K=core.Task.createRedrawTask(function(){var a=I.getAnnotationViewManager();a&&(a.rehighlightAnnotations(),A.fixCursorPositions())})}})();
+gui.SvgSelectionView=function(g){function k(){var a=d.getRootNode();m!==a&&(m=a,h=d.getCanvas().getSizer(),h.appendChild(x),x.setAttribute("class","webodf-selectionOverlay"),w.setAttribute("class","webodf-draggable"),v.setAttribute("class","webodf-draggable"),w.setAttribute("end","left"),v.setAttribute("end","right"),w.setAttribute("r",8),v.setAttribute("r",8),x.appendChild(z),x.appendChild(w),x.appendChild(v))}function c(a){a=a.getBoundingClientRect();return Boolean(a&&0!==a.height)}function b(a){var b=
+u.getTextElements(a,!0,!1),d=a.cloneRange(),e=a.cloneRange();a=a.cloneRange();if(!b.length)return null;var f;a:{f=0;var h=b[f],g=d.startContainer===h?d.startOffset:0,m=g;d.setStart(h,g);for(d.setEnd(h,m);!c(d);){if(h.nodeType===Node.ELEMENT_NODE&&m<h.childNodes.length)m=h.childNodes.length;else if(h.nodeType===Node.TEXT_NODE&&m<h.length)m+=1;else if(b[f])h=b[f],f+=1,g=m=0;else{f=!1;break a}d.setStart(h,g);d.setEnd(h,m)}f=!0}if(!f)return null;a:{f=b.length-1;h=b[f];m=g=e.endContainer===h?e.endOffset:
+h.nodeType===Node.TEXT_NODE?h.length:h.childNodes.length;e.setStart(h,g);for(e.setEnd(h,m);!c(e);){if(h.nodeType===Node.ELEMENT_NODE&&0<g)g=0;else if(h.nodeType===Node.TEXT_NODE&&0<g)--g;else if(b[f])h=b[f],--f,g=m=h.length||h.childNodes.length;else{b=!1;break a}e.setStart(h,g);e.setEnd(h,m)}b=!0}if(!b)return null;a.setStart(d.startContainer,d.startOffset);a.setEnd(e.endContainer,e.endOffset);return{firstRange:d,lastRange:e,fillerRange:a}}function f(a,b){var d={};d.top=Math.min(a.top,b.top);d.left=
+Math.min(a.left,b.left);d.right=Math.max(a.right,b.right);d.bottom=Math.max(a.bottom,b.bottom);d.width=d.right-d.left;d.height=d.bottom-d.top;return d}function n(a,b){b&&0<b.width&&0<b.height&&(a=a?f(a,b):b);return a}function p(a){function b(a){K.setUnfilteredPosition(a,0);return v.acceptNode(a)===L&&x.acceptPosition(K)===L?L:E}function c(a){var d=null;b(a)===L&&(d=t.getBoundingClientRect(a));return d}var e=a.commonAncestorContainer,f=a.startContainer,h=a.endContainer,g=a.startOffset,m=a.endOffset,
+k,l,p=null,q,r=y.createRange(),x,v=new odf.OdfNodeFilter,w;if(f===e||h===e)return r=a.cloneRange(),p=r.getBoundingClientRect(),r.detach(),p;for(a=f;a.parentNode!==e;)a=a.parentNode;for(l=h;l.parentNode!==e;)l=l.parentNode;x=d.createRootFilter(f);for(e=a.nextSibling;e&&e!==l;)q=c(e),p=n(p,q),e=e.nextSibling;if(u.isParagraph(a))p=n(p,t.getBoundingClientRect(a));else if(a.nodeType===Node.TEXT_NODE)e=a,r.setStart(e,g),r.setEnd(e,e===l?m:e.length),q=r.getBoundingClientRect(),p=n(p,q);else for(w=y.createTreeWalker(a,
+NodeFilter.SHOW_TEXT,b,!1),e=w.currentNode=f;e&&e!==h;)r.setStart(e,g),r.setEnd(e,e.length),q=r.getBoundingClientRect(),p=n(p,q),k=e,g=0,e=w.nextNode();k||(k=f);if(u.isParagraph(l))p=n(p,t.getBoundingClientRect(l));else if(l.nodeType===Node.TEXT_NODE)e=l,r.setStart(e,e===a?g:0),r.setEnd(e,m),q=r.getBoundingClientRect(),p=n(p,q);else for(w=y.createTreeWalker(l,NodeFilter.SHOW_TEXT,b,!1),e=w.currentNode=h;e&&e!==k;)if(r.setStart(e,0),r.setEnd(e,m),q=r.getBoundingClientRect(),p=n(p,q),e=w.previousNode())m=
+e.length;return p}function r(a,b){var d=a.getBoundingClientRect(),c={width:0};c.top=d.top;c.bottom=d.bottom;c.height=d.height;c.left=c.right=b?d.right:d.left;return c}function q(){var a=g.getSelectedRange(),d;if(d=I&&g.getSelectionType()===ops.OdtCursor.RangeSelection&&!a.collapsed){k();var c=t.getBoundingClientRect(h),e=A.getZoomLevel(),a=b(a),m,l,n,q,y,u;if(a){d=a.firstRange;m=a.lastRange;l=a.fillerRange;n=t.translateRect(r(d,!1),c,e);y=t.translateRect(r(m,!0),c,e);q=(q=p(l))?t.translateRect(q,
+c,e):f(n,y);u=q.left;q=n.left+Math.max(0,q.width-(n.left-q.left));c=Math.min(n.top,y.top);e=y.top+y.height;u=[{x:n.left,y:c+n.height},{x:n.left,y:c},{x:q,y:c},{x:q,y:e-y.height},{x:y.right,y:e-y.height},{x:y.right,y:e},{x:u,y:e},{x:u,y:c+n.height},{x:n.left,y:c+n.height}];q="";var E;for(E=0;E<u.length;E+=1)q+=u[E].x+","+u[E].y+" ";z.setAttribute("points",q);w.setAttribute("cx",n.left);w.setAttribute("cy",c+n.height/2);v.setAttribute("cx",y.right);v.setAttribute("cy",e-y.height/2);d.detach();m.detach();
+l.detach()}d=Boolean(a)}x.style.display=d?"block":"none"}function e(a){I&&a===g&&N.trigger()}function l(a){a=8/a;w.setAttribute("r",a);v.setAttribute("r",a)}function a(a){h.removeChild(x);h.classList.remove("webodf-virtualSelections");g.getDocument().unsubscribe(ops.Document.signalCursorMoved,e);A.unsubscribe(gui.ZoomHelper.signalZoomChanged,l);a()}var d=g.getDocument(),m,h,y=d.getDOMDocument(),x=y.createElementNS("http://www.w3.org/2000/svg","svg"),z=y.createElementNS("http://www.w3.org/2000/svg",
+"polygon"),w=y.createElementNS("http://www.w3.org/2000/svg","circle"),v=y.createElementNS("http://www.w3.org/2000/svg","circle"),u=odf.OdfUtils,t=core.DomUtils,A=d.getCanvas().getZoomHelper(),I=!0,K=g.getDocument().createPositionIterator(d.getRootNode()),L=NodeFilter.FILTER_ACCEPT,E=NodeFilter.FILTER_REJECT,N;this.rerender=function(){I&&N.trigger()};this.show=function(){I=!0;N.trigger()};this.hide=function(){I=!1;N.trigger()};this.destroy=function(b){core.Async.destroyAll([N.destroy,a],b)};(function(){var a=
+g.getMemberId();N=core.Task.createRedrawTask(q);k();x.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",a);h.classList.add("webodf-virtualSelections");g.getDocument().subscribe(ops.Document.signalCursorMoved,e);A.subscribe(gui.ZoomHelper.signalZoomChanged,l);l(A.getZoomLevel())})()};
+gui.UndoStateRules=function(){function g(b,c){var g=b.length;this.previous=function(){for(--g;0<=g;--g)if(c(b[g]))return b[g];return null}}function k(b){b=b.spec();var c;b.hasOwnProperty("position")&&(c=b.position);return c}function c(b){return b.isEdit}function b(b,c,g){if(!g)return g=k(b)-k(c),0===g||1===Math.abs(g);b=k(b);c=k(c);g=k(g);return b-c===c-g}this.isEditOperation=c;this.isPartOfOperationSet=function(f,k){var p=void 0!==f.group,r;if(!f.isEdit||0===k.length)return!0;r=k[k.length-1];if(p&&
+f.group===r.group)return!0;a:switch(f.spec().optype){case "RemoveText":case "InsertText":r=!0;break a;default:r=!1}if(r&&k.some(c)){if(p){var q;p=f.spec().optype;r=new g(k,c);var e=r.previous(),l=null,a,d;runtime.assert(Boolean(e),"No edit operations found in state");d=e.group;runtime.assert(void 0!==d,"Operation has no group");for(a=1;e&&e.group===d;){if(p===e.spec().optype){q=e;break}e=r.previous()}if(q){for(e=r.previous();e;){if(e.group!==d){if(2===a)break;d=e.group;a+=1}if(p===e.spec().optype){l=
+e;break}e=r.previous()}q=b(f,q,l)}else q=!1;return q}q=f.spec().optype;p=new g(k,c);r=p.previous();runtime.assert(Boolean(r),"No edit operations found in state");q=q===r.spec().optype?b(f,r,p.previous()):!1;return q}return!1}};
+(function(){function g(b,c){this.mainId=void 0!==b?b:-1;this.subId=void 0!==c?c:-1}function k(b,f,k){function p(c,a){return c+(b.isEditOperation(a)?1:0)}var r,q,e;this.addOperation=function(c){b.isEditOperation(c)&&(e+=1);q.push(c)};this.isNextStateId=function(b){return b.mainId===r&&b.subId===e};this.getNextStateId=function(){return new g(r,e)};this.getOperations=function(){return q};r=c+=1;q=f||[];e=f&&k?f.reduce(p,0):0}var c=0;gui.TrivialUndoManager=function(b){function c(){return!0!==u.isNextStateId(v)}
+function n(a){a=a.getOperations();0<a.length&&(L=!0,z(a),L=!1)}function p(){I.emit(gui.UndoManager.signalUndoStackChanged,{undoAvailable:m.hasUndoStates(),redoAvailable:m.hasRedoStates()})}function r(a){var b=c();a!==b&&I.emit(gui.UndoManager.signalDocumentModifiedChanged,b)}function q(){u!==x&&u!==t[t.length-1]&&t.push(u)}function e(a){var b=a.previousSibling||a.nextSibling;a.parentNode.removeChild(a);h.normalizeTextNodes(b)}function l(a){return Object.keys(a).map(function(b){return a[b]})}function a(a){function b(a){var h=
+a.spec();if(e[h.memberid])switch(h.optype){case "AddCursor":d[h.memberid]||(d[h.memberid]=a,delete e[h.memberid],--f);break;case "MoveCursor":c[h.memberid]||(c[h.memberid]=a)}}var d={},c={},e={},f,h;h=a.pop();w.getMemberIds().forEach(function(a){e[a]=!0});for(f=Object.keys(e).length;h&&0<f;)h=h.getOperations(),h.reverse(),h.forEach(b),h=a.pop();return new k(K,l(d).concat(l(c)))}function d(){var b=c(),d=y=w.cloneDocumentElement();h.getElementsByTagNameNS(d,"urn:webodf:names:cursor","cursor").forEach(e);
+h.getElementsByTagNameNS(d,"urn:webodf:names:cursor","anchor").forEach(e);q();u=x=a([x].concat(t));t.length=0;A.length=0;b||(v=u.getNextStateId());p();r(b)}var m=this,h=core.DomUtils,y,x,z,w,v,u,t=[],A=[],I=new core.EventNotifier([gui.UndoManager.signalUndoStackChanged,gui.UndoManager.signalUndoStateCreated,gui.UndoManager.signalUndoStateModified,gui.UndoManager.signalDocumentModifiedChanged,gui.TrivialUndoManager.signalDocumentRootReplaced]),K=b||new gui.UndoStateRules,L=!1;this.subscribe=function(a,
+b){I.subscribe(a,b)};this.unsubscribe=function(a,b){I.unsubscribe(a,b)};this.isDocumentModified=c;this.setDocumentModified=function(a){c()!==a&&(v=a?new g:u.getNextStateId(),I.emit(gui.UndoManager.signalDocumentModifiedChanged,a))};this.hasUndoStates=function(){return 0<t.length};this.hasRedoStates=function(){return 0<A.length};this.setDocument=function(a){w=a};this.purgeInitialState=function(){var a=c();t.length=0;A.length=0;u=x=new k(K);v=u.getNextStateId();y=null;p();r(a)};this.setInitialState=
+d;this.initialize=function(){y||d()};this.setPlaybackFunction=function(a){z=a};this.onOperationExecuted=function(a){if(!L){var b=c();K.isEditOperation(a)&&(u===x||0<A.length)||!K.isPartOfOperationSet(a,u.getOperations())?(A.length=0,q(),u=new k(K,[a],!0),t.push(u),I.emit(gui.UndoManager.signalUndoStateCreated,{operations:u.getOperations()}),p()):(u.addOperation(a),I.emit(gui.UndoManager.signalUndoStateModified,{operations:u.getOperations()}));r(b)}};this.moveForward=function(a){for(var b=0,d=c(),
+e;a&&A.length;)e=A.pop(),t.push(e),n(e),--a,b+=1;b&&(u=t[t.length-1],p(),r(d));return b};this.moveBackward=function(a){for(var b=0,d=c();a&&t.length;)A.push(t.pop()),--a,b+=1;b&&(w.getMemberIds().forEach(function(a){w.hasCursor(a)&&w.removeCursor(a)}),w.setDocumentElement(y.cloneNode(!0)),I.emit(gui.TrivialUndoManager.signalDocumentRootReplaced,{}),n(x),t.forEach(n),u=t[t.length-1]||x,p(),r(d));return b};u=x=new k(K);v=u.getNextStateId()};gui.TrivialUndoManager.signalDocumentRootReplaced="documentRootReplaced"})();
+odf.GraphicProperties=function(g,k,c){var b=this,f=odf.Namespaces.stylens,n=odf.Namespaces.svgns;this.verticalPos=function(){return b.data.value("verticalPos")};this.verticalRel=function(){return b.data.value("verticalRel")};this.horizontalPos=function(){return b.data.value("horizontalPos")};this.horizontalRel=function(){return b.data.value("horizontalRel")};this.strokeWidth=function(){return b.data.value("strokeWidth")};b.data=new odf.LazyStyleProperties(void 0===c?void 0:c.data,{verticalPos:function(){var b=
+g.getAttributeNS(f,"vertical-pos");return""===b?void 0:b},verticalRel:function(){var b=g.getAttributeNS(f,"vertical-rel");return""===b?void 0:b},horizontalPos:function(){var b=g.getAttributeNS(f,"horizontal-pos");return""===b?void 0:b},horizontalRel:function(){var b=g.getAttributeNS(f,"horizontal-rel");return""===b?void 0:b},strokeWidth:function(){var b=g.getAttributeNS(n,"stroke-width");return k.parseLength(b)}})};
+odf.ComputedGraphicProperties=function(){var g;this.setGraphicProperties=function(k){g=k};this.verticalPos=function(){return g&&g.verticalPos()||"from-top"};this.verticalRel=function(){return g&&g.verticalRel()||"page"};this.horizontalPos=function(){return g&&g.horizontalPos()||"from-left"};this.horizontalRel=function(){return g&&g.horizontalRel()||"page"}};
+odf.PageLayoutProperties=function(g,k,c){var b=this,f=odf.Namespaces.fons;this.pageHeight=function(){return b.data.value("pageHeight")||1123};this.pageWidth=function(){return b.data.value("pageWidth")||794};b.data=new odf.LazyStyleProperties(void 0===c?void 0:c.data,{pageHeight:function(){var b;g&&(b=g.getAttributeNS(f,"page-height"),b=k.parseLength(b));return b},pageWidth:function(){var b;g&&(b=g.getAttributeNS(f,"page-width"),b=k.parseLength(b));return b}})};
+odf.PageLayout=function(g,k,c){var b=null;g&&(b=k.getPropertiesElement("page-layout-properties",g));this.pageLayout=new odf.PageLayoutProperties(b,k,c&&c.pageLayout)};odf.PageLayoutCache=function(){};odf.PageLayoutCache.prototype.getPageLayout=function(g){};odf.PageLayoutCache.prototype.getDefaultPageLayout=function(){};
+odf.ParagraphProperties=function(g,k,c){var b=this,f=odf.Namespaces.fons;this.marginTop=function(){return b.data.value("marginTop")};b.data=new odf.LazyStyleProperties(void 0===c?void 0:c.data,{marginTop:function(){var b=g.getAttributeNS(f,"margin-top");return k.parsePositiveLengthOrPercent(b,"marginTop",c&&c.data)}})};
+odf.ComputedParagraphProperties=function(){var g={},k=[];this.setStyleChain=function(c){k=c;g={}};this.marginTop=function(){var c,b;if(g.hasOwnProperty("marginTop"))c=g.marginTop;else{for(b=0;void 0===c&&b<k.length;b+=1)c=k[b].marginTop();g.marginTop=c}return c||0}};
+odf.TextProperties=function(g,k,c){var b=this,f=odf.Namespaces.fons;this.fontSize=function(){return b.data.value("fontSize")};b.data=new odf.LazyStyleProperties(void 0===c?void 0:c.data,{fontSize:function(){var b=g.getAttributeNS(f,"font-size");return k.parsePositiveLengthOrPercent(b,"fontSize",c&&c.data)}})};
+odf.ComputedTextProperties=function(){var g={},k=[];this.setStyleChain=function(c){k=c;g={}};this.fontSize=function(){var c,b;if(g.hasOwnProperty("fontSize"))c=g.fontSize;else{for(b=0;void 0===c&&b<k.length;b+=1)c=k[b].fontSize();g.fontSize=c}return c||12}};odf.MasterPage=function(g,k){var c;g?(c=g.getAttributeNS(odf.Namespaces.stylens,"page-layout-name"),this.pageLayout=k.getPageLayout(c)):this.pageLayout=k.getDefaultPageLayout()};odf.MasterPageCache=function(){};
+odf.MasterPageCache.prototype.getMasterPage=function(g){};
+odf.StylePileEntry=function(g,k,c,b){this.masterPage=function(){var b=g.getAttributeNS(odf.Namespaces.stylens,"master-page-name"),k=null;b&&(k=c.getMasterPage(b));return k};(function(c){var n=g.getAttributeNS(odf.Namespaces.stylens,"family"),p=null;if("graphic"===n||"chart"===n)c.graphic=void 0===b?void 0:b.graphic,p=k.getPropertiesElement("graphic-properties",g,p),null!==p&&(c.graphic=new odf.GraphicProperties(p,k,c.graphic));if("paragraph"===n||"table-cell"===n||"graphic"===n||"presentation"===
+n||"chart"===n)c.paragraph=void 0===b?void 0:b.paragraph,p=k.getPropertiesElement("paragraph-properties",g,p),null!==p&&(c.paragraph=new odf.ParagraphProperties(p,k,c.paragraph));if("text"===n||"paragraph"===n||"table-cell"===n||"graphic"===n||"presentation"===n||"chart"===n)c.text=void 0===b?void 0:b.text,p=k.getPropertiesElement("text-properties",g,p),null!==p&&(c.text=new odf.TextProperties(p,k,c.text))})(this)};
+odf.StylePile=function(g,k){function c(c,a){var d,f;c.hasAttributeNS(b,"parent-style-name")&&(f=c.getAttributeNS(b,"parent-style-name"),-1===a.indexOf(f)&&(d=e(f,a)));return new odf.StylePileEntry(c,g,k,d)}var b=odf.Namespaces.stylens,f={},n={},p,r={},q={},e;e=function(b,a){var d=r[b],e;!d&&(e=f[b])&&(a.push(b),d=c(e,a),r[b]=d);return d};this.getStyle=function(b){var a=q[b]||r[b],d,e=[];a||(d=n[b],d||(d=f[b])&&e.push(b),d&&(a=c(d,e)));return a};this.addCommonStyle=function(c){var a;c.hasAttributeNS(b,
+"name")&&(a=c.getAttributeNS(b,"name"),f.hasOwnProperty(a)||(f[a]=c))};this.addAutomaticStyle=function(c){var a;c.hasAttributeNS(b,"name")&&(a=c.getAttributeNS(b,"name"),n.hasOwnProperty(a)||(n[a]=c))};this.setDefaultStyle=function(b){void 0===p&&(p=c(b,[]))};this.getDefaultStyle=function(){return p}};odf.ComputedGraphicStyle=function(){this.text=new odf.ComputedTextProperties;this.paragraph=new odf.ComputedParagraphProperties;this.graphic=new odf.ComputedGraphicProperties};
+odf.ComputedParagraphStyle=function(){this.text=new odf.ComputedTextProperties;this.paragraph=new odf.ComputedParagraphProperties};odf.ComputedTextStyle=function(){this.text=new odf.ComputedTextProperties};
+odf.StyleCache=function(g){function k(a,b,d,c){b=d.getAttributeNS(b,"class-names");var e;if(b)for(b=b.split(" "),e=0;e<b.length;e+=1)if(d=b[e])c.push(a),c.push(d)}function c(a,b){var d=x.getStyleName("paragraph",a);void 0!==d&&(b.push("paragraph"),b.push(d));a.namespaceURI!==h||"h"!==a.localName&&"p"!==a.localName||k("paragraph",h,a,b);return b}function b(a,b,d){var c=[],e,h,f,g;for(e=0;e<a.length;e+=2)f=a[e],g=a[e+1],f=r[f],g=f.getStyle(g),void 0!==g&&(g=g[b],void 0!==g&&g!==h&&(c.push(g),h=g));
+f=r[d];if(g=f.getDefaultStyle())g=g[b],void 0!==g&&g!==h&&c.push(g);return c}function f(a,b){var d=x.getStyleName("text",a),e=a.parentNode;void 0!==d&&(b.push("text"),b.push(d));"span"===a.localName&&a.namespaceURI===h&&k("text",h,a,b);if(!e||e===g)return b;e.namespaceURI!==h||"p"!==e.localName&&"h"!==e.localName?f(e,b):c(e,b);return b}function n(a){a=a.getAttributeNS(y,"family");return r[a]}var p=this,r,q,e,l,a,d,m,h=odf.Namespaces.textns,y=odf.Namespaces.stylens,x=new odf.StyleInfo,z=new odf.StyleParseUtils,
+w,v,u,t,A,I;this.getComputedGraphicStyle=function(a){var d=[];a=x.getStyleName("graphic",a);void 0!==a&&(d.push("graphic"),d.push(a));a=d.join("/");var c=l[a];runtime.assert(0===d.length%2,"Invalid style chain.");void 0===c&&(c=new odf.ComputedGraphicStyle,c.graphic.setGraphicProperties(b(d,"graphic","graphic")[0]),c.text.setStyleChain(b(d,"text","graphic")),c.paragraph.setStyleChain(b(d,"paragraph","graphic")),l[a]=c);return c};this.getComputedParagraphStyle=function(a){a=c(a,[]);var d=a.join("/"),
+f=e[d];runtime.assert(0===a.length%2,"Invalid style chain.");void 0===f&&(f=new odf.ComputedParagraphStyle,f.text.setStyleChain(b(a,"text","paragraph")),f.paragraph.setStyleChain(b(a,"paragraph","paragraph")),e[d]=f);return f};this.getComputedTextStyle=function(a){a=f(a,[]);var d=a.join("/"),c=q[d];runtime.assert(0===a.length%2,"Invalid style chain.");void 0===c&&(c=new odf.ComputedTextStyle,c.text.setStyleChain(b(a,"text","text")),q[d]=c);return c};this.getPageLayout=function(a){var b=I[a];b||((b=
+A[a])?(b=new odf.PageLayout(b,z,t),I[a]=b):b=t);return b};this.getDefaultPageLayout=function(){return t};this.getMasterPage=function(a){var b=v[a];void 0===b&&((b=w[a])?(b=new odf.MasterPage(b,p),v[a]=b):b=null);return b};this.getDefaultMasterPage=function(){return u};this.update=function(){var b,c,f=null,h=null;q={};e={};l={};w={};v={};I={};A={};a=new odf.StylePile(z,p);d=new odf.StylePile(z,p);m=new odf.StylePile(z,p);r={text:a,paragraph:d,graphic:m};for(b=g.styles.firstElementChild;b;)b.namespaceURI===
+y&&((c=n(b))?"style"===b.localName?c.addCommonStyle(b):"default-style"===b.localName&&c.setDefaultStyle(b):"default-page-layout"===b.localName&&(f=b)),b=b.nextElementSibling;t=new odf.PageLayout(f,z);for(b=g.automaticStyles.firstElementChild;b;)b.namespaceURI===y&&((c=n(b))&&"style"===b.localName?c.addAutomaticStyle(b):"page-layout"===b.localName&&(A[b.getAttributeNS(y,"name")]=b)),b=b.nextElementSibling;for(b=g.masterStyles.firstElementChild;b;)b.namespaceURI===y&&"master-page"===b.localName&&(h=
+h||b,c=b,f=c.getAttributeNS(y,"name"),0<f.length&&!w.hasOwnProperty(f)&&(w[f]=c)),b=b.nextElementSibling;u=new odf.MasterPage(h,p)}};
+ops.OperationTransformMatrix=function(){function g(a){a.position+=a.length;a.length*=-1}function k(a){var b=0>a.length;b&&g(a);return b}function c(a,b){function c(f){a[f]===b&&e.push(f)}var e=[];a&&["style:parent-style-name","style:next-style-name"].forEach(c);return e}function b(a,b){function c(e){a[e]===b&&delete a[e]}a&&["style:parent-style-name","style:next-style-name"].forEach(c)}function f(a){var b={};Object.keys(a).forEach(function(c){b[c]="object"===typeof a[c]?f(a[c]):a[c]});return b}function n(a,
+b,c,e){var f,g=!1,k=!1,l,n=[];e&&e.attributes&&(n=e.attributes.split(","));a&&(c||0<n.length)&&Object.keys(a).forEach(function(b){var d=a[b],e;"object"!==typeof d&&(c&&(e=c[b]),void 0!==e?(delete a[b],k=!0,e===d&&(delete c[b],g=!0)):-1!==n.indexOf(b)&&(delete a[b],k=!0))});if(b&&b.attributes&&(c||0<n.length)){l=b.attributes.split(",");for(e=0;e<l.length;e+=1)if(f=l[e],c&&void 0!==c[f]||n&&-1!==n.indexOf(f))l.splice(e,1),--e,k=!0;0<l.length?b.attributes=l.join(","):delete b.attributes}return{majorChanged:g,
+minorChanged:k}}function p(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1}function r(a){for(var b in a)if(a.hasOwnProperty(b)&&("attributes"!==b||0<a.attributes.length))return!0;return!1}function q(a,b,c,e,f){var g=a?a[f]:null,k=b?b[f]:null,l=c?c[f]:null,q=e?e[f]:null,u;u=n(g,k,l,q);g&&!p(g)&&delete a[f];k&&!r(k)&&delete b[f];l&&!p(l)&&delete c[f];q&&!r(q)&&delete e[f];return u}function e(a,b){return{opSpecsA:[a],opSpecsB:[b]}}var l;l={AddAnnotation:{AddAnnotation:function(a,b,c){var e;
+a.position<b.position?(e=a,c=b):b.position<a.position?(e=b,c=a):(e=c?a:b,c=c?b:a);c.position<e.position+e.length&&(e.length+=2);c.position+=2;return{opSpecsA:[a],opSpecsB:[b]}},AddCursor:e,AddMember:e,AddStyle:e,ApplyDirectStyling:function(a,b){a.position<=b.position?b.position+=2:a.position<=b.position+b.length&&(b.length+=2);return{opSpecsA:[a],opSpecsB:[b]}},InsertText:function(a,b){b.position<=a.position?a.position+=b.text.length:(void 0!==a.length&&b.position<=a.position+a.length&&(a.length+=
+b.text.length),b.position+=2);return{opSpecsA:[a],opSpecsB:[b]}},MergeParagraph:function(a,b){b.sourceStartPosition<=a.position?--a.position:(void 0!==a.length&&b.sourceStartPosition<=a.position+a.length&&--a.length,b.sourceStartPosition+=2,a.position<b.destinationStartPosition&&(b.destinationStartPosition+=2));return{opSpecsA:[a],opSpecsB:[b]}},MoveCursor:function(a,b){var c=k(b);a.position<b.position?b.position+=2:a.position<b.position+b.length&&(b.length+=2);c&&g(b);return{opSpecsA:[a],opSpecsB:[b]}},
+RemoveAnnotation:function(a,b){a.position<b.position?(b.position<a.position+a.length&&(a.length-=b.length+2),b.position+=2):a.position-=b.length+2;return{opSpecsA:[a],opSpecsB:[b]}},RemoveCursor:e,RemoveMember:e,RemoveStyle:e,RemoveText:function(a,b){var c=b.position,e=b.position+b.length,f,g=[a],k=[b];a.position<=b.position?b.position+=2:a.position<e&&(b.length=a.position-b.position,f={optype:"RemoveText",memberid:b.memberid,timestamp:b.timestamp,position:a.position+2,length:e-a.position},k.unshift(f));
+b.position+b.length<=a.position?(a.position-=b.length,void 0!==a.length&&f&&(a.length=f.length>=a.length?0:a.length-f.length)):void 0!==a.length&&(f=a.position+a.length,e<=f?a.length-=b.length:c<f&&(a.length=c-a.position));return{opSpecsA:g,opSpecsB:k}},SetParagraphStyle:function(a,b){a.position<b.position&&(b.position+=2);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){a.position<b.sourceParagraphPosition&&(b.sourceParagraphPosition+=2);b.position<=a.position?a.position+=1:(void 0!==
+a.length&&b.position<=a.position+a.length&&(a.length+=1),b.position+=2);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},AddCursor:{AddCursor:e,AddMember:e,AddStyle:e,ApplyDirectStyling:e,InsertText:e,MergeParagraph:e,MoveCursor:e,RemoveAnnotation:e,RemoveCursor:e,RemoveMember:e,RemoveStyle:e,RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},AddMember:{AddStyle:e,ApplyDirectStyling:e,InsertText:e,MergeParagraph:e,
+MoveCursor:e,RemoveAnnotation:e,RemoveCursor:e,RemoveStyle:e,RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMetadata:e,UpdateParagraphStyle:e},AddStyle:{AddStyle:e,ApplyDirectStyling:e,InsertText:e,MergeParagraph:e,MoveCursor:e,RemoveAnnotation:e,RemoveCursor:e,RemoveMember:e,RemoveStyle:function(a,d){var e,f=[a],g=[d];a.styleFamily===d.styleFamily&&(e=c(a.setProperties,d.styleName),0<e.length&&(e={optype:"UpdateParagraphStyle",memberid:d.memberid,timestamp:d.timestamp,styleName:a.styleName,
+removedProperties:{attributes:e.join(",")}},g.unshift(e)),b(a.setProperties,d.styleName));return{opSpecsA:f,opSpecsB:g}},RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},ApplyDirectStyling:{ApplyDirectStyling:function(a,b,c){var e,g,k,l,n,r,u,t;l=[a];k=[b];if(!(a.position+a.length<=b.position||a.position>=b.position+b.length)){e=c?a:b;g=c?b:a;if(a.position!==b.position||a.length!==b.length)r=f(e),u=f(g);b=q(g.setProperties,null,e.setProperties,
+null,"style:text-properties");if(b.majorChanged||b.minorChanged)k=[],a=[],l=e.position+e.length,n=g.position+g.length,g.position<e.position?b.minorChanged&&(t=f(u),t.length=e.position-g.position,a.push(t),g.position=e.position,g.length=n-g.position):e.position<g.position&&b.majorChanged&&(t=f(r),t.length=g.position-e.position,k.push(t),e.position=g.position,e.length=l-e.position),n>l?b.minorChanged&&(r=u,r.position=l,r.length=n-l,a.push(r),g.length=l-g.position):l>n&&b.majorChanged&&(r.position=n,
+r.length=l-n,k.push(r),e.length=n-e.position),e.setProperties&&p(e.setProperties)&&k.push(e),g.setProperties&&p(g.setProperties)&&a.push(g),c?(l=k,k=a):l=a}return{opSpecsA:l,opSpecsB:k}},InsertText:function(a,b){b.position<=a.position?a.position+=b.text.length:b.position<=a.position+a.length&&(a.length+=b.text.length);return{opSpecsA:[a],opSpecsB:[b]}},MergeParagraph:function(a,b){var c=a.position,e=a.position+a.length;c>=b.sourceStartPosition&&--c;e>=b.sourceStartPosition&&--e;a.position=c;a.length=
+e-c;return{opSpecsA:[a],opSpecsB:[b]}},MoveCursor:e,RemoveAnnotation:function(a,b){var c=a.position,e=a.position+a.length,f=b.position+b.length,g=[a],k=[b];b.position<=c&&e<=f?g=[]:(f<c&&(c-=b.length+2),f<e&&(e-=b.length+2),a.position=c,a.length=e-c);return{opSpecsA:g,opSpecsB:k}},RemoveCursor:e,RemoveMember:e,RemoveStyle:e,RemoveText:function(a,b){var c=a.position+a.length,e=b.position+b.length,f=[a],g=[b];e<=a.position?a.position-=b.length:b.position<c&&(a.position<b.position?a.length=e<c?a.length-
+b.length:b.position-a.position:(a.position=b.position,e<c?a.length=c-e:f=[]));return{opSpecsA:f,opSpecsB:g}},SetParagraphStyle:e,SplitParagraph:function(a,b){b.position<a.position?a.position+=1:b.position<a.position+a.length&&(a.length+=1);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},InsertText:{InsertText:function(a,b,c){a.position<b.position?b.position+=a.text.length:a.position>b.position?a.position+=b.text.length:c?b.position+=a.text.length:a.position+=
+b.text.length;return{opSpecsA:[a],opSpecsB:[b]}},MergeParagraph:function(a,b){a.position>=b.sourceStartPosition?--a.position:(a.position<b.sourceStartPosition&&(b.sourceStartPosition+=a.text.length),a.position<b.destinationStartPosition&&(b.destinationStartPosition+=a.text.length));return{opSpecsA:[a],opSpecsB:[b]}},MoveCursor:function(a,b){var c=k(b);a.position<b.position?b.position+=a.text.length:a.position<b.position+b.length&&(b.length+=a.text.length);c&&g(b);return{opSpecsA:[a],opSpecsB:[b]}},
+RemoveAnnotation:function(a,b){var c=a.position,e=b.position+b.length,f=[a],g=[b];b.position<=c&&c<=e?(f=[],b.length+=a.text.length):e<a.position?a.position-=b.length+2:b.position+=a.text.length;return{opSpecsA:f,opSpecsB:g}},RemoveCursor:e,RemoveMember:e,RemoveStyle:e,RemoveText:function(a,b){var c;c=b.position+b.length;var e=[a],f=[b];c<=a.position?a.position-=b.length:a.position<=b.position?b.position+=a.text.length:(b.length=a.position-b.position,c={optype:"RemoveText",memberid:b.memberid,timestamp:b.timestamp,
+position:a.position+a.text.length,length:c-a.position},f.unshift(c),a.position=b.position);return{opSpecsA:e,opSpecsB:f}},SetParagraphStyle:function(a,b){b.position>a.position&&(b.position+=a.text.length);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){a.position<b.sourceParagraphPosition&&(b.sourceParagraphPosition+=a.text.length);a.position<=b.position?b.position+=a.text.length:a.position+=1;return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},
+MergeParagraph:{MergeParagraph:function(a,b,c){var e=[a],f=[b],g;a.destinationStartPosition===b.destinationStartPosition?(e=[],f=[],a.moveCursor&&(g={optype:"MoveCursor",memberid:a.memberid,timestamp:a.timestamp,position:a.sourceStartPosition-1},e.push(g)),b.moveCursor&&(g={optype:"MoveCursor",memberid:b.memberid,timestamp:b.timestamp,position:b.sourceStartPosition-1},f.push(g)),a=c?a:b,a={optype:"SetParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,position:a.destinationStartPosition,styleName:a.paragraphStyleName},
+c?e.push(a):f.push(a)):b.sourceStartPosition===a.destinationStartPosition?(a.destinationStartPosition=b.destinationStartPosition,--a.sourceStartPosition,a.paragraphStyleName=b.paragraphStyleName):a.sourceStartPosition===b.destinationStartPosition?(b.destinationStartPosition=a.destinationStartPosition,--b.sourceStartPosition,b.paragraphStyleName=a.paragraphStyleName):a.destinationStartPosition<b.destinationStartPosition?(--b.destinationStartPosition,--b.sourceStartPosition):(--a.destinationStartPosition,
+--a.sourceStartPosition);return{opSpecsA:e,opSpecsB:f}},MoveCursor:function(a,b){var c=b.position,e=b.position+b.length,f=Math.min(c,e),c=Math.max(c,e);f>=a.sourceStartPosition&&--f;c>=a.sourceStartPosition&&--c;0<=b.length?(b.position=f,b.length=c-f):(b.position=c,b.length=f-c);return{opSpecsA:[a],opSpecsB:[b]}},RemoveAnnotation:function(a,b){var c=b.position+b.length,e=[a],f=[b];b.position<=a.destinationStartPosition&&a.sourceStartPosition<=c?(e=[],--b.length):a.sourceStartPosition<b.position?--b.position:
+(c<a.destinationStartPosition&&(a.destinationStartPosition-=b.length+2),c<a.sourceStartPosition&&(a.sourceStartPosition-=b.length+2));return{opSpecsA:e,opSpecsB:f}},RemoveCursor:e,RemoveMember:e,RemoveStyle:e,RemoveText:function(a,b){b.position>=a.sourceStartPosition?--b.position:(b.position<a.destinationStartPosition&&(a.destinationStartPosition-=b.length),b.position<a.sourceStartPosition&&(a.sourceStartPosition-=b.length));return{opSpecsA:[a],opSpecsB:[b]}},SetParagraphStyle:function(a,b){var c=
+[a],e=[b];if(b.position>a.sourceStartPosition)--b.position;else if(b.position===a.destinationStartPosition||b.position===a.sourceStartPosition)b.position=a.destinationStartPosition,a.paragraphStyleName=b.styleName;return{opSpecsA:c,opSpecsB:e}},SplitParagraph:function(a,b){var c,e=[a],f=[b];b.position<a.destinationStartPosition?(a.destinationStartPosition+=1,a.sourceStartPosition+=1):b.position>=a.destinationStartPosition&&b.position<a.sourceStartPosition?(b.paragraphStyleName=a.paragraphStyleName,
+c={optype:"SetParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,position:a.destinationStartPosition,styleName:a.paragraphStyleName},e.push(c),b.position===a.sourceStartPosition-1&&a.moveCursor&&(c={optype:"MoveCursor",memberid:a.memberid,timestamp:a.timestamp,position:b.position,length:0},e.push(c)),a.destinationStartPosition=b.position+1,a.sourceStartPosition+=1):b.position>=a.sourceStartPosition&&(--b.position,--b.sourceParagraphPosition);return{opSpecsA:e,opSpecsB:f}},UpdateMember:e,UpdateMetadata:e,
+UpdateParagraphStyle:e},MoveCursor:{MoveCursor:e,RemoveAnnotation:function(a,b){var c=k(a),e=a.position+a.length,f=b.position+b.length;b.position<=a.position&&e<=f?(a.position=b.position-1,a.length=0):(f<a.position?a.position-=b.length+2:f<e&&(a.length-=b.length+2),c&&g(a));return{opSpecsA:[a],opSpecsB:[b]}},RemoveCursor:function(a,b){return{opSpecsA:a.memberid===b.memberid?[]:[a],opSpecsB:[b]}},RemoveMember:e,RemoveStyle:e,RemoveText:function(a,b){var c=k(a),e=a.position+a.length,f=b.position+b.length;
+f<=a.position?a.position-=b.length:b.position<e&&(a.position<b.position?a.length=f<e?a.length-b.length:b.position-a.position:(a.position=b.position,a.length=f<e?e-f:0));c&&g(a);return{opSpecsA:[a],opSpecsB:[b]}},SetParagraphStyle:e,SplitParagraph:function(a,b){var c=k(a);b.position<a.position?a.position+=1:b.position<a.position+a.length&&(a.length+=1);c&&g(a);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},RemoveAnnotation:{RemoveAnnotation:function(a,b){var c=
+[a],e=[b];a.position===b.position&&a.length===b.length?(c=[],e=[]):a.position<b.position?b.position-=a.length+2:a.position-=b.length+2;return{opSpecsA:c,opSpecsB:e}},RemoveCursor:e,RemoveMember:e,RemoveStyle:e,RemoveText:function(a,b){var c=a.position+a.length,e=b.position+b.length,f=[a],g=[b];a.position<=b.position&&e<=c?(g=[],a.length-=b.length):e<a.position?a.position-=b.length:b.position<a.position?(a.position=b.position+1,b.length-=a.length+2):b.position-=a.length+2;return{opSpecsA:f,opSpecsB:g}},
+SetParagraphStyle:function(a,b){var c=b.position,e=a.position+a.length,f=[a],g=[b];a.position<=c&&c<=e?g=[]:e<c&&(b.position-=a.length+2);return{opSpecsA:f,opSpecsB:g}},SplitParagraph:function(a,b){var c=b.position,e=a.position+a.length,f=[a],g=[b];a.position<=c&&c<=e?(g=[],a.length+=1):(e<b.sourceParagraphPosition&&(b.sourceParagraphPosition-=a.length+2),e<c?b.position-=a.length+2:a.position+=1);return{opSpecsA:f,opSpecsB:g}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},RemoveCursor:{RemoveCursor:function(a,
+b){var c=a.memberid===b.memberid;return{opSpecsA:c?[]:[a],opSpecsB:c?[]:[b]}},RemoveMember:e,RemoveStyle:e,RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},RemoveMember:{RemoveStyle:e,RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMetadata:e,UpdateParagraphStyle:e},RemoveStyle:{RemoveStyle:function(a,b){var c=a.styleName===b.styleName&&a.styleFamily===b.styleFamily;return{opSpecsA:c?[]:[a],opSpecsB:c?[]:[b]}},RemoveText:e,SetParagraphStyle:function(a,
+b){var c,e=[a],f=[b];"paragraph"===a.styleFamily&&a.styleName===b.styleName&&(c={optype:"SetParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,position:b.position,styleName:""},e.unshift(c),b.styleName="");return{opSpecsA:e,opSpecsB:f}},SplitParagraph:e,UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:function(a,d){var e,f=[a],g=[d];"paragraph"===a.styleFamily&&(e=c(d.setProperties,a.styleName),0<e.length&&(e={optype:"UpdateParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,styleName:d.styleName,
+removedProperties:{attributes:e.join(",")}},f.unshift(e)),a.styleName===d.styleName?g=[]:b(d.setProperties,a.styleName));return{opSpecsA:f,opSpecsB:g}}},RemoveText:{RemoveText:function(a,b){var c=a.position+a.length,e=b.position+b.length,f=[a],g=[b];e<=a.position?a.position-=b.length:c<=b.position?b.position-=a.length:b.position<c&&(a.position<b.position?(a.length=e<c?a.length-b.length:b.position-a.position,c<e?(b.position=a.position,b.length=e-c):g=[]):(c<e?b.length-=a.length:b.position<a.position?
+b.length=a.position-b.position:g=[],e<c?(a.position=b.position,a.length=c-e):f=[]));return{opSpecsA:f,opSpecsB:g}},SetParagraphStyle:function(a,b){a.position<b.position&&(b.position-=a.length);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){var c=a.position+a.length,e=[a],f=[b];b.position<=a.position?a.position+=1:b.position<c&&(a.length=b.position-a.position,c={optype:"RemoveText",memberid:a.memberid,timestamp:a.timestamp,position:b.position+1,length:c-b.position},e.unshift(c));a.position+
+a.length<=b.position?b.position-=a.length:a.position<b.position&&(b.position=a.position);a.position+a.length<b.sourceParagraphPosition&&(b.sourceParagraphPosition-=a.length);return{opSpecsA:e,opSpecsB:f}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},SetParagraphStyle:{SetParagraphStyle:function(a,b,c){a.position===b.position&&(c?b.styleName=a.styleName:a.styleName=b.styleName);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){var c=[a],e=[b],g;a.position>b.position?a.position+=
+1:a.position===b.sourceParagraphPosition&&(b.paragraphStyleName=a.styleName,g=f(a),g.position=b.position+1,c.push(g));return{opSpecsA:c,opSpecsB:e}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},SplitParagraph:{SplitParagraph:function(a,b,c){var e,f;a.position<b.position?e=!0:b.position<a.position?f=!0:a.position===b.position&&(c?e=!0:f=!0);e?(b.position+=1,b.sourceParagraphPosition=a.position<b.sourceParagraphPosition?b.sourceParagraphPosition+1:a.position+1):f&&(a.position+=1,a.sourceParagraphPosition=
+b.position<b.sourceParagraphPosition?a.sourceParagraphPosition+1:b.position+1);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},UpdateMember:{UpdateMetadata:e,UpdateParagraphStyle:e},UpdateMetadata:{UpdateMetadata:function(a,b,c){var e,f=[a],g=[b];e=c?a:b;a=c?b:a;n(a.setProperties||null,a.removedProperties||null,e.setProperties||null,e.removedProperties||null);e.setProperties&&p(e.setProperties)||e.removedProperties&&r(e.removedProperties)||(c?f=[]:g=[]);
+a.setProperties&&p(a.setProperties)||a.removedProperties&&r(a.removedProperties)||(c?g=[]:f=[]);return{opSpecsA:f,opSpecsB:g}},UpdateParagraphStyle:e},UpdateParagraphStyle:{UpdateParagraphStyle:function(a,b,c){var e,f=[a],g=[b];a.styleName===b.styleName&&(e=c?a:b,a=c?b:a,q(a.setProperties,a.removedProperties,e.setProperties,e.removedProperties,"style:paragraph-properties"),q(a.setProperties,a.removedProperties,e.setProperties,e.removedProperties,"style:text-properties"),n(a.setProperties||null,a.removedProperties||
+null,e.setProperties||null,e.removedProperties||null),e.setProperties&&p(e.setProperties)||e.removedProperties&&r(e.removedProperties)||(c?f=[]:g=[]),a.setProperties&&p(a.setProperties)||a.removedProperties&&r(a.removedProperties)||(c?g=[]:f=[]));return{opSpecsA:f,opSpecsB:g}}}};this.passUnchanged=e;this.extendTransformations=function(a){Object.keys(a).forEach(function(b){var c=a[b],e,f=l.hasOwnProperty(b);runtime.log((f?"Extending":"Adding")+" map for optypeA: "+b);f||(l[b]={});e=l[b];Object.keys(c).forEach(function(a){var f=
+e.hasOwnProperty(a);runtime.assert(b<=a,"Wrong order:"+b+", "+a);runtime.log("  "+(f?"Overwriting":"Adding")+" entry for optypeB: "+a);e[a]=c[a]})})};this.transformOpspecVsOpspec=function(a,b){var c=a.optype<=b.optype,e;runtime.log("Crosstransforming:");runtime.log(runtime.toJson(a));runtime.log(runtime.toJson(b));c||(e=a,a=b,b=e);(e=(e=l[a.optype])&&e[b.optype])?(e=e(a,b,!c),c||null===e||(e={opSpecsA:e.opSpecsB,opSpecsB:e.opSpecsA})):e=null;runtime.log("result:");e?(runtime.log(runtime.toJson(e.opSpecsA)),
+runtime.log(runtime.toJson(e.opSpecsB))):runtime.log("null");return e}};
+ops.OperationTransformer=function(){function g(c,b){for(var f,n,p=[],r=[];0<c.length&&b;){f=c.shift();f=k.transformOpspecVsOpspec(f,b);if(!f)return null;p=p.concat(f.opSpecsA);if(0===f.opSpecsB.length){p=p.concat(c);b=null;break}for(;1<f.opSpecsB.length;){n=g(c,f.opSpecsB.shift());if(!n)return null;r=r.concat(n.opSpecsB);c=n.opSpecsA}b=f.opSpecsB.pop()}b&&r.push(b);return{opSpecsA:p,opSpecsB:r}}var k=new ops.OperationTransformMatrix;this.getOperationTransformMatrix=function(){return k};this.transform=
+function(c,b){for(var f,k=[];0<b.length;){f=g(c,b.shift());if(!f)return null;c=f.opSpecsA;k=k.concat(f.opSpecsB)}return{opSpecsA:c,opSpecsB:k}}};var webodf_css='@namespace draw url(urn:oasis:names:tc:opendocument:xmlns:drawing:1.0);@namespace fo url(urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0);@namespace office url(urn:oasis:names:tc:opendocument:xmlns:office:1.0);@namespace presentation url(urn:oasis:names:tc:opendocument:xmlns:presentation:1.0);@namespace style url(urn:oasis:names:tc:opendocument:xmlns:style:1.0);@namespace svg url(urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0);@namespace table url(urn:oasis:names:tc:opendocument:xmlns:table:1.0);@namespace text url(urn:oasis:names:tc:opendocument:xmlns:text:1.0);@namespace webodfhelper url(urn:webodf:names:helper);@namespace cursor url(urn:webodf:names:cursor);@namespace editinfo url(urn:webodf:names:editinfo);@namespace annotation url(urn:webodf:names:annotation);@namespace dc url(http://purl.org/dc/elements/1.1/);@namespace svgns url(http://www.w3.org/2000/svg);office|document > *, office|document-content > * {display: none;}office|body, office|document {display: inline-block;position: relative;}text|p, text|h {display: block;padding: 0;margin: 0;line-height: normal;position: relative;}text|p::after, text|h::after {content: "\\200B";white-space: pre;}*[webodfhelper|containsparagraphanchor] {position: relative;}text|s {white-space: pre;}text|tab {display: inline;white-space: pre;}text|tracked-changes {display: none;}office|binary-data {display: none;}office|text {display: block;text-align: left;overflow: visible;word-wrap: break-word;}office|text::selection {background: transparent;}.webodf-virtualSelections *::selection {background: transparent;}.webodf-virtualSelections *::-moz-selection {background: transparent;}office|text * draw|text-box {display: block;border: 1px solid #d3d3d3;}office|text draw|frame {z-index: 1;}office|spreadsheet {display: block;border-collapse: collapse;empty-cells: show;font-family: sans-serif;font-size: 10pt;text-align: left;page-break-inside: avoid;overflow: hidden;}office|presentation {display: inline-block;text-align: left;}#shadowContent {display: inline-block;text-align: left;}draw|page {display: block;position: relative;overflow: hidden;}presentation|notes, presentation|footer-decl, presentation|date-time-decl {display: none;}@media print {draw|page {border: 1pt solid black;page-break-inside: avoid;}presentation|notes {}}office|spreadsheet text|p {border: 0px;padding: 1px;margin: 0px;}office|spreadsheet table|table {margin: 3px;}office|spreadsheet table|table:after {}office|spreadsheet table|table-row {counter-increment: row;}office|spreadsheet table|table-row:before {width: 3em;background: #cccccc;border: 1px solid black;text-align: center;content: counter(row);display: table-cell;}office|spreadsheet table|table-cell {border: 1px solid #cccccc;}table|table {display: table;}draw|frame table|table {width: 100%;height: 100%;background: white;}table|table-header-rows {display: table-header-group;}table|table-row {display: table-row;}table|table-column {display: table-column;}table|table-cell {width: 0.889in;display: table-cell;word-break: break-all;}draw|frame {display: block;}draw|image {display: block;width: 100%;height: 100%;top: 0px;left: 0px;background-repeat: no-repeat;background-size: 100% 100%;-moz-background-size: 100% 100%;}draw|frame > draw|image:nth-of-type(n+2) {display: none;}text|list:before {display: none;content:"";}text|list {display: block;}text|list-item {display: block;}text|number {display:none;}text|a {color: blue;text-decoration: underline;cursor: pointer;}.webodf-inactiveLinks text|a {cursor: text;}text|note-citation {vertical-align: super;font-size: smaller;}text|note-body {display: none;}text|note:hover text|note-citation {background: #dddddd;}text|note:hover text|note-body {display: block;left:1em;max-width: 80%;position: absolute;background: #ffffaa;}text|bibliography-source {display: none;}svg|title, svg|desc {display: none;}video {width: 100%;height: 100%}cursor|anchor {display: none;}cursor|cursor {display: none;}.webodf-caretOverlay {position: absolute;top: 5%;height: 1em;z-index: 10;padding-left: 1px;pointer-events: none;}.webodf-caretOverlay .caret {position: absolute;border-left: 2px solid black;top: 0;bottom: 0;right: 0;}.webodf-caretOverlay .handle {position: absolute;margin-top: 5px;padding-top: 3px;margin-left: auto;margin-right: auto;width: 64px;height: 68px;border-radius: 5px;opacity: 0.3;text-align: center;background-color: black;box-shadow: 0px 0px 5px rgb(90, 90, 90);border: 1px solid black;top: -85px;right: -32px;}.webodf-caretOverlay .handle > img {box-shadow: 0px 0px 5px rgb(90, 90, 90) inset;background-color: rgb(200, 200, 200);border-radius: 5px;border: 2px solid;height: 60px;width: 60px;display: block;margin: auto;}.webodf-caretOverlay .handle.active {opacity: 0.8;}.webodf-caretOverlay .handle:after {content: " ";position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: black transparent transparent transparent;top: 100%;left: 43%;}.webodf-caretSizer {display: inline-block;width: 0;visibility: hidden;}#eventTrap {display: block;position: absolute;bottom: 0;left: 0;outline: none;opacity: 0;color: rgba(255, 255, 255, 0);pointer-events: none;white-space: pre;overflow: hidden;}cursor|cursor > #composer {text-decoration: underline;}cursor|cursor[cursor|caret-sizer-active="true"],cursor|cursor[cursor|composing="true"] {display: inline;}editinfo|editinfo {display: inline-block;}.editInfoMarker {position: absolute;width: 10px;height: 100%;left: -20px;opacity: 0.8;top: 0;border-radius: 5px;background-color: transparent;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);}.editInfoMarker:hover {box-shadow: 0px 0px 8px rgba(0, 0, 0, 1);}.editInfoHandle {position: absolute;background-color: black;padding: 5px;border-radius: 5px;opacity: 0.8;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);bottom: 100%;margin-bottom: 10px;z-index: 3;left: -25px;}.editInfoHandle:after {content: " ";position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: black transparent transparent transparent;top: 100%;left: 5px;}.editInfo {font-family: sans-serif;font-weight: normal;font-style: normal;text-decoration: none;color: white;width: 100%;height: 12pt;}.editInfoColor {float: left;width: 10pt;height: 10pt;border: 1px solid white;}.editInfoAuthor {float: left;margin-left: 5pt;font-size: 10pt;text-align: left;height: 12pt;line-height: 12pt;}.editInfoTime {float: right;margin-left: 30pt;font-size: 8pt;font-style: italic;color: yellow;height: 12pt;line-height: 12pt;}.annotationWrapper {display: inline;position: relative;}.annotationRemoveButton:before {content: "\u00d7";color: white;padding: 5px;line-height: 1em;}.annotationRemoveButton {width: 20px;height: 20px;border-radius: 10px;background-color: black;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);position: absolute;top: -10px;left: -10px;z-index: 3;text-align: center;font-family: sans-serif;font-style: normal;font-weight: normal;text-decoration: none;font-size: 15px;}.annotationRemoveButton:hover {cursor: pointer;box-shadow: 0px 0px 5px rgba(0, 0, 0, 1);}.annotationNote {width: 4cm;position: absolute;display: inline;z-index: 10;top: 0;}.annotationNote > office|annotation {display: block;text-align: left;}.annotationConnector {position: absolute;display: inline;top: 0;z-index: 2;border-top: 1px dashed brown;}.annotationConnector.angular {-moz-transform-origin: left top;-webkit-transform-origin: left top;-ms-transform-origin: left top;transform-origin: left top;}.annotationConnector.horizontal {left: 0;}.annotationConnector.horizontal:before {content: "";display: inline;position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: brown transparent transparent transparent;top: -1px;left: -5px;}office|annotation {width: 100%;height: 100%;display: none;background: rgb(198, 238, 184);background: -moz-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -webkit-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -o-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -ms-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: linear-gradient(180deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);box-shadow: 0 3px 4px -3px #ccc;}office|annotation > dc|creator {display: block;font-size: 10pt;font-weight: normal;font-style: normal;font-family: sans-serif;color: white;background-color: brown;padding: 4px;}office|annotation > dc|date {display: block;font-size: 10pt;font-weight: normal;font-style: normal;font-family: sans-serif;border: 4px solid transparent;color: black;}office|annotation > text|list {display: block;padding: 5px;}office|annotation text|p {font-size: 10pt;color: black;font-weight: normal;font-style: normal;text-decoration: none;font-family: sans-serif;}#annotationsPane {background-color: #EAEAEA;width: 4cm;height: 100%;display: none;position: absolute;outline: 1px solid #ccc;}.webodf-annotationHighlight {background-color: yellow;position: relative;}.webodf-selectionOverlay {position: absolute;pointer-events: none;top: 0;left: 0;top: 0;left: 0;width: 100%;height: 100%;z-index: 15;}.webodf-selectionOverlay > polygon {fill-opacity: 0.3;stroke-opacity: 0.8;stroke-width: 1;fill-rule: evenodd;}.webodf-selectionOverlay > .webodf-draggable {fill-opacity: 0.8;stroke-opacity: 0;stroke-width: 8;pointer-events: all;display: none;-moz-transform-origin: center center;-webkit-transform-origin: center center;-ms-transform-origin: center center;transform-origin: center center;}#imageSelector {display: none;position: absolute;border-style: solid;border-color: black;}#imageSelector > div {width: 5px;height: 5px;display: block;position: absolute;border: 1px solid black;background-color: #ffffff;}#imageSelector > .topLeft {top: -4px;left: -4px;}#imageSelector > .topRight {top: -4px;right: -4px;}#imageSelector > .bottomRight {right: -4px;bottom: -4px;}#imageSelector > .bottomLeft {bottom: -4px;left: -4px;}#imageSelector > .topMiddle {top: -4px;left: 50%;margin-left: -2.5px;}#imageSelector > .rightMiddle {top: 50%;right: -4px;margin-top: -2.5px;}#imageSelector > .bottomMiddle {bottom: -4px;left: 50%;margin-left: -2.5px;}#imageSelector > .leftMiddle {top: 50%;left: -4px;margin-top: -2.5px;}div.webodf-customScrollbars::-webkit-scrollbar{width: 8px;height: 8px;background-color: transparent;}div.webodf-customScrollbars::-webkit-scrollbar-track{background-color: transparent;}div.webodf-customScrollbars::-webkit-scrollbar-thumb{background-color: #444;border-radius: 4px;}.webodf-hyperlinkTooltip {display: none;color: white;background-color: black;border-radius: 5px;box-shadow: 2px 2px 5px gray;padding: 3px;position: absolute;max-width: 210px;text-align: left;word-break: break-all;z-index: 16;}.webodf-hyperlinkTooltipText {display: block;font-weight: bold;}';/*
+
+ @licstart
+JSZip - A Javascript class for generating and reading zip files
+<http://stuartk.com/jszip>
+
+(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+ @licend
+*/
+!function(e){var globalScope=typeof window!=="undefined"?window:typeof global!=="undefined"?global:{},externs=globalScope.externs||(globalScope.externs={});externs.JSZip=e()}(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'");}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,
+f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(_dereq_,module,exports){var _keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";exports.encode=function(input,utf8){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=(chr1&3)<<4|chr2>>4;enc3=(chr2&15)<<2|chr3>>
+6;enc4=chr3&63;if(isNaN(chr2))enc3=enc4=64;else if(isNaN(chr3))enc4=64;output=output+_keyStr.charAt(enc1)+_keyStr.charAt(enc2)+_keyStr.charAt(enc3)+_keyStr.charAt(enc4)}return output};exports.decode=function(input,utf8){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=_keyStr.indexOf(input.charAt(i++));enc2=_keyStr.indexOf(input.charAt(i++));enc3=_keyStr.indexOf(input.charAt(i++));enc4=_keyStr.indexOf(input.charAt(i++));
+chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64)output=output+String.fromCharCode(chr2);if(enc4!=64)output=output+String.fromCharCode(chr3)}return output}},{}],2:[function(_dereq_,module,exports){function CompressedObject(){this.compressedSize=0;this.uncompressedSize=0;this.crc32=0;this.compressionMethod=null;this.compressedContent=null}CompressedObject.prototype={getContent:function(){return null},getCompressedContent:function(){return null}};
+module.exports=CompressedObject},{}],3:[function(_dereq_,module,exports){exports.STORE={magic:"\x00\x00",compress:function(content){return content},uncompress:function(content){return content},compressInputType:null,uncompressInputType:null};exports.DEFLATE=_dereq_("./flate")},{"./flate":8}],4:[function(_dereq_,module,exports){var utils=_dereq_("./utils");var table=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,
+3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,
+1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,
+1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,
+1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,
+2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,
+3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];module.exports=function crc32(input,crc){if(typeof input==="undefined"||!input.length)return 0;var isArray=utils.getTypeOf(input)!=="string";if(typeof crc=="undefined")crc=0;var x=0;var y=0;var b=0;crc=crc^-1;for(var i=0,iTop=input.length;i<iTop;i++){b=isArray?input[i]:input.charCodeAt(i);y=(crc^b)&255;x=table[y];crc=crc>>>8^x}return crc^-1}},{"./utils":21}],5:[function(_dereq_,module,exports){var utils=_dereq_("./utils");
+function DataReader(data){this.data=null;this.length=0;this.index=0}DataReader.prototype={checkOffset:function(offset){this.checkIndex(this.index+offset)},checkIndex:function(newIndex){if(this.length<newIndex||newIndex<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+newIndex+"). Corrupted zip ?");},setIndex:function(newIndex){this.checkIndex(newIndex);this.index=newIndex},skip:function(n){this.setIndex(this.index+n)},byteAt:function(i){},readInt:function(size){var result=
+0,i;this.checkOffset(size);for(i=this.index+size-1;i>=this.index;i--)result=(result<<8)+this.byteAt(i);this.index+=size;return result},readString:function(size){return utils.transformTo("string",this.readData(size))},readData:function(size){},lastIndexOfSignature:function(sig){},readDate:function(){var dostime=this.readInt(4);return new Date((dostime>>25&127)+1980,(dostime>>21&15)-1,dostime>>16&31,dostime>>11&31,dostime>>5&63,(dostime&31)<<1)}};module.exports=DataReader},{"./utils":21}],6:[function(_dereq_,
+module,exports){exports.base64=false;exports.binary=false;exports.dir=false;exports.createFolders=false;exports.date=null;exports.compression=null;exports.comment=null},{}],7:[function(_dereq_,module,exports){var utils=_dereq_("./utils");exports.string2binary=function(str){return utils.string2binary(str)};exports.string2Uint8Array=function(str){return utils.transformTo("uint8array",str)};exports.uint8Array2String=function(array){return utils.transformTo("string",array)};exports.string2Blob=function(str){var buffer=
+utils.transformTo("arraybuffer",str);return utils.arrayBuffer2Blob(buffer)};exports.arrayBuffer2Blob=function(buffer){return utils.arrayBuffer2Blob(buffer)};exports.transformTo=function(outputType,input){return utils.transformTo(outputType,input)};exports.getTypeOf=function(input){return utils.getTypeOf(input)};exports.checkSupport=function(type){return utils.checkSupport(type)};exports.MAX_VALUE_16BITS=utils.MAX_VALUE_16BITS;exports.MAX_VALUE_32BITS=utils.MAX_VALUE_32BITS;exports.pretty=function(str){return utils.pretty(str)};
+exports.findCompression=function(compressionMethod){return utils.findCompression(compressionMethod)};exports.isRegExp=function(object){return utils.isRegExp(object)}},{"./utils":21}],8:[function(_dereq_,module,exports){var USE_TYPEDARRAY=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Uint32Array!=="undefined";var pako=_dereq_("pako");exports.uncompressInputType=USE_TYPEDARRAY?"uint8array":"array";exports.compressInputType=USE_TYPEDARRAY?"uint8array":"array";exports.magic=
+"\b\x00";exports.compress=function(input){return pako.deflateRaw(input)};exports.uncompress=function(input){return pako.inflateRaw(input)}},{"pako":24}],9:[function(_dereq_,module,exports){var base64=_dereq_("./base64");function JSZip(data,options){if(!(this instanceof JSZip))return new JSZip(data,options);this.files={};this.comment=null;this.root="";if(data)this.load(data,options);this.clone=function(){var newObj=new JSZip;for(var i in this)if(typeof this[i]!=="function")newObj[i]=this[i];return newObj}}
+JSZip.prototype=_dereq_("./object");JSZip.prototype.load=_dereq_("./load");JSZip.support=_dereq_("./support");JSZip.defaults=_dereq_("./defaults");JSZip.utils=_dereq_("./deprecatedPublicUtils");JSZip.base64={encode:function(input){return base64.encode(input)},decode:function(input){return base64.decode(input)}};JSZip.compressions=_dereq_("./compressions");module.exports=JSZip},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(_dereq_,
+module,exports){var base64=_dereq_("./base64");var ZipEntries=_dereq_("./zipEntries");module.exports=function(data,options){var files,zipEntries,i,input;options=options||{};if(options.base64)data=base64.decode(data);zipEntries=new ZipEntries(data,options);files=zipEntries.files;for(i=0;i<files.length;i++){input=files[i];this.file(input.fileName,input.decompressed,{binary:true,optimizedBinaryString:true,date:input.date,dir:input.dir,comment:input.fileComment.length?input.fileComment:null,createFolders:options.createFolders})}if(zipEntries.zipComment.length)this.comment=
+zipEntries.zipComment;return this}},{"./base64":1,"./zipEntries":22}],11:[function(_dereq_,module,exports){(function(Buffer){module.exports=function(data,encoding){return new Buffer(data,encoding)};module.exports.test=function(b){return Buffer.isBuffer(b)}}).call(this,typeof Buffer!=="undefined"?Buffer:undefined)},{}],12:[function(_dereq_,module,exports){var Uint8ArrayReader=_dereq_("./uint8ArrayReader");function NodeBufferReader(data){this.data=data;this.length=this.data.length;this.index=0}NodeBufferReader.prototype=
+new Uint8ArrayReader;NodeBufferReader.prototype.readData=function(size){this.checkOffset(size);var result=this.data.slice(this.index,this.index+size);this.index+=size;return result};module.exports=NodeBufferReader},{"./uint8ArrayReader":18}],13:[function(_dereq_,module,exports){var support=_dereq_("./support");var utils=_dereq_("./utils");var crc32=_dereq_("./crc32");var signature=_dereq_("./signature");var defaults=_dereq_("./defaults");var base64=_dereq_("./base64");var compressions=_dereq_("./compressions");
+var CompressedObject=_dereq_("./compressedObject");var nodeBuffer=_dereq_("./nodeBuffer");var utf8=_dereq_("./utf8");var StringWriter=_dereq_("./stringWriter");var Uint8ArrayWriter=_dereq_("./uint8ArrayWriter");var getRawData=function(file){if(file._data instanceof CompressedObject){file._data=file._data.getContent();file.options.binary=true;file.options.base64=false;if(utils.getTypeOf(file._data)==="uint8array"){var copy=file._data;file._data=new Uint8Array(copy.length);if(copy.length!==0)file._data.set(copy,
+0)}}return file._data};var getBinaryData=function(file){var result=getRawData(file),type=utils.getTypeOf(result);if(type==="string"){if(!file.options.binary)if(support.nodebuffer)return nodeBuffer(result,"utf-8");return file.asBinary()}return result};var dataToString=function(asUTF8){var result=getRawData(this);if(result===null||typeof result==="undefined")return"";if(this.options.base64)result=base64.decode(result);if(asUTF8&&this.options.binary)result=out.utf8decode(result);else result=utils.transformTo("string",
+result);if(!asUTF8&&!this.options.binary)result=utils.transformTo("string",out.utf8encode(result));return result};var ZipObject=function(name,data,options){this.name=name;this.dir=options.dir;this.date=options.date;this.comment=options.comment;this._data=data;this.options=options;this._initialMetadata={dir:options.dir,date:options.date}};ZipObject.prototype={asText:function(){return dataToString.call(this,true)},asBinary:function(){return dataToString.call(this,false)},asNodeBuffer:function(){var result=
+getBinaryData(this);return utils.transformTo("nodebuffer",result)},asUint8Array:function(){var result=getBinaryData(this);return utils.transformTo("uint8array",result)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var decToHex=function(dec,bytes){var hex="",i;for(i=0;i<bytes;i++){hex+=String.fromCharCode(dec&255);dec=dec>>>8}return hex};var extend=function(){var result={},i,attr;for(i=0;i<arguments.length;i++)for(attr in arguments[i])if(arguments[i].hasOwnProperty(attr)&&typeof result[attr]===
+"undefined")result[attr]=arguments[i][attr];return result};var prepareFileAttrs=function(o){o=o||{};if(o.base64===true&&(o.binary===null||o.binary===undefined))o.binary=true;o=extend(o,defaults);o.date=o.date||new Date;if(o.compression!==null)o.compression=o.compression.toUpperCase();return o};var fileAdd=function(name,data,o){var dataType=utils.getTypeOf(data),parent;o=prepareFileAttrs(o);if(o.createFolders&&(parent=parentFolder(name)))folderAdd.call(this,parent,true);if(o.dir||data===null||typeof data===
+"undefined"){o.base64=false;o.binary=false;data=null}else if(dataType==="string"){if(o.binary&&!o.base64)if(o.optimizedBinaryString!==true)data=utils.string2binary(data)}else{o.base64=false;o.binary=true;if(!dataType&&!(data instanceof CompressedObject))throw new Error("The data of '"+name+"' is in an unsupported format !");if(dataType==="arraybuffer")data=utils.transformTo("uint8array",data)}var object=new ZipObject(name,data,o);this.files[name]=object;return object};var parentFolder=function(path){if(path.slice(-1)==
+"/")path=path.substring(0,path.length-1);var lastSlash=path.lastIndexOf("/");return lastSlash>0?path.substring(0,lastSlash):""};var folderAdd=function(name,createFolders){if(name.slice(-1)!="/")name+="/";createFolders=typeof createFolders!=="undefined"?createFolders:false;if(!this.files[name])fileAdd.call(this,name,null,{dir:true,createFolders:createFolders});return this.files[name]};var generateCompressedObjectFrom=function(file,compression){var result=new CompressedObject,content;if(file._data instanceof
+CompressedObject){result.uncompressedSize=file._data.uncompressedSize;result.crc32=file._data.crc32;if(result.uncompressedSize===0||file.dir){compression=compressions["STORE"];result.compressedContent="";result.crc32=0}else if(file._data.compressionMethod===compression.magic)result.compressedContent=file._data.getCompressedContent();else{content=file._data.getContent();result.compressedContent=compression.compress(utils.transformTo(compression.compressInputType,content))}}else{content=getBinaryData(file);
+if(!content||content.length===0||file.dir){compression=compressions["STORE"];content=""}result.uncompressedSize=content.length;result.crc32=crc32(content);result.compressedContent=compression.compress(utils.transformTo(compression.compressInputType,content))}result.compressedSize=result.compressedContent.length;result.compressionMethod=compression.magic;return result};var generateZipParts=function(name,file,compressedObject,offset){var data=compressedObject.compressedContent,utfEncodedFileName=utils.transformTo("string",
+utf8.utf8encode(file.name)),comment=file.comment||"",utfEncodedComment=utils.transformTo("string",utf8.utf8encode(comment)),useUTF8ForFileName=utfEncodedFileName.length!==file.name.length,useUTF8ForComment=utfEncodedComment.length!==comment.length,o=file.options,dosTime,dosDate,extraFields="",unicodePathExtraField="",unicodeCommentExtraField="",dir,date;if(file._initialMetadata.dir!==file.dir)dir=file.dir;else dir=o.dir;if(file._initialMetadata.date!==file.date)date=file.date;else date=o.date;dosTime=
+date.getHours();dosTime=dosTime<<6;dosTime=dosTime|date.getMinutes();dosTime=dosTime<<5;dosTime=dosTime|date.getSeconds()/2;dosDate=date.getFullYear()-1980;dosDate=dosDate<<4;dosDate=dosDate|date.getMonth()+1;dosDate=dosDate<<5;dosDate=dosDate|date.getDate();if(useUTF8ForFileName){unicodePathExtraField=decToHex(1,1)+decToHex(crc32(utfEncodedFileName),4)+utfEncodedFileName;extraFields+="up"+decToHex(unicodePathExtraField.length,2)+unicodePathExtraField}if(useUTF8ForComment){unicodeCommentExtraField=
+decToHex(1,1)+decToHex(this.crc32(utfEncodedComment),4)+utfEncodedComment;extraFields+="uc"+decToHex(unicodeCommentExtraField.length,2)+unicodeCommentExtraField}var header="";header+="\n\x00";header+=useUTF8ForFileName||useUTF8ForComment?"\x00\b":"\x00\x00";header+=compressedObject.compressionMethod;header+=decToHex(dosTime,2);header+=decToHex(dosDate,2);header+=decToHex(compressedObject.crc32,4);header+=decToHex(compressedObject.compressedSize,4);header+=decToHex(compressedObject.uncompressedSize,
+4);header+=decToHex(utfEncodedFileName.length,2);header+=decToHex(extraFields.length,2);var fileRecord=signature.LOCAL_FILE_HEADER+header+utfEncodedFileName+extraFields;var dirRecord=signature.CENTRAL_FILE_HEADER+"\u0014\x00"+header+decToHex(utfEncodedComment.length,2)+"\x00\x00"+"\x00\x00"+(dir===true?"\u0010\x00\x00\x00":"\x00\x00\x00\x00")+decToHex(offset,4)+utfEncodedFileName+extraFields+utfEncodedComment;return{fileRecord:fileRecord,dirRecord:dirRecord,compressedObject:compressedObject}};var out=
+{load:function(stream,options){throw new Error("Load method is not defined. Is the file jszip-load.js included ?");},filter:function(search){var result=[],filename,relativePath,file,fileClone;for(filename in this.files){if(!this.files.hasOwnProperty(filename))continue;file=this.files[filename];fileClone=new ZipObject(file.name,file._data,extend(file.options));relativePath=filename.slice(this.root.length,filename.length);if(filename.slice(0,this.root.length)===this.root&&search(relativePath,fileClone))result.push(fileClone)}return result},
+file:function(name,data,o){if(arguments.length===1)if(utils.isRegExp(name)){var regexp=name;return this.filter(function(relativePath,file){return!file.dir&&regexp.test(relativePath)})}else return this.filter(function(relativePath,file){return!file.dir&&relativePath===name})[0]||null;else{name=this.root+name;fileAdd.call(this,name,data,o)}return this},folder:function(arg){if(!arg)return this;if(utils.isRegExp(arg))return this.filter(function(relativePath,file){return file.dir&&arg.test(relativePath)});
+var name=this.root+arg;var newFolder=folderAdd.call(this,name);var ret=this.clone();ret.root=newFolder.name;return ret},remove:function(name){name=this.root+name;var file=this.files[name];if(!file){if(name.slice(-1)!="/")name+="/";file=this.files[name]}if(file&&!file.dir)delete this.files[name];else{var kids=this.filter(function(relativePath,file){return file.name.slice(0,name.length)===name});for(var i=0;i<kids.length;i++)delete this.files[kids[i].name]}return this},generate:function(options){options=
+extend(options||{},{base64:true,compression:"STORE",type:"base64",comment:null});utils.checkSupport(options.type);var zipData=[],localDirLength=0,centralDirLength=0,writer,i,utfEncodedComment=utils.transformTo("string",this.utf8encode(options.comment||this.comment||""));for(var name in this.files){if(!this.files.hasOwnProperty(name))continue;var file=this.files[name];var compressionName=file.options.compression||options.compression.toUpperCase();var compression=compressions[compressionName];if(!compression)throw new Error(compressionName+
+" is not a valid compression method !");var compressedObject=generateCompressedObjectFrom.call(this,file,compression);var zipPart=generateZipParts.call(this,name,file,compressedObject,localDirLength);localDirLength+=zipPart.fileRecord.length+compressedObject.compressedSize;centralDirLength+=zipPart.dirRecord.length;zipData.push(zipPart)}var dirEnd="";dirEnd=signature.CENTRAL_DIRECTORY_END+"\x00\x00"+"\x00\x00"+decToHex(zipData.length,2)+decToHex(zipData.length,2)+decToHex(centralDirLength,4)+decToHex(localDirLength,
+4)+decToHex(utfEncodedComment.length,2)+utfEncodedComment;var typeName=options.type.toLowerCase();if(typeName==="uint8array"||typeName==="arraybuffer"||typeName==="blob"||typeName==="nodebuffer")writer=new Uint8ArrayWriter(localDirLength+centralDirLength+dirEnd.length);else writer=new StringWriter(localDirLength+centralDirLength+dirEnd.length);for(i=0;i<zipData.length;i++){writer.append(zipData[i].fileRecord);writer.append(zipData[i].compressedObject.compressedContent)}for(i=0;i<zipData.length;i++)writer.append(zipData[i].dirRecord);
+writer.append(dirEnd);var zip=writer.finalize();switch(options.type.toLowerCase()){case "uint8array":case "arraybuffer":case "nodebuffer":return utils.transformTo(options.type.toLowerCase(),zip);case "blob":return utils.arrayBuffer2Blob(utils.transformTo("arraybuffer",zip));case "base64":return options.base64?base64.encode(zip):zip;default:return zip}},crc32:function(input,crc){return crc32(input,crc)},utf8encode:function(string){return utils.transformTo("string",utf8.utf8encode(string))},utf8decode:function(input){return utf8.utf8decode(input)}};
+module.exports=out},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(_dereq_,module,exports){exports.LOCAL_FILE_HEADER="PK\u0003\u0004";exports.CENTRAL_FILE_HEADER="PK\u0001\u0002";exports.CENTRAL_DIRECTORY_END="PK\u0005\u0006";exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\u0006\u0007";exports.ZIP64_CENTRAL_DIRECTORY_END="PK\u0006\u0006";
+exports.DATA_DESCRIPTOR="PK\u0007\b"},{}],15:[function(_dereq_,module,exports){var DataReader=_dereq_("./dataReader");var utils=_dereq_("./utils");function StringReader(data,optimizedBinaryString){this.data=data;if(!optimizedBinaryString)this.data=utils.string2binary(this.data);this.length=this.data.length;this.index=0}StringReader.prototype=new DataReader;StringReader.prototype.byteAt=function(i){return this.data.charCodeAt(i)};StringReader.prototype.lastIndexOfSignature=function(sig){return this.data.lastIndexOf(sig)};
+StringReader.prototype.readData=function(size){this.checkOffset(size);var result=this.data.slice(this.index,this.index+size);this.index+=size;return result};module.exports=StringReader},{"./dataReader":5,"./utils":21}],16:[function(_dereq_,module,exports){var utils=_dereq_("./utils");var StringWriter=function(){this.data=[]};StringWriter.prototype={append:function(input){input=utils.transformTo("string",input);this.data.push(input)},finalize:function(){return this.data.join("")}};module.exports=StringWriter},
+{"./utils":21}],17:[function(_dereq_,module,exports){(function(Buffer){exports.base64=true;exports.array=true;exports.string=true;exports.arraybuffer=typeof ArrayBuffer!=="undefined"&&typeof Uint8Array!=="undefined";exports.nodebuffer=typeof Buffer!=="undefined";exports.uint8array=typeof Uint8Array!=="undefined";if(typeof ArrayBuffer==="undefined")exports.blob=false;else{var buffer=new ArrayBuffer(0);try{exports.blob=(new Blob([buffer],{type:"application/zip"})).size===0}catch(e){try{var Builder=
+window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder;var builder=new Builder;builder.append(buffer);exports.blob=builder.getBlob("application/zip").size===0}catch(e){exports.blob=false}}}}).call(this,typeof Buffer!=="undefined"?Buffer:undefined)},{}],18:[function(_dereq_,module,exports){var DataReader=_dereq_("./dataReader");function Uint8ArrayReader(data){if(data){this.data=data;this.length=this.data.length;this.index=0}}Uint8ArrayReader.prototype=new DataReader;
+Uint8ArrayReader.prototype.byteAt=function(i){return this.data[i]};Uint8ArrayReader.prototype.lastIndexOfSignature=function(sig){var sig0=sig.charCodeAt(0),sig1=sig.charCodeAt(1),sig2=sig.charCodeAt(2),sig3=sig.charCodeAt(3);for(var i=this.length-4;i>=0;--i)if(this.data[i]===sig0&&this.data[i+1]===sig1&&this.data[i+2]===sig2&&this.data[i+3]===sig3)return i;return-1};Uint8ArrayReader.prototype.readData=function(size){this.checkOffset(size);if(size===0)return new Uint8Array(0);var result=this.data.subarray(this.index,
+this.index+size);this.index+=size;return result};module.exports=Uint8ArrayReader},{"./dataReader":5}],19:[function(_dereq_,module,exports){var utils=_dereq_("./utils");var Uint8ArrayWriter=function(length){this.data=new Uint8Array(length);this.index=0};Uint8ArrayWriter.prototype={append:function(input){if(input.length!==0){input=utils.transformTo("uint8array",input);this.data.set(input,this.index);this.index+=input.length}},finalize:function(){return this.data}};module.exports=Uint8ArrayWriter},{"./utils":21}],
+20:[function(_dereq_,module,exports){var utils=_dereq_("./utils");var support=_dereq_("./support");var nodeBuffer=_dereq_("./nodeBuffer");var _utf8len=new Array(256);for(var i=0;i<256;i++)_utf8len[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;_utf8len[254]=_utf8len[254]=1;var string2buf=function(str){var buf,c,c2,m_pos,i,str_len=str.length,buf_len=0;for(m_pos=0;m_pos<str_len;m_pos++){c=str.charCodeAt(m_pos);if((c&64512)===55296&&m_pos+1<str_len){c2=str.charCodeAt(m_pos+1);if((c2&64512)===56320){c=
+65536+(c-55296<<10)+(c2-56320);m_pos++}}buf_len+=c<128?1:c<2048?2:c<65536?3:4}if(support.uint8array)buf=new Uint8Array(buf_len);else buf=new Array(buf_len);for(i=0,m_pos=0;i<buf_len;m_pos++){c=str.charCodeAt(m_pos);if((c&64512)===55296&&m_pos+1<str_len){c2=str.charCodeAt(m_pos+1);if((c2&64512)===56320){c=65536+(c-55296<<10)+(c2-56320);m_pos++}}if(c<128)buf[i++]=c;else if(c<2048){buf[i++]=192|c>>>6;buf[i++]=128|c&63}else if(c<65536){buf[i++]=224|c>>>12;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}else{buf[i++]=
+240|c>>>18;buf[i++]=128|c>>>12&63;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}}return buf};var utf8border=function(buf,max){var pos;max=max||buf.length;if(max>buf.length)max=buf.length;pos=max-1;while(pos>=0&&(buf[pos]&192)===128)pos--;if(pos<0)return max;if(pos===0)return max;return pos+_utf8len[buf[pos]]>max?pos:max};var buf2string=function(buf){var str,i,out,c,c_len;var len=buf.length;var utf16buf=new Array(len*2);for(out=0,i=0;i<len;){c=buf[i++];if(c<128){utf16buf[out++]=c;continue}c_len=_utf8len[c];
+if(c_len>4){utf16buf[out++]=65533;i+=c_len-1;continue}c&=c_len===2?31:c_len===3?15:7;while(c_len>1&&i<len){c=c<<6|buf[i++]&63;c_len--}if(c_len>1){utf16buf[out++]=65533;continue}if(c<65536)utf16buf[out++]=c;else{c-=65536;utf16buf[out++]=55296|c>>10&1023;utf16buf[out++]=56320|c&1023}}if(utf16buf.length!==out)if(utf16buf.subarray)utf16buf=utf16buf.subarray(0,out);else utf16buf.length=out;return utils.applyFromCharCode(utf16buf)};exports.utf8encode=function utf8encode(str){if(support.nodebuffer)return nodeBuffer(str,
+"utf-8");return string2buf(str)};exports.utf8decode=function utf8decode(buf){if(support.nodebuffer)return utils.transformTo("nodebuffer",buf).toString("utf-8");buf=utils.transformTo(support.uint8array?"uint8array":"array",buf);var result=[],k=0,len=buf.length,chunk=65536;while(k<len){var nextBoundary=utf8border(buf,Math.min(k+chunk,len));if(support.uint8array)result.push(buf2string(buf.subarray(k,nextBoundary)));else result.push(buf2string(buf.slice(k,nextBoundary)));k=nextBoundary}return result.join("")}},
+{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(_dereq_,module,exports){var support=_dereq_("./support");var compressions=_dereq_("./compressions");var nodeBuffer=_dereq_("./nodeBuffer");exports.string2binary=function(str){var result="";for(var i=0;i<str.length;i++)result+=String.fromCharCode(str.charCodeAt(i)&255);return result};exports.arrayBuffer2Blob=function(buffer){exports.checkSupport("blob");try{return new Blob([buffer],{type:"application/zip"})}catch(e){try{var Builder=window.BlobBuilder||
+window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder;var builder=new Builder;builder.append(buffer);return builder.getBlob("application/zip")}catch(e){throw new Error("Bug : can't construct the Blob.");}}};function identity(input){return input}function stringToArrayLike(str,array){for(var i=0;i<str.length;++i)array[i]=str.charCodeAt(i)&255;return array}function arrayLikeToString(array){var chunk=65536;var result=[],len=array.length,type=exports.getTypeOf(array),k=0,canUseApply=true;
+try{switch(type){case "uint8array":String.fromCharCode.apply(null,new Uint8Array(0));break;case "nodebuffer":String.fromCharCode.apply(null,nodeBuffer(0));break}}catch(e){canUseApply=false}if(!canUseApply){var resultStr="";for(var i=0;i<array.length;i++)resultStr+=String.fromCharCode(array[i]);return resultStr}while(k<len&&chunk>1)try{if(type==="array"||type==="nodebuffer")result.push(String.fromCharCode.apply(null,array.slice(k,Math.min(k+chunk,len))));else result.push(String.fromCharCode.apply(null,
+array.subarray(k,Math.min(k+chunk,len))));k+=chunk}catch(e){chunk=Math.floor(chunk/2)}return result.join("")}exports.applyFromCharCode=arrayLikeToString;function arrayLikeToArrayLike(arrayFrom,arrayTo){for(var i=0;i<arrayFrom.length;i++)arrayTo[i]=arrayFrom[i];return arrayTo}var transform={};transform["string"]={"string":identity,"array":function(input){return stringToArrayLike(input,new Array(input.length))},"arraybuffer":function(input){return transform["string"]["uint8array"](input).buffer},"uint8array":function(input){return stringToArrayLike(input,
+new Uint8Array(input.length))},"nodebuffer":function(input){return stringToArrayLike(input,nodeBuffer(input.length))}};transform["array"]={"string":arrayLikeToString,"array":identity,"arraybuffer":function(input){return(new Uint8Array(input)).buffer},"uint8array":function(input){return new Uint8Array(input)},"nodebuffer":function(input){return nodeBuffer(input)}};transform["arraybuffer"]={"string":function(input){return arrayLikeToString(new Uint8Array(input))},"array":function(input){return arrayLikeToArrayLike(new Uint8Array(input),
+new Array(input.byteLength))},"arraybuffer":identity,"uint8array":function(input){return new Uint8Array(input)},"nodebuffer":function(input){return nodeBuffer(new Uint8Array(input))}};transform["uint8array"]={"string":arrayLikeToString,"array":function(input){return arrayLikeToArrayLike(input,new Array(input.length))},"arraybuffer":function(input){return input.buffer},"uint8array":identity,"nodebuffer":function(input){return nodeBuffer(input)}};transform["nodebuffer"]={"string":arrayLikeToString,
+"array":function(input){return arrayLikeToArrayLike(input,new Array(input.length))},"arraybuffer":function(input){return transform["nodebuffer"]["uint8array"](input).buffer},"uint8array":function(input){return arrayLikeToArrayLike(input,new Uint8Array(input.length))},"nodebuffer":identity};exports.transformTo=function(outputType,input){if(!input)input="";if(!outputType)return input;exports.checkSupport(outputType);var inputType=exports.getTypeOf(input);var result=transform[inputType][outputType](input);
+return result};exports.getTypeOf=function(input){if(typeof input==="string")return"string";if(Object.prototype.toString.call(input)==="[object Array]")return"array";if(support.nodebuffer&&nodeBuffer.test(input))return"nodebuffer";if(support.uint8array&&input instanceof Uint8Array)return"uint8array";if(support.arraybuffer&&input instanceof ArrayBuffer)return"arraybuffer"};exports.checkSupport=function(type){var supported=support[type.toLowerCase()];if(!supported)throw new Error(type+" is not supported by this browser");
+};exports.MAX_VALUE_16BITS=65535;exports.MAX_VALUE_32BITS=-1;exports.pretty=function(str){var res="",code,i;for(i=0;i<(str||"").length;i++){code=str.charCodeAt(i);res+="\\x"+(code<16?"0":"")+code.toString(16).toUpperCase()}return res};exports.findCompression=function(compressionMethod){for(var method in compressions){if(!compressions.hasOwnProperty(method))continue;if(compressions[method].magic===compressionMethod)return compressions[method]}return null};exports.isRegExp=function(object){return Object.prototype.toString.call(object)===
+"[object RegExp]"}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(_dereq_,module,exports){var StringReader=_dereq_("./stringReader");var NodeBufferReader=_dereq_("./nodeBufferReader");var Uint8ArrayReader=_dereq_("./uint8ArrayReader");var utils=_dereq_("./utils");var sig=_dereq_("./signature");var ZipEntry=_dereq_("./zipEntry");var support=_dereq_("./support");var jszipProto=_dereq_("./object");function ZipEntries(data,loadOptions){this.files=[];this.loadOptions=loadOptions;
+if(data)this.load(data)}ZipEntries.prototype={checkSignature:function(expectedSignature){var signature=this.reader.readString(4);if(signature!==expectedSignature)throw new Error("Corrupted zip or bug : unexpected signature "+"("+utils.pretty(signature)+", expected "+utils.pretty(expectedSignature)+")");},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2);this.diskWithCentralDirStart=this.reader.readInt(2);this.centralDirRecordsOnThisDisk=this.reader.readInt(2);this.centralDirRecords=
+this.reader.readInt(2);this.centralDirSize=this.reader.readInt(4);this.centralDirOffset=this.reader.readInt(4);this.zipCommentLength=this.reader.readInt(2);this.zipComment=this.reader.readString(this.zipCommentLength);this.zipComment=jszipProto.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8);this.versionMadeBy=this.reader.readString(2);this.versionNeeded=this.reader.readInt(2);this.diskNumber=this.reader.readInt(4);this.diskWithCentralDirStart=
+this.reader.readInt(4);this.centralDirRecordsOnThisDisk=this.reader.readInt(8);this.centralDirRecords=this.reader.readInt(8);this.centralDirSize=this.reader.readInt(8);this.centralDirOffset=this.reader.readInt(8);this.zip64ExtensibleData={};var extraDataSize=this.zip64EndOfCentralSize-44,index=0,extraFieldId,extraFieldLength,extraFieldValue;while(index<extraDataSize){extraFieldId=this.reader.readInt(2);extraFieldLength=this.reader.readInt(4);extraFieldValue=this.reader.readString(extraFieldLength);
+this.zip64ExtensibleData[extraFieldId]={id:extraFieldId,length:extraFieldLength,value:extraFieldValue}}},readBlockZip64EndOfCentralLocator:function(){this.diskWithZip64CentralDirStart=this.reader.readInt(4);this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8);this.disksCount=this.reader.readInt(4);if(this.disksCount>1)throw new Error("Multi-volumes zip are not supported");},readLocalFiles:function(){var i,file;for(i=0;i<this.files.length;i++){file=this.files[i];this.reader.setIndex(file.localHeaderOffset);
+this.checkSignature(sig.LOCAL_FILE_HEADER);file.readLocalPart(this.reader);file.handleUTF8()}},readCentralDir:function(){var file;this.reader.setIndex(this.centralDirOffset);while(this.reader.readString(4)===sig.CENTRAL_FILE_HEADER){file=new ZipEntry({zip64:this.zip64},this.loadOptions);file.readCentralPart(this.reader);this.files.push(file)}},readEndOfCentral:function(){var offset=this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);if(offset===-1)throw new Error("Corrupted zip : can't find end of central directory");
+this.reader.setIndex(offset);this.checkSignature(sig.CENTRAL_DIRECTORY_END);this.readBlockEndOfCentral();if(this.diskNumber===utils.MAX_VALUE_16BITS||this.diskWithCentralDirStart===utils.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===utils.MAX_VALUE_16BITS||this.centralDirRecords===utils.MAX_VALUE_16BITS||this.centralDirSize===utils.MAX_VALUE_32BITS||this.centralDirOffset===utils.MAX_VALUE_32BITS){this.zip64=true;offset=this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);if(offset===
+-1)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");this.reader.setIndex(offset);this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);this.readBlockZip64EndOfCentralLocator();this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);this.readBlockZip64EndOfCentral()}},prepareReader:function(data){var type=utils.getTypeOf(data);if(type==="string"&&!support.uint8array)this.reader=new StringReader(data,
+this.loadOptions.optimizedBinaryString);else if(type==="nodebuffer")this.reader=new NodeBufferReader(data);else this.reader=new Uint8ArrayReader(utils.transformTo("uint8array",data))},load:function(data){this.prepareReader(data);this.readEndOfCentral();this.readCentralDir();this.readLocalFiles()}};module.exports=ZipEntries},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(_dereq_,module,exports){var StringReader=
+_dereq_("./stringReader");var utils=_dereq_("./utils");var CompressedObject=_dereq_("./compressedObject");var jszipProto=_dereq_("./object");function ZipEntry(options,loadOptions){this.options=options;this.loadOptions=loadOptions}ZipEntry.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},prepareCompressedContent:function(reader,from,length){return function(){var previousIndex=reader.index;reader.setIndex(from);var compressedFileData=
+reader.readData(length);reader.setIndex(previousIndex);return compressedFileData}},prepareContent:function(reader,from,length,compression,uncompressedSize){return function(){var compressedFileData=utils.transformTo(compression.uncompressInputType,this.getCompressedContent());var uncompressedFileData=compression.uncompress(compressedFileData);if(uncompressedFileData.length!==uncompressedSize)throw new Error("Bug : uncompressed data size mismatch");return uncompressedFileData}},readLocalPart:function(reader){var compression,
+localExtraFieldsLength;reader.skip(22);this.fileNameLength=reader.readInt(2);localExtraFieldsLength=reader.readInt(2);this.fileName=reader.readString(this.fileNameLength);reader.skip(localExtraFieldsLength);if(this.compressedSize==-1||this.uncompressedSize==-1)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory "+"(compressedSize == -1 || uncompressedSize == -1)");compression=utils.findCompression(this.compressionMethod);if(compression===null)throw new Error("Corrupted zip : compression "+
+utils.pretty(this.compressionMethod)+" unknown (inner file : "+this.fileName+")");this.decompressed=new CompressedObject;this.decompressed.compressedSize=this.compressedSize;this.decompressed.uncompressedSize=this.uncompressedSize;this.decompressed.crc32=this.crc32;this.decompressed.compressionMethod=this.compressionMethod;this.decompressed.getCompressedContent=this.prepareCompressedContent(reader,reader.index,this.compressedSize,compression);this.decompressed.getContent=this.prepareContent(reader,
+reader.index,this.compressedSize,compression,this.uncompressedSize);if(this.loadOptions.checkCRC32){this.decompressed=utils.transformTo("string",this.decompressed.getContent());if(jszipProto.crc32(this.decompressed)!==this.crc32)throw new Error("Corrupted zip : CRC32 mismatch");}},readCentralPart:function(reader){this.versionMadeBy=reader.readString(2);this.versionNeeded=reader.readInt(2);this.bitFlag=reader.readInt(2);this.compressionMethod=reader.readString(2);this.date=reader.readDate();this.crc32=
+reader.readInt(4);this.compressedSize=reader.readInt(4);this.uncompressedSize=reader.readInt(4);this.fileNameLength=reader.readInt(2);this.extraFieldsLength=reader.readInt(2);this.fileCommentLength=reader.readInt(2);this.diskNumberStart=reader.readInt(2);this.internalFileAttributes=reader.readInt(2);this.externalFileAttributes=reader.readInt(4);this.localHeaderOffset=reader.readInt(4);if(this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=reader.readString(this.fileNameLength);
+this.readExtraFields(reader);this.parseZIP64ExtraField(reader);this.fileComment=reader.readString(this.fileCommentLength);this.dir=this.externalFileAttributes&16?true:false},parseZIP64ExtraField:function(reader){if(!this.extraFields[1])return;var extraReader=new StringReader(this.extraFields[1].value);if(this.uncompressedSize===utils.MAX_VALUE_32BITS)this.uncompressedSize=extraReader.readInt(8);if(this.compressedSize===utils.MAX_VALUE_32BITS)this.compressedSize=extraReader.readInt(8);if(this.localHeaderOffset===
+utils.MAX_VALUE_32BITS)this.localHeaderOffset=extraReader.readInt(8);if(this.diskNumberStart===utils.MAX_VALUE_32BITS)this.diskNumberStart=extraReader.readInt(4)},readExtraFields:function(reader){var start=reader.index,extraFieldId,extraFieldLength,extraFieldValue;this.extraFields=this.extraFields||{};while(reader.index<start+this.extraFieldsLength){extraFieldId=reader.readInt(2);extraFieldLength=reader.readInt(2);extraFieldValue=reader.readString(extraFieldLength);this.extraFields[extraFieldId]=
+{id:extraFieldId,length:extraFieldLength,value:extraFieldValue}}},handleUTF8:function(){if(this.useUTF8()){this.fileName=jszipProto.utf8decode(this.fileName);this.fileComment=jszipProto.utf8decode(this.fileComment)}else{var upath=this.findExtraFieldUnicodePath();if(upath!==null)this.fileName=upath;var ucomment=this.findExtraFieldUnicodeComment();if(ucomment!==null)this.fileComment=ucomment}},findExtraFieldUnicodePath:function(){var upathField=this.extraFields[28789];if(upathField){var extraReader=
+new StringReader(upathField.value);if(extraReader.readInt(1)!==1)return null;if(jszipProto.crc32(this.fileName)!==extraReader.readInt(4))return null;return jszipProto.utf8decode(extraReader.readString(upathField.length-5))}return null},findExtraFieldUnicodeComment:function(){var ucommentField=this.extraFields[25461];if(ucommentField){var extraReader=new StringReader(ucommentField.value);if(extraReader.readInt(1)!==1)return null;if(jszipProto.crc32(this.fileComment)!==extraReader.readInt(4))return null;
+return jszipProto.utf8decode(extraReader.readString(ucommentField.length-5))}return null}};module.exports=ZipEntry},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(_dereq_,module,exports){var assign=_dereq_("./lib/utils/common").assign;var deflate=_dereq_("./lib/deflate");var inflate=_dereq_("./lib/inflate");var constants=_dereq_("./lib/zlib/constants");var pako={};assign(pako,deflate,inflate,constants);module.exports=pako},{"./lib/deflate":25,"./lib/inflate":26,
+"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(_dereq_,module,exports){var zlib_deflate=_dereq_("./zlib/deflate.js");var utils=_dereq_("./utils/common");var strings=_dereq_("./utils/strings");var msg=_dereq_("./zlib/messages");var zstream=_dereq_("./zlib/zstream");var Z_NO_FLUSH=0;var Z_FINISH=4;var Z_OK=0;var Z_STREAM_END=1;var Z_DEFAULT_COMPRESSION=-1;var Z_DEFAULT_STRATEGY=0;var Z_DEFLATED=8;var Deflate=function(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;this.msg="";this.ended=false;this.chunks=[];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)};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;if(typeof data==="string")strm.input=strings.string2buf(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);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)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);if(_mode===Z_FINISH){status=zlib_deflate.deflateEnd(this.strm);this.onEnd(status);
+this.ended=true;return status===Z_OK}return true};Deflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Deflate.prototype.onEnd=function(status){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};function deflate(input,options){var deflator=new Deflate(options);deflator.push(input,true);if(deflator.err)throw deflator.msg;return deflator.result}function deflateRaw(input,
+options){options=options||{};options.raw=true;return deflate(input,options)}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":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(_dereq_,module,exports){var zlib_inflate=_dereq_("./zlib/inflate.js");var utils=_dereq_("./utils/common");var strings=
+_dereq_("./utils/strings");var c=_dereq_("./zlib/constants");var msg=_dereq_("./zlib/messages");var zstream=_dereq_("./zlib/zstream");var gzheader=_dereq_("./zlib/gzheader");var Inflate=function(options){this.options=utils.assign({chunkSize:16384,windowBits:0,to:""},options||{});var opt=this.options;if(opt.raw&&opt.windowBits>=0&&opt.windowBits<16){opt.windowBits=-opt.windowBits;if(opt.windowBits===0)opt.windowBits=-15}if(opt.windowBits>=0&&opt.windowBits<16&&!(options&&options.windowBits))opt.windowBits+=
+32;if(opt.windowBits>15&&opt.windowBits<48)if((opt.windowBits&15)===0)opt.windowBits|=15;this.err=0;this.msg="";this.ended=false;this.chunks=[];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.prototype.push=function(data,mode){var strm=this.strm;var chunkSize=this.options.chunkSize;var status,_mode;var next_out_utf8,
+tail,utf8str;if(this.ended)return false;_mode=mode===~~mode?mode:mode===true?c.Z_FINISH:c.Z_NO_FLUSH;if(typeof data==="string")strm.input=strings.binstring2buf(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);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)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);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))}while(strm.avail_in>0&&status!==c.Z_STREAM_END);if(status===
+c.Z_STREAM_END)_mode=c.Z_FINISH;if(_mode===c.Z_FINISH){status=zlib_inflate.inflateEnd(this.strm);this.onEnd(status);this.ended=true;return status===c.Z_OK}return true};Inflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Inflate.prototype.onEnd=function(status){if(status===c.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};function inflate(input,options){var inflator=
+new Inflate(options);inflator.push(input,true);if(inflator.err)throw inflator.msg;return inflator.result}function inflateRaw(input,options){options=options||{};options.raw=true;return inflate(input,options)}exports.Inflate=Inflate;exports.inflate=inflate;exports.inflateRaw=inflateRaw;exports.ungzip=inflate},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(_dereq_,module,exports){var TYPED_OK=
+typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";exports.assign=function(obj){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(source.hasOwnProperty(p))obj[p]=source[p]}return obj};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}for(var i=0;i<len;i++)dest[dest_offs+i]=src[src_offs+i]},flattenChunks:function(chunks){var i,l,len,pos,chunk,result;len=0;for(i=0,l=chunks.length;i<l;i++)len+=chunks[i].length;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]},flattenChunks:function(chunks){return[].concat.apply([],chunks)}};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)},{}],28:[function(_dereq_,module,exports){var utils=
+_dereq_("./common");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}var _utf8len=new utils.Buf8(256);for(var i=0;i<256;i++)_utf8len[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;_utf8len[254]=_utf8len[254]=1;exports.string2buf=function(str){var buf,c,c2,m_pos,i,str_len=str.length,buf_len=0;for(m_pos=0;m_pos<str_len;m_pos++){c=str.charCodeAt(m_pos);
+if((c&64512)===55296&&m_pos+1<str_len){c2=str.charCodeAt(m_pos+1);if((c2&64512)===56320){c=65536+(c-55296<<10)+(c2-56320);m_pos++}}buf_len+=c<128?1:c<2048?2:c<65536?3:4}buf=new utils.Buf8(buf_len);for(i=0,m_pos=0;i<buf_len;m_pos++){c=str.charCodeAt(m_pos);if((c&64512)===55296&&m_pos+1<str_len){c2=str.charCodeAt(m_pos+1);if((c2&64512)===56320){c=65536+(c-55296<<10)+(c2-56320);m_pos++}}if(c<128)buf[i++]=c;else if(c<2048){buf[i++]=192|c>>>6;buf[i++]=128|c&63}else if(c<65536){buf[i++]=224|c>>>12;buf[i++]=
+128|c>>>6&63;buf[i++]=128|c&63}else{buf[i++]=240|c>>>18;buf[i++]=128|c>>>12&63;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}}return buf};function buf2binstring(buf,len){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}exports.buf2binstring=function(buf){return buf2binstring(buf,buf.length)};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};exports.buf2string=function(buf,max){var i,out,c,c_len;var len=max||buf.length;var utf16buf=new Array(len*2);for(out=0,i=0;i<len;){c=buf[i++];if(c<128){utf16buf[out++]=c;continue}c_len=_utf8len[c];if(c_len>4){utf16buf[out++]=65533;i+=c_len-1;continue}c&=c_len===2?31:c_len===3?15:7;while(c_len>1&&i<len){c=c<<6|buf[i++]&63;c_len--}if(c_len>1){utf16buf[out++]=65533;continue}if(c<65536)utf16buf[out++]=
+c;else{c-=65536;utf16buf[out++]=55296|c>>10&1023;utf16buf[out++]=56320|c&1023}}return buf2binstring(utf16buf,out)};exports.utf8border=function(buf,max){var pos;max=max||buf.length;if(max>buf.length)max=buf.length;pos=max-1;while(pos>=0&&(buf[pos]&192)===128)pos--;if(pos<0)return max;if(pos===0)return max;return pos+_utf8len[buf[pos]]>max?pos:max}},{"./common":27}],29:[function(_dereq_,module,exports){function adler32(adler,buf,len,pos){var s1=adler&65535|0,s2=adler>>>16&65535|0,n=0;while(len!==0){n=
+len>2E3?2E3: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},{}],30:[function(_dereq_,module,exports){module.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,
+Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(_dereq_,module,exports){function makeTable(){var c,table=[];for(var n=0;n<256;n++){c=n;for(var k=0;k<8;k++)c=c&1?3988292384^c>>>1:c>>>1;table[n]=c}return table}var crcTable=makeTable();function crc32(crc,buf,len,pos){var t=crcTable,end=pos+len;crc=crc^-1;for(var i=pos;i<end;i++)crc=crc>>>8^t[(crc^buf[i])&255];return crc^-1}module.exports=crc32},{}],32:[function(_dereq_,module,exports){var utils=_dereq_("../utils/common");
+var trees=_dereq_("./trees");var adler32=_dereq_("./adler32");var crc32=_dereq_("./crc32");var msg=_dereq_("./messages");var Z_NO_FLUSH=0;var Z_PARTIAL_FLUSH=1;var Z_FULL_FLUSH=3;var Z_FINISH=4;var Z_BLOCK=5;var Z_OK=0;var Z_STREAM_END=1;var Z_STREAM_ERROR=-2;var Z_DATA_ERROR=-3;var Z_BUF_ERROR=-5;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;var Z_UNKNOWN=2;var Z_DEFLATED=8;var MAX_MEM_LEVEL=9;var MAX_WBITS=15;var DEF_MEM_LEVEL=
+8;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var MIN_MATCH=3;var MAX_MATCH=258;var MIN_LOOKAHEAD=MAX_MATCH+MIN_MATCH+1;var PRESET_DICT=32;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;var BS_BLOCK_DONE=2;var BS_FINISH_STARTED=3;var BS_FINISH_DONE=4;var OS_CODE=3;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}function flush_pending(strm){var s=strm.state;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}function putShortMSB(s,b){s.pending_buf[s.pending++]=b>>>8&255;s.pending_buf[s.pending++]=b&255}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;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}function longest_match(s,cur_match){var chain_length=s.max_chain_length;var scan=s.strstart;var match;var len;var best_len=s.prev_length;var nice_match=s.nice_match;var limit=s.strstart>s.w_size-MIN_LOOKAHEAD?s.strstart-(s.w_size-MIN_LOOKAHEAD):0;var _win=s.window;var wmask=s.w_mask;var prev=s.prev;var strend=s.strstart+MAX_MATCH;var scan_end1=_win[scan+best_len-1];var scan_end=_win[scan+
+best_len];if(s.prev_length>=s.good_match)chain_length>>=2;if(nice_match>s.lookahead)nice_match=s.lookahead;do{match=cur_match;if(_win[match+best_len]!==scan_end||_win[match+best_len-1]!==scan_end1||_win[match]!==_win[scan]||_win[++match]!==_win[scan+1])continue;scan+=2;match++;do;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);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}function fill_window(s){var _w_size=s.w_size;var p,n,m,more,str;do{more=s.window_size-s.lookahead-s.strstart;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;s.block_start-=_w_size;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}while(--n);more+=_w_size}if(s.strm.avail_in===0)break;n=read_buf(s.strm,s.window,s.strstart+s.lookahead,more);s.lookahead+=n;if(s.lookahead+s.insert>=MIN_MATCH){str=s.strstart-s.insert;s.ins_h=s.window[str];s.ins_h=(s.ins_h<<s.hash_shift^s.window[str+1])&s.hash_mask;
+while(s.insert){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}}}while(s.lookahead<MIN_LOOKAHEAD&&s.strm.avail_in!==0)}function deflate_stored(s,flush){var max_block_size=65535;if(max_block_size>s.pending_buf_size-5)max_block_size=s.pending_buf_size-5;for(;;){if(s.lookahead<=1){fill_window(s);if(s.lookahead===0&&flush===Z_NO_FLUSH)return BS_NEED_MORE;if(s.lookahead===
+0)break}s.strstart+=s.lookahead;s.lookahead=0;var max_start=s.block_start+max_block_size;if(s.strstart===0||s.strstart>=max_start){s.lookahead=s.strstart-max_start;s.strstart=max_start;flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}if(s.strstart-s.block_start>=s.w_size-MIN_LOOKAHEAD){flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}}s.insert=0;if(flush===Z_FINISH){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_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}return BS_NEED_MORE}function deflate_fast(s,flush){var hash_head;var bflush;for(;;){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}hash_head=0;if(s.lookahead>=MIN_MATCH){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}if(hash_head!==
+0&&s.strstart-hash_head<=s.w_size-MIN_LOOKAHEAD)s.match_length=longest_match(s,hash_head);if(s.match_length>=MIN_MATCH){bflush=trees._tr_tally(s,s.strstart-s.match_start,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;if(s.match_length<=s.max_lazy_match&&s.lookahead>=MIN_MATCH){s.match_length--;do{s.strstart++;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.match_length!==
+0);s.strstart++}else{s.strstart+=s.match_length;s.match_length=0;s.ins_h=s.window[s.strstart];s.ins_h=(s.ins_h<<s.hash_shift^s.window[s.strstart+1])&s.hash_mask}}else{bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++}if(bflush){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_only(s,true);if(s.strm.avail_out===0)return BS_FINISH_STARTED;return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,
+false);if(s.strm.avail_out===0)return BS_NEED_MORE}return BS_BLOCK_DONE}function deflate_slow(s,flush){var hash_head;var bflush;var max_insert;for(;;){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}hash_head=0;if(s.lookahead>=MIN_MATCH){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}s.prev_length=
+s.match_length;s.prev_match=s.match_start;s.match_length=MIN_MATCH-1;if(hash_head!==0&&s.prev_length<s.max_lazy_match&&s.strstart-hash_head<=s.w_size-MIN_LOOKAHEAD){s.match_length=longest_match(s,hash_head);if(s.match_length<=5&&(s.strategy===Z_FILTERED||s.match_length===MIN_MATCH&&s.strstart-s.match_start>4096))s.match_length=MIN_MATCH-1}if(s.prev_length>=MIN_MATCH&&s.match_length<=s.prev_length){max_insert=s.strstart+s.lookahead-MIN_MATCH;bflush=trees._tr_tally(s,s.strstart-1-s.prev_match,s.prev_length-
+MIN_MATCH);s.lookahead-=s.prev_length-1;s.prev_length-=2;do if(++s.strstart<=max_insert){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_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}}else if(s.match_available){bflush=trees._tr_tally(s,0,s.window[s.strstart-1]);if(bflush)flush_block_only(s,
+false);s.strstart++;s.lookahead--;if(s.strm.avail_out===0)return BS_NEED_MORE}else{s.match_available=1;s.strstart++;s.lookahead--}}if(s.match_available){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_only(s,true);if(s.strm.avail_out===0)return BS_FINISH_STARTED;return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}return BS_BLOCK_DONE}
+function deflate_rle(s,flush){var bflush;var prev;var scan,strend;var _win=s.window;for(;;){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}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;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}}if(s.match_length>=MIN_MATCH){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{bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++}if(bflush){flush_block_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}}s.insert=
+0;if(flush===Z_FINISH){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_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}return BS_BLOCK_DONE}function deflate_huff(s,flush){var bflush;for(;;){if(s.lookahead===0){fill_window(s);if(s.lookahead===0){if(flush===Z_NO_FLUSH)return BS_NEED_MORE;break}}s.match_length=0;bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++;if(bflush){flush_block_only(s,
+false);if(s.strm.avail_out===0)return BS_NEED_MORE}}s.insert=0;if(flush===Z_FINISH){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_only(s,false);if(s.strm.avail_out===0)return BS_NEED_MORE}return BS_BLOCK_DONE}var Config=function(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=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)];function lm_init(s){s.window_size=2*s.w_size;zero(s.head);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;this.status=0;this.pending_buf=null;this.pending_buf_size=0;this.pending_out=0;this.pending=0;this.wrap=0;this.gzhead=null;this.gzindex=0;this.method=Z_DEFLATED;this.last_flush=
+-1;this.w_size=0;this.w_bits=0;this.w_mask=0;this.window=null;this.window_size=0;this.prev=null;this.head=null;this.ins_h=0;this.hash_size=0;this.hash_bits=0;this.hash_mask=0;this.hash_shift=0;this.block_start=0;this.match_length=0;this.prev_match=0;this.match_available=0;this.strstart=0;this.match_start=0;this.lookahead=0;this.prev_length=0;this.max_chain_length=0;this.max_lazy_match=0;this.level=0;this.strategy=0;this.good_match=0;this.nice_match=0;this.dyn_ltree=new 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;this.d_desc=null;this.bl_desc=null;this.bl_count=new utils.Buf16(MAX_BITS+1);this.heap=new utils.Buf16(2*L_CODES+1);zero(this.heap);this.heap_len=0;this.heap_max=0;this.depth=new utils.Buf16(2*L_CODES+1);zero(this.depth);this.l_buf=0;this.lit_bufsize=0;this.last_lit=0;this.d_buf=0;this.opt_len=0;this.static_len=0;this.matches=0;this.insert=0;
+this.bi_buf=0;this.bi_valid=0}function 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;s.status=s.wrap?INIT_STATE:BUSY_STATE;strm.adler=s.wrap===2?0:1;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)return Z_STREAM_ERROR;var wrap=1;if(level===Z_DEFAULT_COMPRESSION)level=6;if(windowBits<0){wrap=0;windowBits=-windowBits}else if(windowBits>15){wrap=2;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;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);s.lit_bufsize=1<<memLevel+6;s.pending_buf_size=s.lit_bufsize*4;s.pending_buf=new utils.Buf8(s.pending_buf_size);
+s.d_buf=s.lit_bufsize>>1;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;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;old_flush=s.last_flush;s.last_flush=flush;if(s.status===INIT_STATE)if(s.wrap===2){strm.adler=0;put_byte(s,31);put_byte(s,139);put_byte(s,8);if(!s.gzhead){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&255);put_byte(s,s.gzhead.time>>8&255);put_byte(s,s.gzhead.time>>16&255);put_byte(s,s.gzhead.time>>24&255);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,s.gzhead.os&255);if(s.gzhead.extra&&s.gzhead.extra.length){put_byte(s,s.gzhead.extra.length&255);put_byte(s,s.gzhead.extra.length>>8&255)}if(s.gzhead.hcrc)strm.adler=crc32(strm.adler,s.pending_buf,s.pending,0);s.gzindex=0;s.status=EXTRA_STATE}}else{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);if(s.strstart!==0){putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}strm.adler=1}if(s.status===EXTRA_STATE)if(s.gzhead.extra){beg=s.pending;while(s.gzindex<(s.gzhead.extra.length&65535)){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]&255);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){beg=s.pending;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}}if(s.gzindex<s.gzhead.name.length)val=s.gzhead.name.charCodeAt(s.gzindex++)&255;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){beg=
+s.pending;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}}if(s.gzindex<s.gzhead.comment.length)val=s.gzhead.comment.charCodeAt(s.gzindex++)&255;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&255);put_byte(s,strm.adler>>8&255);strm.adler=0;s.status=BUSY_STATE}}else s.status=BUSY_STATE;if(s.pending!==0){flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}else if(strm.avail_in===0&&rank(flush)<=rank(old_flush)&&flush!==Z_FINISH)return err(strm,Z_BUF_ERROR);if(s.status===FINISH_STATE&&strm.avail_in!==0)return err(strm,Z_BUF_ERROR);
+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;return Z_OK}if(bstate===BS_BLOCK_DONE){if(flush===Z_PARTIAL_FLUSH)trees._tr_align(s);else if(flush!==Z_BLOCK){trees._tr_stored_block(s,
+0,0,false);if(flush===Z_FULL_FLUSH){zero(s.head);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;return Z_OK}}}if(flush!==Z_FINISH)return Z_OK;if(s.wrap<=0)return Z_STREAM_END;if(s.wrap===2){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);put_byte(s,strm.adler>>16&255);put_byte(s,strm.adler>>24&255);put_byte(s,strm.total_in&255);put_byte(s,strm.total_in>>8&255);put_byte(s,strm.total_in>>16&255);put_byte(s,strm.total_in>>
+24&255)}else{putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}flush_pending(strm);if(s.wrap>0)s.wrap=-s.wrap;return s.pending!==0?Z_OK:Z_STREAM_END}function deflateEnd(strm){var status;if(!strm||!strm.state)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}exports.deflateInit=deflateInit;exports.deflateInit2=deflateInit2;exports.deflateReset=deflateReset;exports.deflateResetKeep=deflateResetKeep;exports.deflateSetHeader=deflateSetHeader;exports.deflate=deflate;exports.deflateEnd=deflateEnd;exports.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(_dereq_,module,exports){function GZheader(){this.text=0;this.time=0;this.xflags=0;this.os=0;
+this.extra=null;this.extra_len=0;this.name="";this.comment="";this.hcrc=0;this.done=false}module.exports=GZheader},{}],34:[function(_dereq_,module,exports){var BAD=30;var TYPE=12;module.exports=function inflate_fast(strm,start){var state;var _in;var last;var _out;var beg;var end;var dmax;var wsize;var whave;var wnext;var window;var hold;var bits;var lcode;var dcode;var lmask;var dmask;var here;var op;var len;var dist;var from;var from_source;var input,output;state=strm.state;_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);dmax=state.dmax;wsize=state.wsize;whave=state.whave;wnext=state.wnext;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;top:do{if(bits<15){hold+=input[_in++]<<bits;bits+=8;hold+=input[_in++]<<bits;bits+=8}here=lcode[hold&lmask];dolen:for(;;){op=here>>>24;hold>>>=op;
+bits-=op;op=here>>>16&255;if(op===0)output[_out++]=here&65535;else if(op&16){len=here&65535;op&=15;if(op){if(bits<op){hold+=input[_in++]<<bits;bits+=8}len+=hold&(1<<op)-1;hold>>>=op;bits-=op}if(bits<15){hold+=input[_in++]<<bits;bits+=8;hold+=input[_in++]<<bits;bits+=8}here=dcode[hold&dmask];dodist:for(;;){op=here>>>24;hold>>>=op;bits-=op;op=here>>>16&255;if(op&16){dist=here&65535;op&=15;if(bits<op){hold+=input[_in++]<<bits;bits+=8;if(bits<op){hold+=input[_in++]<<bits;bits+=8}}dist+=hold&(1<<op)-1;
+if(dist>dmax){strm.msg="invalid distance too far back";state.mode=BAD;break top}hold>>>=op;bits-=op;op=_out-beg;if(dist>op){op=dist-op;if(op>whave)if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break top}from=0;from_source=window;if(wnext===0){from+=wsize-op;if(op<len){len-=op;do output[_out++]=window[from++];while(--op);from=_out-dist;from_source=output}}else if(wnext<op){from+=wsize+wnext-op;op-=wnext;if(op<len){len-=op;do output[_out++]=window[from++];while(--op);from=0;
+if(wnext<len){op=wnext;len-=op;do output[_out++]=window[from++];while(--op);from=_out-dist;from_source=output}}}else{from+=wnext-op;if(op<len){len-=op;do output[_out++]=window[from++];while(--op);from=_out-dist;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;do{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){here=dcode[(here&65535)+(hold&(1<<op)-1)];continue dodist}else{strm.msg="invalid distance code";state.mode=BAD;break top}break}}else if((op&64)===0){here=lcode[(here&65535)+(hold&(1<<op)-1)];continue dolen}else if(op&32){state.mode=TYPE;break top}else{strm.msg="invalid literal/length code";state.mode=BAD;break top}break}}while(_in<last&&
+_out<end);len=bits>>3;_in-=len;bits-=len<<3;hold&=(1<<bits)-1;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}},{}],35:[function(_dereq_,module,exports){var utils=_dereq_("../utils/common");var adler32=_dereq_("./adler32");var crc32=_dereq_("./crc32");var inflate_fast=_dereq_("./inffast");var inflate_table=_dereq_("./inftrees");var CODES=0;var LENS=1;var DISTS=2;var Z_FINISH=
+4;var Z_BLOCK=5;var Z_TREES=6;var Z_OK=0;var Z_STREAM_END=1;var Z_NEED_DICT=2;var Z_STREAM_ERROR=-2;var Z_DATA_ERROR=-3;var Z_MEM_ERROR=-4;var Z_BUF_ERROR=-5;var Z_DEFLATED=8;var HEAD=1;var FLAGS=2;var TIME=3;var OS=4;var EXLEN=5;var EXTRA=6;var NAME=7;var COMMENT=8;var HCRC=9;var DICTID=10;var DICT=11;var TYPE=12;var TYPEDO=13;var STORED=14;var COPY_=15;var COPY=16;var TABLE=17;var LENLENS=18;var CODELENS=19;var LEN_=20;var LEN=21;var LENEXT=22;var DIST=23;var DISTEXT=24;var MATCH=25;var LIT=26;
+var CHECK=27;var LENGTH=28;var DONE=29;var BAD=30;var MEM=31;var SYNC=32;var ENOUGH_LENS=852;var ENOUGH_DISTS=592;var MAX_WBITS=15;var DEF_WBITS=MAX_WBITS;function ZSWAP32(q){return(q>>>24&255)+(q>>>8&65280)+((q&65280)<<8)+((q&255)<<24)}function InflateState(){this.mode=0;this.last=false;this.wrap=0;this.havedict=false;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset=
+0;this.extra=0;this.lencode=null;this.distcode=null;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=null;this.lens=new utils.Buf16(320);this.work=new utils.Buf16(288);this.lendyn=null;this.distdyn=null;this.sane=0;this.back=0;this.was=0}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="";if(state.wrap)strm.adler=state.wrap&1;state.mode=HEAD;state.last=
+0;state.havedict=0;state.dmax=32768;state.head=null;state.hold=0;state.bits=0;state.lencode=state.lendyn=new utils.Buf32(ENOUGH_LENS);state.distcode=state.distdyn=new utils.Buf32(ENOUGH_DISTS);state.sane=1;state.back=-1;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;if(!strm||!strm.state)return Z_STREAM_ERROR;
+state=strm.state;if(windowBits<0){wrap=0;windowBits=-windowBits}else{wrap=(windowBits>>4)+1;if(windowBits<48)windowBits&=15}if(windowBits&&(windowBits<8||windowBits>15))return Z_STREAM_ERROR;if(state.window!==null&&state.wbits!==windowBits)state.window=null;state.wrap=wrap;state.wbits=windowBits;return inflateReset(strm)}function inflateInit2(strm,windowBits){var ret;var state;if(!strm)return Z_STREAM_ERROR;state=new InflateState;strm.state=state;state.window=null;ret=inflateReset2(strm,windowBits);
+if(ret!==Z_OK)strm.state=null;return ret}function inflateInit(strm){return inflateInit2(strm,DEF_WBITS)}var virgin=true;var lenfix,distfix;function fixedtables(state){if(virgin){var sym;lenfix=new utils.Buf32(512);distfix=new utils.Buf32(32);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});sym=0;while(sym<32)state.lens[sym++]=5;inflate_table(DISTS,
+state.lens,0,32,distfix,0,state.work,{bits:5});virgin=false}state.lencode=lenfix;state.lenbits=9;state.distcode=distfix;state.distbits=5}function updatewindow(strm,src,end,copy){var dist;var state=strm.state;if(state.window===null){state.wsize=1<<state.wbits;state.wnext=0;state.whave=0;state.window=new utils.Buf8(state.wsize)}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;utils.arraySet(state.window,src,end-copy,dist,state.wnext);copy-=dist;if(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;var next;var put;var have,left;var hold;var bits;var _in,_out;var copy;var from;var from_source;var here=0;var here_bits,here_op,here_val;var last_bits,
+last_op,last_val;var len;var ret;var hbuf=new utils.Buf8(4);var opts;var n;var order=[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;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:for(;;)switch(state.mode){case HEAD:if(state.wrap===
+0){state.mode=TYPEDO;break}while(bits<16){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}if(state.wrap&2&&hold===35615){state.check=0;hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0);hold=0;bits=0;state.mode=FLAGS;break}state.flags=0;if(state.head)state.head.done=false;if(!(state.wrap&1)||(((hold&255)<<8)+(hold>>8))%31){strm.msg="incorrect header check";state.mode=BAD;break}if((hold&15)!==Z_DEFLATED){strm.msg="unknown compression method";state.mode=
+BAD;break}hold>>>=4;bits-=4;len=(hold&15)+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;strm.adler=state.check=1;state.mode=hold&512?DICTID:TYPE;hold=0;bits=0;break;case FLAGS:while(bits<16){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}state.flags=hold;if((state.flags&255)!==Z_DEFLATED){strm.msg="unknown compression method";state.mode=BAD;break}if(state.flags&57344){strm.msg="unknown header flags set";
+state.mode=BAD;break}if(state.head)state.head.text=hold>>8&1;if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=TIME;case TIME: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&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;hbuf[2]=hold>>>16&255;hbuf[3]=hold>>>24&255;state.check=crc32(state.check,hbuf,4,0)}hold=0;bits=0;state.mode=OS;case OS:while(bits<
+16){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}if(state.head){state.head.xflags=hold&255;state.head.os=hold>>8}if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=EXLEN;case EXLEN:if(state.flags&1024){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&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=
+crc32(state.check,hbuf,2,0)}hold=0;bits=0}else if(state.head)state.head.extra=null;state.mode=EXTRA;case EXTRA:if(state.flags&1024){copy=state.length;if(copy>have)copy=have;if(copy){if(state.head){len=state.head.extra_len-state.length;if(!state.head.extra)state.head.extra=new Array(state.head.extra_len);utils.arraySet(state.head.extra,input,next,copy,len)}if(state.flags&512)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;case NAME:if(state.flags&2048){if(have===0)break inf_leave;copy=0;do{len=input[next+copy++];if(state.head&&len&&state.length<65536)state.head.name+=String.fromCharCode(len)}while(len&&copy<have);if(state.flags&512)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;case COMMENT:if(state.flags&4096){if(have===0)break inf_leave;copy=0;do{len=input[next+copy++];if(state.head&&
+len&&state.length<65536)state.head.comment+=String.fromCharCode(len)}while(len&&copy<have);if(state.flags&512)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;case HCRC:if(state.flags&512){while(bits<16){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}if(hold!==(state.check&65535)){strm.msg="header crc mismatch";state.mode=BAD;break}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:while(bits<32){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}strm.adler=state.check=ZSWAP32(hold);hold=0;bits=0;state.mode=DICT;case DICT:if(state.havedict===0){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;state.mode=TYPE;case TYPE:if(flush===Z_BLOCK||flush===Z_TREES)break inf_leave;
+case TYPEDO:if(state.last){hold>>>=bits&7;bits-=bits&7;state.mode=CHECK;break}while(bits<3){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}state.last=hold&1;hold>>>=1;bits-=1;switch(hold&3){case 0:state.mode=STORED;break;case 1:fixedtables(state);state.mode=LEN_;if(flush===Z_TREES){hold>>>=2;bits-=2;break inf_leave}break;case 2:state.mode=TABLE;break;case 3:strm.msg="invalid block type";state.mode=BAD}hold>>>=2;bits-=2;break;case STORED:hold>>>=bits&7;bits-=bits&7;while(bits<
+32){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}if((hold&65535)!==(hold>>>16^65535)){strm.msg="invalid stored block lengths";state.mode=BAD;break}state.length=hold&65535;hold=0;bits=0;state.mode=COPY_;if(flush===Z_TREES)break inf_leave;case COPY_:state.mode=COPY;case COPY:copy=state.length;if(copy){if(copy>have)copy=have;if(copy>left)copy=left;if(copy===0)break inf_leave;utils.arraySet(output,input,next,copy,put);have-=copy;next+=copy;left-=copy;put+=copy;state.length-=copy;
+break}state.mode=TYPE;break;case TABLE:while(bits<14){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}state.nlen=(hold&31)+257;hold>>>=5;bits-=5;state.ndist=(hold&31)+1;hold>>>=5;bits-=5;state.ncode=(hold&15)+4;hold>>>=4;bits-=4;if(state.nlen>286||state.ndist>30){strm.msg="too many length or distance symbols";state.mode=BAD;break}state.have=0;state.mode=LENLENS;case LENLENS:while(state.have<state.ncode){while(bits<3){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;
+bits+=8}state.lens[order[state.have++]]=hold&7;hold>>>=3;bits-=3}while(state.have<19)state.lens[order[state.have++]]=0;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}state.have=0;state.mode=CODELENS;case CODELENS:while(state.have<state.nlen+state.ndist){for(;;){here=state.lencode[hold&(1<<state.lenbits)-1];here_bits=
+here>>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits)break;if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}if(here_val<16){hold>>>=here_bits;bits-=here_bits;state.lens[state.have++]=here_val}else{if(here_val===16){n=here_bits+2;while(bits<n){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}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&
+3);hold>>>=2;bits-=2}else if(here_val===17){n=here_bits+3;while(bits<n){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}hold>>>=here_bits;bits-=here_bits;len=0;copy=3+(hold&7);hold>>>=3;bits-=3}else{n=here_bits+7;while(bits<n){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}hold>>>=here_bits;bits-=here_bits;len=0;copy=11+(hold&127);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}}if(state.mode===BAD)break;if(state.lens[256]===0){strm.msg="invalid code -- missing end-of-block";state.mode=BAD;break}state.lenbits=9;opts={bits:state.lenbits};ret=inflate_table(LENS,state.lens,0,state.nlen,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid literal/lengths set";state.mode=BAD;break}state.distbits=6;state.distcode=state.distdyn;opts={bits:state.distbits};ret=inflate_table(DISTS,state.lens,state.nlen,state.ndist,state.distcode,0,state.work,opts);
+state.distbits=opts.bits;if(ret){strm.msg="invalid distances set";state.mode=BAD;break}state.mode=LEN_;if(flush===Z_TREES)break inf_leave;case LEN_:state.mode=LEN;case LEN:if(have>=6&&left>=258){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);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];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits)break;if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}if(here_op&&(here_op&240)===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)>>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits)break;if(have===
+0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}hold>>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;state.length=here_val;if(here_op===0){state.mode=LIT;break}if(here_op&32){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;case LENEXT:if(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;hold>>>=state.extra;bits-=state.extra;state.back+=state.extra}state.was=state.length;state.mode=DIST;case DIST:for(;;){here=state.distcode[hold&(1<<state.distbits)-1];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits)break;if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}if((here_op&240)===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)>>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits)break;if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}hold>>>=last_bits;bits-=last_bits;state.back+=last_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;case DISTEXT:if(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;hold>>>=state.extra;bits-=state.extra;state.back+=state.extra}if(state.offset>state.dmax){strm.msg="invalid distance too far back";state.mode=BAD;break}state.mode=MATCH;case MATCH:if(left===0)break inf_leave;copy=_out-left;if(state.offset>copy){copy=state.offset-copy;if(copy>state.whave)if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break}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{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){while(bits<32){if(have===0)break inf_leave;have--;hold|=input[next++]<<
+bits;bits+=8}_out-=left;strm.total_out+=_out;state.total+=_out;if(_out)strm.adler=state.check=state.flags?crc32(state.check,output,_out,put-_out):adler32(state.check,output,_out,put-_out);_out=left;if((state.flags?hold:ZSWAP32(hold))!==state.check){strm.msg="incorrect data check";state.mode=BAD;break}hold=0;bits=0}state.mode=LENGTH;case LENGTH:if(state.wrap&&state.flags){while(bits<32){if(have===0)break inf_leave;have--;hold+=input[next++]<<bits;bits+=8}if(hold!==(state.total&4294967295)){strm.msg=
+"incorrect length check";state.mode=BAD;break}hold=0;bits=0}state.mode=DONE;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:default:return Z_STREAM_ERROR}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=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)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;if(!strm||!strm.state)return Z_STREAM_ERROR;state=strm.state;if((state.wrap&2)===0)return Z_STREAM_ERROR;state.head=head;head.done=false;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.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(_dereq_,module,exports){var utils=_dereq_("../utils/common");var MAXBITS=15;var ENOUGH_LENS=852;var ENOUGH_DISTS=592;var CODES=0;var LENS=1;var DISTS=2;var lbase=[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=[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=[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=[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;var len=0;var sym=0;var min=0,max=0;var root=0;var curr=0;var drop=
+0;var left=0;var used=0;var huff=0;var incr;var fill;var low;var mask;var next;var base=null;var base_index=0;var end;var count=new utils.Buf16(MAXBITS+1);var offs=new utils.Buf16(MAXBITS+1);var extra=null;var extra_index=0;var here_bits,here_op,here_val;for(len=0;len<=MAXBITS;len++)count[len]=0;for(sym=0;sym<codes;sym++)count[lens[lens_index+sym]]++;root=bits;for(max=MAXBITS;max>=1;max--)if(count[max]!==0)break;if(root>max)root=max;if(max===0){table[table_index++]=1<<24|64<<16|0;table[table_index++]=
+1<<24|64<<16|0;opts.bits=1;return 0}for(min=1;min<max;min++)if(count[min]!==0)break;if(root<min)root=min;left=1;for(len=1;len<=MAXBITS;len++){left<<=1;left-=count[len];if(left<0)return-1}if(left>0&&(type===CODES||max!==1))return-1;offs[1]=0;for(len=1;len<MAXBITS;len++)offs[len+1]=offs[len]+count[len];for(sym=0;sym<codes;sym++)if(lens[lens_index+sym]!==0)work[offs[lens[lens_index+sym]]++]=sym;if(type===CODES){base=extra=work;end=19}else if(type===LENS){base=lbase;base_index-=257;extra=lext;extra_index-=
+257;end=256}else{base=dbase;extra=dext;end=-1}huff=0;sym=0;len=min;next=table_index;curr=root;drop=0;low=-1;used=1<<root;mask=used-1;if(type===LENS&&used>ENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS)return 1;var i=0;for(;;){i++;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;here_val=0}incr=1<<len-drop;fill=1<<curr;min=fill;do{fill-=incr;table[next+(huff>>drop)+fill]=
+here_bits<<24|here_op<<16|here_val|0}while(fill!==0);incr=1<<len-1;while(huff&incr)incr>>=1;if(incr!==0){huff&=incr-1;huff+=incr}else huff=0;sym++;if(--count[len]===0){if(len===max)break;len=lens[lens_index+work[sym]]}if(len>root&&(huff&mask)!==low){if(drop===0)drop=root;next+=min;curr=len-drop;left=1<<curr;while(curr+drop<max){left-=count[curr+drop];if(left<=0)break;curr++;left<<=1}used+=1<<curr;if(type===LENS&&used>ENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS)return 1;low=huff&mask;table[low]=root<<
+24|curr<<16|next-table_index|0}}if(huff!==0)table[next+huff]=len-drop<<24|64<<16|0;opts.bits=root;return 0}},{"../utils/common":27}],37:[function(_dereq_,module,exports){module.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(_dereq_,module,exports){var utils=_dereq_("../utils/common");var Z_FIXED=4;var Z_BINARY=0;var Z_TEXT=1;var Z_UNKNOWN=2;function zero(buf){var len=
+buf.length;while(--len>=0)buf[len]=0}var STORED_BLOCK=0;var STATIC_TREES=1;var DYN_TREES=2;var MIN_MATCH=3;var MAX_MATCH=258;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var Buf_size=16;var MAX_BL_BITS=7;var END_BLOCK=256;var REP_3_6=16;var REPZ_3_10=17;var REPZ_11_138=18;var extra_lbits=[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=[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=[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];var DIST_CODE_LEN=512;var static_ltree=new Array((L_CODES+2)*2);zero(static_ltree);var static_dtree=new Array(D_CODES*2);zero(static_dtree);var _dist_code=new Array(DIST_CODE_LEN);zero(_dist_code);var _length_code=new Array(MAX_MATCH-MIN_MATCH+1);zero(_length_code);var base_length=new Array(LENGTH_CODES);zero(base_length);var base_dist=new Array(D_CODES);
+zero(base_dist);var StaticTreeDesc=function(static_tree,extra_bits,extra_base,elems,max_length){this.static_tree=static_tree;this.extra_bits=extra_bits;this.extra_base=extra_base;this.elems=elems;this.max_length=max_length;this.has_stree=static_tree&&static_tree.length};var static_l_desc;var static_d_desc;var static_bl_desc;var TreeDesc=function(dyn_tree,stat_desc){this.dyn_tree=dyn_tree;this.max_code=0;this.stat_desc=stat_desc};function d_code(dist){return dist<256?_dist_code[dist]:_dist_code[256+
+(dist>>>7)]}function put_short(s,w){s.pending_buf[s.pending++]=w&255;s.pending_buf[s.pending++]=w>>>8&255}function send_bits(s,value,length){if(s.bi_valid>Buf_size-length){s.bi_buf|=value<<s.bi_valid&65535;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&65535;s.bi_valid+=length}}function send_code(s,c,tree){send_bits(s,tree[c*2],tree[c*2+1])}function bi_reverse(code,len){var res=0;do{res|=code&1;code>>>=1;res<<=1}while(--len>0);
+return res>>>1}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&255;s.bi_buf>>=8;s.bi_valid-=8}}function gen_bitlen(s,desc){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;var n,m;var bits;var xbits;var f;var overflow=
+0;for(bits=0;bits<=MAX_BITS;bits++)s.bl_count[bits]=0;tree[s.heap[s.heap_max]*2+1]=0;for(h=s.heap_max+1;h<HEAP_SIZE;h++){n=s.heap[h];bits=tree[tree[n*2+1]*2+1]+1;if(bits>max_length){bits=max_length;overflow++}tree[n*2+1]=bits;if(n>max_code)continue;s.bl_count[bits]++;xbits=0;if(n>=base)xbits=extra[n-base];f=tree[n*2];s.opt_len+=f*(bits+xbits);if(has_stree)s.static_len+=f*(stree[n*2+1]+xbits)}if(overflow===0)return;do{bits=max_length-1;while(s.bl_count[bits]===0)bits--;s.bl_count[bits]--;s.bl_count[bits+
+1]+=2;s.bl_count[max_length]--;overflow-=2}while(overflow>0);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]!==bits){s.opt_len+=(bits-tree[m*2+1])*tree[m*2];tree[m*2+1]=bits}n--}}}function gen_codes(tree,max_code,bl_count){var next_code=new Array(MAX_BITS+1);var code=0;var bits;var n;for(bits=1;bits<=MAX_BITS;bits++)next_code[bits]=code=code+bl_count[bits-1]<<1;for(n=0;n<=max_code;n++){var len=tree[n*2+1];if(len===0)continue;
+tree[n*2]=bi_reverse(next_code[len]++,len)}}function tr_static_init(){var n;var bits;var length;var code;var dist;var bl_count=new Array(MAX_BITS+1);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}_length_code[length-1]=code;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}dist>>=7;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}for(bits=0;bits<=MAX_BITS;bits++)bl_count[bits]=0;n=0;while(n<=143){static_ltree[n*2+1]=8;n++;bl_count[8]++}while(n<=255){static_ltree[n*2+1]=9;n++;bl_count[9]++}while(n<=279){static_ltree[n*2+1]=7;n++;bl_count[7]++}while(n<=287){static_ltree[n*2+1]=8;n++;bl_count[8]++}gen_codes(static_ltree,L_CODES+1,bl_count);for(n=0;n<D_CODES;n++){static_dtree[n*2+1]=5;static_dtree[n*2]=bi_reverse(n,5)}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)}function init_block(s){var n;for(n=0;n<L_CODES;n++)s.dyn_ltree[n*2]=0;for(n=0;n<D_CODES;n++)s.dyn_dtree[n*2]=0;for(n=0;n<BL_CODES;n++)s.bl_tree[n*2]=0;s.dyn_ltree[END_BLOCK*2]=1;s.opt_len=s.static_len=0;s.last_lit=s.matches=0}function bi_windup(s){if(s.bi_valid>8)put_short(s,s.bi_buf);else if(s.bi_valid>0)s.pending_buf[s.pending++]=
+s.bi_buf;s.bi_buf=0;s.bi_valid=0}function copy_block(s,buf,len,header){bi_windup(s);if(header){put_short(s,len);put_short(s,~len)}utils.arraySet(s.pending_buf,s.window,buf,len,s.pending);s.pending+=len}function smaller(tree,n,m,depth){var _n2=n*2;var _m2=m*2;return tree[_n2]<tree[_m2]||tree[_n2]===tree[_m2]&&depth[n]<=depth[m]}function pqdownheap(s,tree,k){var v=s.heap[k];var j=k<<1;while(j<=s.heap_len){if(j<s.heap_len&&smaller(tree,s.heap[j+1],s.heap[j],s.depth))j++;if(smaller(tree,v,s.heap[j],s.depth))break;
+s.heap[k]=s.heap[j];k=j;j<<=1}s.heap[k]=v}function compress_block(s,ltree,dtree){var dist;var lc;var lx=0;var code;var extra;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);else{code=_length_code[lc];send_code(s,code+LITERALS+1,ltree);extra=extra_lbits[code];if(extra!==0){lc-=base_length[code];send_bits(s,lc,extra)}dist--;code=d_code(dist);send_code(s,code,dtree);extra=extra_dbits[code];if(extra!==
+0){dist-=base_dist[code];send_bits(s,dist,extra)}}}while(lx<s.last_lit)}send_code(s,END_BLOCK,ltree)}function build_tree(s,desc){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;var max_code=-1;var node;s.heap_len=0;s.heap_max=HEAP_SIZE;for(n=0;n<elems;n++)if(tree[n*2]!==0){s.heap[++s.heap_len]=max_code=n;s.depth[n]=0}else tree[n*2+1]=0;while(s.heap_len<2){node=s.heap[++s.heap_len]=max_code<2?++max_code:0;tree[node*
+2]=1;s.depth[node]=0;s.opt_len--;if(has_stree)s.static_len-=stree[node*2+1]}desc.max_code=max_code;for(n=s.heap_len>>1;n>=1;n--)pqdownheap(s,tree,n);node=elems;do{n=s.heap[1];s.heap[1]=s.heap[s.heap_len--];pqdownheap(s,tree,1);m=s.heap[1];s.heap[--s.heap_max]=n;s.heap[--s.heap_max]=m;tree[node*2]=tree[n*2]+tree[m*2];s.depth[node]=(s.depth[n]>=s.depth[m]?s.depth[n]:s.depth[m])+1;tree[n*2+1]=tree[m*2+1]=node;s.heap[1]=node++;pqdownheap(s,tree,1)}while(s.heap_len>=2);s.heap[--s.heap_max]=s.heap[1];gen_bitlen(s,
+desc);gen_codes(tree,max_code,s.bl_count)}function scan_tree(s,tree,max_code){var n;var prevlen=-1;var curlen;var nextlen=tree[0*2+1];var count=0;var max_count=7;var min_count=4;if(nextlen===0){max_count=138;min_count=3}tree[(max_code+1)*2+1]=65535;for(n=0;n<=max_code;n++){curlen=nextlen;nextlen=tree[(n+1)*2+1];if(++count<max_count&&curlen===nextlen)continue;else if(count<min_count)s.bl_tree[curlen*2]+=count;else if(curlen!==0){if(curlen!==prevlen)s.bl_tree[curlen*2]++;s.bl_tree[REP_3_6*2]++}else if(count<=
+10)s.bl_tree[REPZ_3_10*2]++;else s.bl_tree[REPZ_11_138*2]++;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}}}function send_tree(s,tree,max_code){var n;var prevlen=-1;var curlen;var nextlen=tree[0*2+1];var count=0;var max_count=7;var min_count=4;if(nextlen===0){max_count=138;min_count=3}for(n=0;n<=max_code;n++){curlen=nextlen;nextlen=tree[(n+1)*2+1];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--}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}}}function build_bl_tree(s){var max_blindex;
+scan_tree(s,s.dyn_ltree,s.l_desc.max_code);scan_tree(s,s.dyn_dtree,s.d_desc.max_code);build_tree(s,s.bl_desc);for(max_blindex=BL_CODES-1;max_blindex>=3;max_blindex--)if(s.bl_tree[bl_order[max_blindex]*2+1]!==0)break;s.opt_len+=3*(max_blindex+1)+5+5+4;return max_blindex}function send_all_trees(s,lcodes,dcodes,blcodes){var rank;send_bits(s,lcodes-257,5);send_bits(s,dcodes-1,5);send_bits(s,blcodes-4,4);for(rank=0;rank<blcodes;rank++)send_bits(s,s.bl_tree[bl_order[rank]*2+1],3);send_tree(s,s.dyn_ltree,
+lcodes-1);send_tree(s,s.dyn_dtree,dcodes-1)}function detect_data_type(s){var black_mask=4093624447;var n;for(n=0;n<=31;n++,black_mask>>>=1)if(black_mask&1&&s.dyn_ltree[n*2]!==0)return Z_BINARY;if(s.dyn_ltree[9*2]!==0||s.dyn_ltree[10*2]!==0||s.dyn_ltree[13*2]!==0)return Z_TEXT;for(n=32;n<LITERALS;n++)if(s.dyn_ltree[n*2]!==0)return Z_TEXT;return Z_BINARY}var static_init_done=false;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;init_block(s)}function _tr_stored_block(s,buf,stored_len,last){send_bits(s,(STORED_BLOCK<<1)+(last?1:0),3);copy_block(s,buf,stored_len,true)}function _tr_align(s){send_bits(s,STATIC_TREES<<1,3);send_code(s,END_BLOCK,static_ltree);bi_flush(s)}function _tr_flush_block(s,buf,stored_len,last){var opt_lenb,static_lenb;var max_blindex=0;if(s.level>0){if(s.strm.data_type===Z_UNKNOWN)s.strm.data_type=
+detect_data_type(s);build_tree(s,s.l_desc);build_tree(s,s.d_desc);max_blindex=build_bl_tree(s);opt_lenb=s.opt_len+3+7>>>3;static_lenb=s.static_len+3+7>>>3;if(static_lenb<=opt_lenb)opt_lenb=static_lenb}else opt_lenb=static_lenb=stored_len+5;if(stored_len+4<=opt_lenb&&buf!==-1)_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)}init_block(s);if(last)bi_windup(s)}function _tr_tally(s,dist,lc){s.pending_buf[s.d_buf+s.last_lit*2]=dist>>>8&255;s.pending_buf[s.d_buf+s.last_lit*2+1]=dist&255;s.pending_buf[s.l_buf+s.last_lit]=lc&255;s.last_lit++;if(dist===0)s.dyn_ltree[lc*2]++;else{s.matches++;dist--;s.dyn_ltree[(_length_code[lc]+LITERALS+1)*2]++;s.dyn_dtree[d_code(dist)*2]++}return s.last_lit===s.lit_bufsize-1}
+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":27}],39:[function(_dereq_,module,exports){function ZStream(){this.input=null;this.next_in=0;this.avail_in=0;this.total_in=0;this.output=null;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}module.exports=ZStream},{}]},{},[9])(9)});
diff --git a/source/author.html.haml b/source/author.html.haml
index 668420b..51d4c4b 100644
--- a/source/author.html.haml
+++ b/source/author.html.haml
@@ -2,40 +2,6 @@
 pageable: true
 per_page: 6
 ---
--#
--#%header.main-header.author-head{cover}
--#  %nav.main-nav.overlay.clearfix
--#    - if blog_settings.logo.present?
--#      %a.blog-logo{href: home_path}
--#        = image_tag blog_settings.logo, alt: blog_settings.name
--#    - if blog_settings.navigation
--#      %a.menu-button.icon-menu{href: '#'}
--#        %span.word Menu
--#
--#%section.author-profile.inner
--#  - if gravatar?
--#    %figure.author-image
--#      .img{style: "background-image: url(#{gravatar(114)})"}
--#        %span.hidden #{blog_author.name}'s Picture
--#  %h1.author-title= blog_author.name
--#  - if blog_author.bio.present?
--#    %h2.author-bio= blog_author.bio
--#  .author-meta
--#    - if blog_author.location.present?
--#      %span.author-location.icon-location= blog_author.location
--#    - if blog_author.website.present?
--#      %span.author-link.icon-link
--#        %a{href: blog_author.website}= blog_author.website
--#    %span.author-stats
--#      %i.icon-stats
--#      = pluralize(blog.articles.count, 'post')
--#
--#%main#content.content{role: :main}
--#  = partial('shared/page_articles',
--#            locals: { page_articles: page_articles, paginate: paginate })
-
-
-
 
 %header.subheader
   .container
diff --git a/source/blog.html.haml b/source/blog.html.haml
new file mode 100644
index 0000000..7f8a38f
--- /dev/null
+++ b/source/blog.html.haml
@@ -0,0 +1,19 @@
+---
+pageable: true
+per_page: 6
+---
+
+
+%header.subheader
+  .container
+    %h2.page-title
+      = blog_settings.name
+      %small= blog_settings.description
+%main#content.container{role: :main}
+  .row
+    .col-md-9
+      = partial('shared/page_articles',
+                locals: { page_articles: page_articles, paginate: paginate })
+    .col-md-3
+      = partial('shared/tags_nav',
+                locals: { blog: blog, selected_tag: 'all' })
diff --git a/source/fonts/KaTeX_AMS-Regular.eot b/source/fonts/KaTeX_AMS-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..784276a3cbfb3d3b93c974594ffaf70514ab0eb7
GIT binary patch
literal 71656
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_AMS-Regular.ttf b/source/fonts/KaTeX_AMS-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..6f1e0be2028f8c9ccb9ca055f9091fd8495c2975
GIT binary patch
literal 71428
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_AMS-Regular.woff b/source/fonts/KaTeX_AMS-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4dded4733b3fd85fdb1c00352e30d8efa3f1a426
GIT binary patch
literal 40200
zcmZs9Q<Nr6)9ur?ZQHhO+qR8qcTd|krfu7{ZQI6lpLzfFU7oD9S5{z0WUi`<i11Jl
z7Y6_V{;eEH0K&fw2m|y#>HoLH#Z~11fb6S(Hr)SUdZSdYpu)iXk2LpBR{jS=aX)Qn
z6FVbE0086&008y{06?wR7WfiO++7I)0NC(<K1BaO4>1gpXYOcW2LON@0svs8002zd
z8tUeqg^|lYZuUPe0P=r8w6OIu2LRx^0D!P10N~mYP7Hp>(#**8UtZ0BKL7Fq*ntap
zB`p6b|LLOt$^Ydb1(kqAv9xpb{C5u0fBNo!XTkl8OS)w1VDirow(6fA@jpaN58c=q
zdH%}_RQHcZ_#c2}fWz&L?92dwl=y#l`FCFko5f<HPe%tAR{$XW9~YDp0DuzEh?;wH
zbT<3Ph5hfmzy2XIE@FSwbHl{Y)X)%MtRd!9?CF<P3;Qs|5I_uz(Yi_-Hosf*&2qG4
z><4$`%*Yrh3M6s>+XDdnkK^}uHl8R_<z;jE$A_yKGk|z3AOR0hzzS~sFZh4o3J3yF
z3IP940009R0fGRJe{ZQkdH*T?i(&jRz!?~r5*Sz>WrY9&B7zWN?%QWLHZ~Lhij9f6
z1H;(m1#<}Tr@e%claaFPXSV8YH;5?mo$b&I3_R?c(>$Jb(VDQJuMZNSMvRR0Ure{;
zZfOu9#L*ugi=nbIp$K%Sx4>}ZA%rRYDr1_+Jv>cKYIpvClobAe>J$V*$d;af>%i(9
zLS$Of@IPEXjq5R&1%U?U<`(Y!?i@l8HhU7+50xOGRMP!yVU!qSn9uurkc0b#=wsm>
zeIeFGdEQ#S`*?>cvU9m+Tj>c6wPDbIS;Q3r@6f<1WoD@VlBwL{iR|;0STTU1(V|tZ
zOVmdK-h7D}rb@8{YDd-~{%#qV(5^OcJjZv>Yaq;=I}}N=Yf%up(YWmb5jR*|w+~QZ
z7qY0&Ey<W>xDg9&?*-CwQ*n9Q5`B~Tr`J1=PLwH1B#|mhe57zK(aBp<Ea4m}UO3@j
z_p!jMaoOBQH(OiK&9IA+o7G+`=v=7RboS5{IZL!RuQf2#eYY&~>Do?5#dW)3oIa4|
zZZ|!0HX-bWWYF=V@cFR*(Q|G#-bp&qVw=J*oapA&K(~<S$1v`HL4M3`DqeLk3Vy9K
zIyl6&$Il`0r{8{-fgRJi-{)m)<5D3FIv-vw&f}?im?kw9v(1>kBs18|IrQh_a3<{`
zn0@eTNd4UYVp{Z1=TT$(#z4dc*;V?iw*0?;Vtdg>QdI~Qu-ERh%{JM3LSpcWi<f2(
zYJ>#_b{?k)Lh>gBUl>scRai>>sqQRL^$(~PWhl0=YC4rop}A6dcbR~*RISU4HDW@>
zW*mO}=JkhU3*6UYFZ@&n3qshtVHgv6V|nTrDZA25o%q5Lr{GNehsG7BOPy~?-Lx%7
zr5RjRf){CN^(Z^#WJ5fkG<irM3bP@YsSufN2zDEIvm+k%KK)iOyeB|mkL`@GFTf~y
zE|v&0VjeSCDm^x%4ZG2a?!*wkW)zrqsJad2)es8555*InrXKwAj(kT5qs55A-Gt$#
zAXbDkGc)rg8RF3qfBNu^Uw>4`lcsl;;NkS#-6B~<i?a~De01s2I%T8grHmnlkYqp-
zlSOXPnTqz3A?_Ms_Q6Ww`A;dny%0*1Fpq0L$ys0^mO?<BM88=ZbYltMdm9jkR&Gve
zDW=RlWU2|6`k`7^U~B#QLz9AcZb4Yct@8Y6W7_J2`Q+mHDOW|VIzu^qv(7Ig&S*mt
z^C_Faoy@pt^u{S(+thR{fzfWU9bJcww~qUi8-^Rv)*Qb%j|WA*WhFMff=N{|G}pix
zWv-k871u=gc_HfJzp9crRCy1SY0i{cD|5=)veaBuIh;g5#frdU%ABD}kYEY2vc4z=
zp%T#%N=(H3;YLiPu>0u3Pf=k)Qnw2{Pwd;p4vT4Lk-1f)m-XIff(HH${=Z+eXck*+
zbee$aRCNAur6^2D9RCvCTjKf36Lzk{N;Yjwoc14F!pLR=zKZSR5^^~O`yCP%Dj_N^
zHX9ca6J-z|pMKQK@@{Yg&EI^`tI3<7>}#<z<)@APqxTmWO$oWdbE8`Q-DOc6HPx3?
zUN|-}82wqZ-YIi~CP^6*Toy9X3}b7sT^mZ8W?0^vV2*ikcdz$kyou$B<Gabv!7NKK
z(LKzHyy*4%ru5fq(zs$!bax*@s3jkZd5bn{iwi^kBzkq&e8Jf@STfa!KSp%W{Q20g
z$(C`*@jKIQhx9OvcKD1)QP(p?@rauIQ@e@kt;^cXq}<*6)?0{{rfPk{vTb<V4OluM
zHSuLeR4M7m&Zfxfe(5>vyjrG5FCIk3LJXKpTL>g~&^$S2ZHp#+EhWq_^o(Q1WYebL
zU`AKUO3<5eG!x9^*A1ZKVi}W#(08JY1Q9MWqqH;f_g@-!QWe>GoUc5|bn9!cq6$xr
z9u27s1J%`p);jm@m}7{gSv)|owC>jV>jhnfPPJPc%vP2ob;&iN;l(&A=0EXM@HeHt
z;{{G+YhzTkkF*w7Fg=0nMe$ThdN^8&fA6UVAGZ_vpkG3~x!#h_>CCanJ?}V?{S-#B
zA@QgN4=fYw43FldC(zAw71U&N9=Pca=?1;`H|Eo3D6bX$t(h+&TF9>JOnF$V6J<wA
z?R7mY#RDlpbM9{*E&&U0R+$=`nsO$`bF?)Xi$qA_f)L(TBT=FZ$gIKnT&$(qokEG1
zD}!d4{P7C7-XhH{K`ZhdR_kkdtDhEX##7!tLd-l-U&Hj%sqK<V9rn&)1dE>W?IE(J
zQP+g~d;L1Czn>a566x+Y5OvPEdV@Aja}aY`jr>tM8A>mbLCM3I7?9}VqGNijGPyM#
zCnTezdvWHfTtgL9C?}*SV|9^){u;QrlrWjJ*)vGb#HO4(t#<@4()G2zH;6=0GilKi
z&Ct%4lTJR!r5tJY6esddK2l?uSe2V*A8%4q)%i-0q0kB_77Cw${FcV%buFvvC;7dj
z1}>LoFgWsRc-Yyd(<h$FZfoiV#NLoxmvGE%YpN9zL#ts(GWlvmGO4yUrc9-@SbRcR
zmJ<~+O76*xXGt*ptgdvFJT63`CyK-|OqCJur1pUMsR1rMUeK)MJw?``DgAI#NMHzC
zA54HBGj)F`Bdt6C;s=_0PM{G4&!fb3izDNY{iU%RzkHO~4jD&3=#S~!&`o*Ob}@&h
z#--t6`M0->asd8JBLUf@oRYe5d^$>T=lnUdA;KPkafJzee*Utgy$$eJO*Vs!74n-c
zl)URfsFpai?AdX(8Dq3CaYu-23o11~{PUL!jb|p3mJ#1{mFetn`q@6<lJX_nb-`D!
z+7{&@7fQSrEQSl|32!HiQ7nd*0Fqpx+8&faQdskKL3lD&);)}nm7q^~MdC%PG?8GE
z7cW%R@3rc-1U_nOk~`Z{m77rdKVRIVf`$~m%;AAmM64W7>}Yem!mOrADNZfc+@@E3
zgoPvaib!m}IO_-fC5Ad-L<BU(Zl`Cf9CAxiXuM<5N6bB3b$vJ`<Oj2lmGtl`?FE0z
z9G9>$r<&^$Rj0sM_p0aJKhIuHCa+MqTG7-dDfBO>JJfH4m@r_f_-2H(sa1iNan#lr
zJ9KrCi}i(){;V!Du`&)C6rpDQXgt@y^BPzqlN?F*Tss;T&Gut{>>B>qaY6R=#U)J2
zwRNSlQ}o=N4ZcI`i8J{5PJH7{>AD!@)&O?ZT+s@Ll^&5a=KD%*F-sLt(@2^D0&2ge
zumWZQvfz1@J>?!70B?&ZF8)4t7tAZh-~IIeHl|bdK8z`&J2Dqc&?zHC=24KgQC#rX
zjKMvc6GqRzZ1BF-e^xjbOwoT<mQk=Z3;1Ao7fjcG4ubQ~O6dq*LO6oE)~+yTJbDV6
zw#N6}g*YTH2wihm1Z>7H3fN4~7Gljv&lvia7q$Ncj+pch#rbKZXCwyJXODlvZ*kdQ
zRk`v<%!339_8HI+$$ItzSbi$m{s0;$Ig|hD#=D(<M`B825)u=GBk++NTv%M#aWEXL
zwQP1KMrO-E%&c}TEG|M?B6G&5Z7U2G5XDTCu@lFQ;XQy63rm}=s?il>^xEDWQhfr~
zuvrmycxzNqU|_;<0SOl=@E=lSNcP7D<_F7b!>`?rz+w*)6h#7?NEm>X2<gA#|NrXN
zK7h1f*+l+C)5nj0$+B!AEUfJ3cW-DNz(@<i{=ecD06_oWa|i4RVhqX)762Xwkqub^
zB?@%|0}3+(dj?krABo_I*oJh0Vv5R$28lL>zJc+9xq+35J%Bxc^M%)h-$$@Th)Xy^
z1Wr^(^hE4ToKGT5GD31i%1atgdPF8mmQHp=E=*oR{z4&65l%5dNl58S1xXc4bw*81
zolXNz6F~DtOHQju>rMNI4w%l6u7@6--j#lW0hPg=;exS{iJB>r>5f^Rxrqgv#h&Gc
zHI{Xc^@WX*O_i;S?TVe5J%l}zeT@UaA<f~-QOEJZ$<Nus1<aMsjmTZb1Iwezlh1R(
z%g*b|JI6=M7r-~eFV8<GU@fpEs3^E5q${)_EG(QX{2-z#(jzJ=Iwi(0)*>z`z9yk8
z(I;^v2`L#Vr7G1S^(9R&9U|Q!eIkP?qb<`WODP*E2asczvzKd<`<7Rf_m%Ha097DW
zXi&IOq*ruQY*K<&QdY`W##D}1{!lSi=~0DLRaM<nvsPPC7gR6Q0M$s>#Mi9T64g4<
z4%fcZG1j@!_0+A?J=2HOXVur$57V#FU()|Jz&8*#ur$at=rY(agfyf#bTynZLN!V>
z8Z*W>b~o-bku}*c<u%PV3o*AhKeI5kXtD&i%(h~+da<sv$+QiyJ+hOwTd_B^Pqx2s
zpm(TpM0NCaVt1Nw)^ve(sc{u{y>JV62Xzl}Pj#<wZ}Z&P>h{Pc)$pR%rBKb8DCp!?
z@KErWb$xw0icNAK2wP`tY~-2}w~Kd2Q`ZJFC9*>E0D}xfOeYKxV@!_%lUx-JpvRQ$
zT1zK|T?0RinjR)!Uj_HQ9k!i)&8@guUtgx~d;R?7@4K-q>#<y3;j(krHT#+CVhu){
z3?}r33=bu081xk_nh@~Yn?`<^N;O;eoo;l}443<7k@=$*7%jV)?91w_R9Iw<&=vz8
zI!<9TD?#@4dPfXYRYa38>m--jew!x;*%SzhnVVP<J6$DRQdJ4@&JW7S_TYVJOQl<%
zhI%n;LoRRkLJWt~)6dC?J1_*~v(*8QfCeGe+j%|KlX8r-AP_tA=*2zlviX8=f{E%#
zT$%HTnJSI$$Y$BQSl3}GIMAC586KQ?Uz)4yz;w_oMOa^~nYI^R9s}GlP^wDV{9QOk
z3O!Qw;ml3l;P=C?DlX%(<e@_ir4l9<I-F8{sw~v*3w*vr;|kH;7s}M;q>tc4_nQ<-
z8@_{hu_XhIE#<4T`5&2xfBjq3fv)1^S~ld9N18101hYx9H1i^`IIx+LUP;+|&dF{_
z7%RC9YE(s)Sx|{>5k9KeC)6Zs-gdb_SdGA8v|j7&A#IW@Mtl&NVih42_SqHpSI8Vi
zG-TsIp<}QkhWF`~3iX%(B_Xjbc0V*z!UQ&Cr7KFAc(97mEo$O8r1H^=Rze<K*IX!r
z>-51v;ZK{s5K%PcRa0zwzHteD;5?#m$lp076L}P-5zF3y_}~+rZA^62LPRYtI?At!
z%d}chrmnrv(A{sX;oWO3hEwdz0~<l?sKxU6`OcfJ=Mp;|4tvZTyqug2U=}<|G@iwK
z%awTH?tbec<k&s}`xNwwCjS0BTujR%{S48V4n0gku(~x#5)7!#Icr3&1S!=@^oMp@
z7A0h`$97@T(7gp`kgJ?LDD_9j%=YW7(=F(18daEeUj}He*{Wo=>&3hn{k(<by{bt2
zSjMgU(TJayD)AIi3Biz`pa{~UU5nMo<j7U#jWtfDbI^er@mx4c$AtN6S2d9^(`Y+f
zIKm-Ws%&%A&0)RT9fe47e3kj7LW{d1*}<jlOnHhe@i<jZ+_Qyg9cAJbK{ePa-T)P#
z6e97WFl5f3=Kx#GHs4&iDuMX|Oj@7iYssRu@U+j93U_7<c`y-_>1z|0lCivVSb6*F
zR>eA2{}uAu9s`r9M+jonRKHk(Z~-z|D4tM}0g94pdeVb!!{*KoCd)=JLoqNyiA1n-
zR$XEkQGW7p;vEGbPhb~Vsl?J*LTeE%zji)WB+;N@lWQ0TYrgH*LO7(vm!?e_OPF+N
zSg22o)6)@&$>5BcSkEOjG$Uxaa{MkQw9IfREqmy9Ymliz-C9rXBk0=XMarQ+!aF~U
zQEgg)Kh5$*-trIm2?l%3fW?a%DXwyiex@(?l8pJ`g^SLT*X$NCrmr=-KV>n=I8r%U
z>6-au)@R5G*AHRJaSLe-&%eEI5HR5FTrw%-lyP>*+_&b7nXJeKB@w&hl$YyZF?yv^
zP#aygV1KKe!vA)F>OF{YY*kE;?9U(T=})K3s6Xq7&YJDLUdvtQXza@l?jeALzwwiC
zxR_U?H&H>LxRK6IAZKJ7M0J%0!(qIk>T3&Pq@D^?C&*G?smUx;%E(XUZ_L-0HTBij
zf&#H!XPGvW)2}IZlbTGkJ>vRsb@a8J9GH4q+j`UegFX2QSE<~^u@+znqK{=oQ;UJ7
zEg!?c>BgpfEtZc}db|dtsF})@pK7K7Zt;TKIimNk$&c-1_1UeoSfrQ*t6zR^xr|2W
z&Wk8SuBQd#mb!L~j_}vOL4rb32oynXN{><GQ<L3A?bE)>yz}3+f8I%&^iWWYAxf|t
zxh)li-}M+OXMokahsIMOkBBBBW&%T?stCy_8)a&EI*H2?V51upbV6kg&*l7a8!yp5
zxAF3EK5Oo-dSA`!;_kjYcl&(gbCQKhf`=;151zRJ%DG04h1P)KfU!_?<kk{L=5aTr
zNhr2SpxzCL_l6@rd#&lyj2BGeKC=Mcl1MQ{!$r9daM=JJ0rs!OP<^W?Bnc})lroM2
zHW|sbyC5D;rw2x2vckFWfA!&XjN83%zFe5>r}wsR2ZL(OZa<!(i6h{xvv~D}1Uzpb
zBBtAtBf)^n;?-GWY#cih%z9VMc+G9STsV%2qE9qUmCRI=-(pRpPK1yUVT4EDJ{Zby
z*_#kC7~ZY$UnHpyjRl*r4Qa=U0PfS_{ACeulAbN$y+@dmAc_o^U+y~gd6b8M#%|)z
z-USZb(Jliu3DHpQGWLNo!oz4)5?yj^oB2mngK{p?O>Ds9v0h?qD8D@5Mhe5tZ8Gh*
z?Jr8klLH<ML?b0>?TUK=xOUNech*`=RSUUg{dW*RM!ZQRCDD@=LVY`!=|?kiO4IbF
zA`L}EO4s~eoonmsC<w@f3m&}G(q}G_Uf(h$v`pa`-WCGs<;%YIl~#;ef5O(j=p#pm
z>xvB#c-rvn0X(_@ejnL3`L_vIOjjxbZh$~-53?|(&?pjl6By~=e3xiQ{%WBi3{Wp6
zi3Zy#D7w+s(>^*vT6*C&#$omn-526ZFoqAi4IbjwvT#COC(qfMY8^vNn1s4bya@zY
zOl1iM%B3iPp%|~|QA45xi7?zQA@wmjoMl$VWC9d?Pk@)0c9=>HT)uXE)=b0kU3h)u
znCyzsp;&28I+G|E?I^ajrn?}RWwI(omhQDN^0<eRTvDcjp0(KSQ`H}JBSQ+yhMM8K
zoJec1E5v?<@COuCv&2L3>Y(htLgI0c?N}>|5*8GtV~$=i<*fqS#O+V(lQKx+)ni$T
zQylPSc7KS_KIZhOtXVqBiV7-pAf3Ifz0*Fp7D$N@n^2a4($Ycpw^yb=`9<)l$(!~&
z2EgsDb_Ea*$YR11OhOB);-b{|hVb(MSqaFgz~0GEFfI5AJ08kAlmM)wwc{GydEbuP
zVV$6&Ypdo`=2EDe^2-_?my4<K%E)c|Kb+_0rEXN~QTjn}O~L+N6Gbt);{c*9(mvuh
ztyxX_x~MT`6G;-wUg+w47$JM;eNt)#;x-%(hNjEm_kkPZ5+e)@qCy>#5>W6!^7OLt
z_JFWs8jh;!wbovmDJzKu3X}*QJu_`#0=viXZ-@-|3?*U`EzKp&@1bL@p#c{M{d6c5
zjSW_msdL$9SP^xW{dcytDNrc(UC+u<;Sn9&!)g|2CUgOeH^mJL%;`8PbKR^w6}PDp
ziA13F(**Lpky;>*7bp#=T10-1>Yx!+EGuApEeWYPP-xU=NKk-USeKd>ET*PXG}ma5
zEV?GOeitW!Uja?kr0#tK&Zn2NI--5g`I6gcEIu!QFD&GjpZ)g6IaNTU;uxHmh>$%U
zKWac2UKR=*0yY5L7g00RIk&lskuzZ5GtCER6e3%9vP6?dg6hal^>~%ufAps!Lb(u<
zem2r+&i}Ddb}`vf3e}%1l8;GD2@|&ilyZ(#MJ-h_f_tP_IGkEidU&7vMa&!Tcl;%#
zxP#CGRc=9cVF13YSu&D{^|#66??NccK7@4azF@!Ac9++2$FqlcA-Owl=_HP=Uml!1
z<AXpP1^mMj$Qk?VC%e-<VmNRu2#~<&Tg7CqBx~XVck`VB+Q2WwEfJQu%pyXF7-poA
zf`U*d-pK0O{S)XbWOVv>e`=2d2px%mX0I8-MCR?qBK4}&2)2GT(^DkM%Y?GQ-_fAC
zp{>d?w9&zh@GbMgJSZC96Q+=sbMzm6v<h|=N-6+#8IYPlHm_kcP!2lKPEbb{v;iv@
z^TGxLo*(m8`G7vYN$L1vdJvd#P)kCu2YTXG?4mVwtnubThytBhQ4>5d{{%2;f!49L
zsp`KqfjMWatX4zChHMMd(hPcHcYPiH<|FvXW<R$#GLX?u$6;oq8WKYWDZCl9oFiZE
zii=G^t+^LbW-`&?BU&V#hXx?Qog{AA&SzV+h(U!M;;$FX;)_DGwPCJtZy@#`84Q#Z
z$pBSQsSb-%>lr8LGDF8Fugn1|C|AS+WmmI)HohXb8?|vq<Hnr-yg#3u!r_6PprVSc
zyqCrV^hc+QpdwkZyK}ZeG0-6anR;Uuu2&CKhQ7*f>Ttj#DRo?*ln1~iTAQd*Fsdu2
zPzD-FB{D(83lo8g+(0o&GKRL;>2J++$abb#9zbr%n;>L&e=m)rNW|gt*13ERWWxjw
z%7r$dBc|G?HQTr*A-aJFo`rcfJPEg{bV7OxBMI<Kd|r<z(InqDY201-T80K%?6L4>
zB@ro?c_-MdAs9QRLSBHJijFV1CYZk9Hp4}`W!fJiy#}-62L@?-E`h1X)pk#?>W!K`
z-E_Li-E5=#@kDMqC6%B4`~~L3b7>WBv5Y^P3U1j6tm$HQPZOd;#5LKYBBs&%)o8Ti
z$qL_|X#t#zK?jm_DvZxOuKZj9A&(2qogfII**R2J#b_sY7X!(W*Ko+q-ws@E3l~~m
zys!AU<P&cuDjMR@&SD{r4)$YnYNBS8Qzz$nm0?BLZTC9a{7#9;2wb82)L<coJ}y?S
zb_>JWOmFwGQ2ix3ZnxB87b@zfXM)#eST^d$>bPe(sKKd_+bs!p(&sd#5G{OTHmLH)
zo#>Q^y-7l?4#f|K^Mq0L5IQ;xPY}K&#um4Vp-jIe39(qFF{hX3+zQEC`i&AEP+YK2
zA6z=AOVQ_|^;kNcXW0@0l0YXmX1cZrIzAgmFXhCgBxHnYp(*fVR1P>t9Ndq;THPE!
zr2FZX@JzX@v3i|4udLNhrxhnfa+Yg4$0g0j`9)Uj2Iq_x(m%_{egYdBp^ErNOl>65
zRN4+qZ)vJSwh_Z&Us9K8f4B2E?6U3iW;@3@xckPF?jT)|2zyx?572y_sY?M!L|Xkl
z<8;JR0fxO-5H3*!g9=iU)#pWS6oJw7fUR#o$S0sN29gsVf&z&>aB9uq+;+3&G_+1j
zO7aXo5w<7AMzQ6<xC!qrDOuRMLt7XlfgFy{MI2e%mO=$x{{c709C5Z(%vAk;T5W<X
ze9odls73Ks!;-(nn2o`9b8BFXS}o8cLFBPhVr5iPsG&|Bt;EYkWtA>yOLEE)1?>h*
zTeD9zhQ>zA44HNI_oof~=WdkvB$sY9`NSc!*ND0ePfRF0x@BMwSkz+mW~Si%#N!8F
zq*W0rB{k$kxiaVUi`o0g0^9C8|9y7<h|%|x#`k-cHb=QiOZ{Ot-umL`3xe{uMx4(V
ztUt7^IiKi!t1N`A;?W9Rk&_&%B9_!7*h~}f+(3#fpH1Kyloh!t!AUluR6op0LqmpJ
zhWVnEP-1bGL4F2_i_O2OSUcZ-*JhRssOqe=@4<Z8XxjtftF5PdqBy_Jldw~9P6jho
zm~WKel%5sBwwFDk@E@gWvFU)L1IB*!CX$M6M-*{Bp2yn((oFbZ_w`bsA~i2X;$)yq
z{~w-^cuDR7l~@KK=+&LiD?7rHSwdSIURD|<I3SmnqC&b%%w+{Q|HC-`vQR>xrvyzT
ztF)Cb=|`>ruxMn;F9CmIiA@WE?=Anfw=azN@)v0RUqmom$8mRg&`bsNwrKXKHD71-
zN{pH8O<@6DUdJM17(yW!8Y#iLMTq@z)x2zY-Hxb44W(|ech2_`pNYk=DTUo*kGyvr
z455ce%dey2e89jKlWx22&TC~pXkzs{W5T$@*Wf7)X`jm#+kVf45!xsaT>v!e_U2O7
zrgj=f*T)OKmJ%@yJg?QxI9q2ZD7&qvSt~m?2R=#3I{b0X9IH|mT?F8QDvC^jI&rC9
zSvLt>m*ZDK-{ErjnEclHHd8>YoDLIhsfwZ6h@-K`M#X`JRsG{q*jMno$l++5!$)_Y
zBbnpn$g~g=+NH&!je045S!X^lji!&<z3aIy-Al^irU|k-9k*Yb=38ZT^pmYl+D6^|
z;~Ft6(GpM7eoys&h92Kt2H63`PF-7xi*<W$7mRNie7z%s;VlUPPn{PYg*sia8K{_`
zrqHM<RFrXNdY3G>+=BX^8MbyBt8Y0w{JpN_=ZY{X>SQOAzL<PV#Tdp(C?UkFHHVce
zluAci+16OI%|xg#tQffBOd}W}FP$7aA@2tVoZ5t64%g7m&qhqSv0vvlQ!0)J#VBH}
zQ{;IW@H=|`X))S~L!(O9fN!;A@0fQb5!aMtecm!GyEt<ys#K)p`Fes!*Fgg=Hup|m
zRVi?$rw=6yQqWo}F;ZvS!j>JaMy44GrNih<xe)dGQ$Iv~J2#W5Ua%bY*|wt^Ls8(u
ziW(pKs{qoM!^~r^pHYz`Y~k50%x(_5K_F#)yd(j*#A$dssGb{?WHPC%ay%&QK23<a
z)^6otcob|ijQ6*za3!6hK!DZ#STTkdy5a$f)OBk7p`!jwyCc}h0=}S<Z-7AuTmPg~
zAt~|slT6F8OZd&N*Pff^*YEFNy}j1HmW<0t(B`I8N1wmeJbZ47w#eIvN%qlUVGmwp
z5pbUp_K*qhPSMwf1r>3u(E=~FLDEV3nc*4BdtiY{AuQ;ZlJ~|40V1rwOdl&*a50p5
zBE?x-+EHWL3ky~$)VF(BaEb%viug6B{;G_RMhYGpSDn4#EC@%=$A97DIAs&Eb4$>Q
zu=e}#$RSWOs&FZ<rQF5}&E(~6)r^`n*t=K5S>p1j_fq{Bz7|A0<<mB}Hs}zG-Z*aM
ztn+7yi*szB;6kvjBO4DVd@fq3oQnI>miJb0E>PxFO3+=HjGrYK?`LfimhKxqgiW1O
z15Z#SefK}V`WOn=Cre&I(2mRI_~Tj*?fnV#oGwX#@_ZSqKV}J_D;lV((`gfLgPU(J
z1@BX~1(F)5?`{+Y(+*Z^pmMq=f`g~~I9a7D>i~btKOlj=lPeDu1i!O@1dl?k&YtVA
zHMwMtfza1CaX9Eym{YB?eq(KtU|8PDdgysZ<Jk862*cYvIaQyPjpn!r1{oHn-%JP>
zZ#W61x@EPV_G+~#a{)-UV@v}yl4$`86^>(hf5Cmg6P4NkiGE!bYETNhjkFLPp*FbJ
zEO{|I>ki@KHy3?yJe@%wqigj=?@<liDNlKRaoc+qPEY=}WbML=WbU_fjw5d6K<FZN
zk(Q%quPgDQxGb3+bZ&EH?<(8#@1}$*H<|?K#~xc{;U&b461(27<?so*HE%-}-G8U1
zK{{D11`7K-YW-78qy1B?)VVfPuFl|<kjl#kB{KcnpppVDAgY`g{M=~&B5%H_7#c`~
zx(sB^mz?)e3wG+n5^VEQQ8x@*R0E!29ST4h*Z(3PT)GC-MSOzkry-*b=Urv%)L49q
z1x(54ALx2V7*J_=;^E+ReidUF?5Rx@#Ppd?#L^k8TifexbbUEz@pSRdKYyhPju8Iv
zb@_%~(Jg3Z!}r|7{f3{h!zHL*r49~mH&h2RUf#~soAmPJ4&O+!#$VU&|Gif`+NzEA
zmh$`x<HGc9_9d+xiW4N~jBsY(MDzGfTOT@Mr~2~ah;p*(^TInr5PIFJmv<@YVOqql
znF85jYN@5ph|`@C4dWG7Uw1wM60wuzC{I8u-r+@q#L0wNWvRzx+t80Sh3;;@l?3T9
zO01?f4XL>Dg*qJAV>}x>yxl^pLZ#FYbU#otesGbW9CDO~0jVgg414AKG1siROsZFK
zHIh{(Ey-!H=)F`EkQhxmP*8I}(=(`oGKhmKD;tVkF~$$lr7Jdsw^hD35>VzIYrddz
z?B{BMY%&iWE<FJMWJ`_V)6uaCAL6{8pFt`6T;j4XOpi_f0wH`(K1aqKMw-;Nb;1%*
z>EYSN4VK^+b$4T>5n@PXtIbBOM7l56O`p2a?yN5A2r2n(MbPpU6y}Qs?$Mt5uca_(
zP>LFyo^2=csGG#QdRfRf>`u5ZIql2WW@iddjcUSQYNl@D1$q#!)|kc?RRKiAa63EG
zQDZ!v>@$mw*q8~cQCqQ3>ilJkNibyI4_s4;zpjh@L!(^HYkHhfJdRwX6Qd*}bpE$1
zNT!#=ybanf4c6(tDEh*g*C^!(b9nley|=Q0_(gDH>1_cQ#Y~Z-gsI(hm>X5k)Ips(
zb>&M#)!MJ~eK4FB!m+7v4f`zx?tK<RkfCuvXkU8&+oDD^KB8r^BeFFY?req_R7n^B
zEqb5$Z<5KrB4$@&f~Xuwir3SWqG93s-gGtscXzcOtIvUpGkyPo1l?*KWOs7asrK9e
zCe}I~^A)nZm{eLDc9w9ijtxdzd7SB(UfUkIXYsG{c1IfvFIUlX>2x18jiWc7a8}Bg
zHH>DK6hQflI>XXweoC|Lo`)RJ72-B*Cg<>-<=GrwpL!nN2&<bi$Jnt=O(i+<2DQFI
zJ^yhjfWM`j7jG_&66pU`Q?3#bft*)2M_LheNZ@Jy%Q}VzTr*FnD*e{GlwWf`gZ7nb
zY@z2K?^jEu2pU_7YjyL_@u>DdNVep|#ofTd?A@xMK_#KiHpLcm_4O80uhSpm1heW;
zvy(~eYluz>d_RaZypzO6_0KC;OnZ6zo};Q#a+lp5H=8Z%w)9(QYF(k_m8OKWLr-=G
zqJeQri@J*6Iqww)3efF4$)=oR-C;ImKETVB&m+#|kZaZ+>8qjrRt*9ELQ!QEuEsLL
zqM5kv*FH&?JV*>R3lRFXp(wH@PxGx(#<XVCCp63Pk`pNbYrf!7XGDCymwzKqL~kzv
z!VD;KDt|0d8Awf3fsG+|B+_p(r+@fAzrluNK*W~n9y6(w6y*e&fkLx-ohKjGJ70c}
zn1vFBT^m2HP7??!YluV~?uVsFk)wp23_CiVpB@o(y${=j@PueU#mVw)heKN2`VP<k
z)j=0G72O#AOs^Qj4o?xv*8$DiS9DK+;p+`#^XT_S6ygx*4g9T%7v%V=$C1tL8b6CQ
z<B+Mx!Ka2#jkZ`GKjQ*73rB6|9op??$*J*-N25dNwVOq6IS*sg@7+f;_o<(3b;$uL
zAMz`RT>aN`ijGn(PLIVqbUJ9JXtOVnhlWo=+SS9vuhjAj3Q{Ue_Tygka;f6&O(kPa
zZ`GlWF9mN($_Ag>E6~g#T9t8pvDarw`=D}c>A;`%nh|#viDA-~m#^sq8q?!9C{@WT
z*!45Dhb7jz7aaM6s_QObyPzd>M{t^@q1qKPrBdcRkJypfUW9?_2L%7%5qr$P5J6Nu
zeALGL>u@iET&C6q8mvF~1^BXYmtrw#r&w&Z=5jw%RHG-oZEfV_9WC2mMvoFv>Gp4}
zbkBdx`hE>e_u72}6Oea{ST4gGM>3&DjcXaT^Y^=in+#ypMRPzBWVcMjoASE8eB-ou
zNCI2yh_5Ua5cpDKcEzN<(~78JdggWQt}rrA9;ZO1H8s(%K9J$OFZU!9@_v2z-1NMU
zplAp~#NqMQdGW7q9>ce7&u4=eF(jU%IBu!Iyr<+|5!GDIQ~JaIW{|d8>MrN5l{NBa
z5#r5*(@Q6<Xtf=uc>9*N2SjPlm?#3xa?%`Yr&v_uLbsWDvG7A4*ufQAG=n&D^FIhh
zsS-><h{&c4wf3Z>fp6og=($z52`=ZGMLnevy9s9$cpF!~^{aB*b6@b_qmZ$vuFr!Y
z?xqh&FQuwYB%eo|-3gp}&p)A>hiQKC2>yXGK~|g<w131cq(sUQZKz)5$BSqGRfPG1
zIB=9yO1WjX>sfpr5`-7u@Br)}2s3M1Lp1Sj?4P|Fjiq9yq-4MmTVk$8az*Z%0X*9#
zArxMs&hcZptSdQyImJ45VR=|VGl2L^rza8kNI(Q+ELtRbXZ(Qt%~F>aGk`V#wI8#%
z5dp%pfLB3EJNrheriDyJ<eH#hsca&@UlxGQpiS*1MRJ)a&fvadK!}ADVj}T+laUvk
zYpdJZLNjzNns!hvWz#!x7P<@L8?GZCQ#<A`yub2?PE)Y*W{%#-6Dg!t(b>z4i_}Zj
zDuqJ_puPt@KQe1sgYOEHg#n3<1D^+E{mt>sqG%GXi-a{pIL*k_EtE+bb_i;7*^1~3
zk7Vqj6Oz{ZeXLG~O9L8*Oua)Y?eh`<Kf6ANZT<#T0@#FukTCE%S<y%=v&7DJh*I)h
zo~MxZk*F`S#)q&_1|av&{X+Qlo3f?IbwalOEWkYftM6k<g`##DcCh{XM1o)ymMH+&
z-0?@DrOh6!?IycUh4XVh3``1ETi+`vAE~euOnUG3Ibb?yj}C?Lgca-!4+%r<s2WeE
zOVZ?WVI*qt{@qI`eV41(WbuP-@fq9Ikdu`edE!zT_AB!?2eL(%O~+F9K)ag_!Up-I
zg){lIARm@W1iKw^2$~`4yyoE&^dz<j)F9)env$kW#lzowPxLrmWH_M25K0#6=hXk=
z->B9}a^2g_$u^2gTUI8hDNEp8Fh7=25qens7Qe!H%Qs22-1neT)iv0iFh;dd?^SKd
zvGXJ-vYloP2P|(`5Y55s0VFPS&Cw%{j8*AdW`MCrrZEC+&5k?XFxy|b-?HreSrxhy
zNbYeJ_Td+!5d-@!^%es!@z;4%J3Q0-K7>KDT~T<d1^^9oS+Ooabw51}^HJRc2;7H~
z`aTrrKy1>Ves!xu_c3jC!2mgt%je~a#Dbvx@nx|T9#3<t)8um_BjVmWMZ;jrFwW$$
z9XL*yX?)g@tK}mCqHI=2IMZPk%yTZ&#xDQ<g24}#K%(p9Y`Xh%68i68O5NF=v*9|3
zTUG|=P>SB94-V2rC~bBKi+wSE8GK<?Ye@WTw+T8u?l@+{6L+_S+tTg*JJ;_qL=Q+V
zv2ar4@ngYHIB~X<hXqRC<rek>W}!c2;2*)DU_=A{;x;{vYjBBz*`_8-t5JaAdP!Cc
zS}=+Wh!;Tb>WT6S;YWzbD=Dm$_efQ9$w^=G9x-_@dIJ<Ud%tr>n&zNOb9S^`yG)uI
zQpn%y+auLZ)RwZXeX!TRlpq;Q0S#W?1hCXDasgV%lY$bAigai;_K*19hj8+JoO2kC
zWc(Ho(FiUz9`c@=Z?orfm$gzrxuS>#&_`>gi#vFlJA1bU<yzRO#6+70kY|M00DQ@D
zCKU}R4p2rIdlMngiaJd9K*pM~fiHLrAGV}4w;Z=~H$z{LS}#FFe9t#Fgu$_yobKBh
z9R)p~hY6D32v?hpHlHnWI3?<G(GE06ozgrk^5oD<go7YnH7nZo>ck*Tsjq~8MphH=
z8=^EM_IJC`qMM~LZEKaFj=PxI_jqeq-_X;2fo=vG*>960bosGH(jFygkL046R{xM)
z$z=x2#}pv~6~WzK$l#%TPT{qrVx^5+xQ(iIiK*u!IIm(gTIWt*r2DV){+35tmp#%o
zGn`%17K1}IJ&5e5oRpJ8fL(~qCx(c<Udd=C6N2xFiJIAI;!zTC!SFp&DGs43De^~0
zS;U5&MR>Z*EO|v{4q)ZxxWytshKpX@ABIGKrx4{A2E;-z;saQVxVV;!VhTgOa?;uH
z15k`PexXKBD<WNNriCFCLWCotQTD=jgHif3B5s|zjLj6=9m&1H2ur5}Rr)Y^+j2jx
z0kan$O0pPqV?|92Ue-y!D{I($RDy}2u!-@)o&2FHaR=1|)qLECX-or8ByBM;oXTA!
z(w+P3TMfbRQ2q&~23N5KdD#1ylPz;IH0|a6E)Pr3l;L^==I|c$y5Gjr?n~e(GIFYB
zu;<6%n06kK))PouCaNCCcPqZMi<s)WdKlMp{#^TO@0-WI^L*s8cC*uG^(E$VwFV3G
zY*v%T!i9_fK?=iP*aNM?J01r}<L**Ks;L2S{qAc_ra*DWg_Z%7CmY7)l*(W&Y(V4t
z6X9;dlPR<L1?g=^eJr#KeUD~`yg@j^q3Y=bz8j)oby#|EqIwp#6o7u%>$?ka%a4~N
z>LK!8z(DnPW+tP%b%WTw=S`b0Yu<rB{b~(#J&DCd?QwOZlyx0e8XnQ1;!=68>*sm@
z8;m3TxZYmO^t{a8x&sCaH)?`uReFw)3l|W+{86k8r!*ZXb2I%sABk_)AU`+OgyRzQ
zwusy?gP)Nu>ly;C9QVCEt<l59hA8d2)#c$VfmuJZK!6)d9>n$7Kg+d8l~tJWmm{m)
zkl6dU<#T3NToQ>$N(=!+K%`8vIM=jrF?9h=e-8m}Wo0eU@2m#-^4Lk(fP`Q{nq2(z
zwOoJY$7c|1?=ZaVt&g8nT0Y*y*Xq3VjQ6|UQL;_x?ZVY`G+R_uN?cWURKsAN%>>iW
z{(<J|FEB{v4B@XJ7hJ1-Z!E!72jQd_m_$@f`c{Ln2Olu0yR_fEbHg<B8Tj7kD}BW;
zO*Kkg-In{8wLE^dKL;&zSt|+(u}hsU35w#!p@3fGn_GOXT>Eh|9UF*^CI)1C)$SZ=
z+DSNhYqeRf+VCZu?0SSk-(`kmADETDZka<Qk2@8{t;4tTuV{nIPE56!&!*#uQV*{n
zdV}ZR)$jplnjU_279yHKjJs4q#Bp2rJ`~sS>5@T4VWpLU;%INcq_QVBcoB6vSLX2@
zNKU)xZ2Z_Rtf)7dYMR5QzS7DakMkjgPbuc=ohUY2z4(Z17O#qaWwmpii1216)KIW-
zZjJe2(eTZ&@tjN%Vti@0fhM?zfng_XgR$g<`tocNJE;kh%$$syzvN0d(<fbU#SJlf
z`^>(W_O($n*@-BKm=V45-6v_>tOMwo8SfXn#-iW2R}b@9;L1jr96Z?aan~6<hgIOE
zxvfof&dC^BQW;w4yW3Vf(~-Rwqqg=RFci`ZF1WEWCocAnFY7tP&h%ZJe-2hc;V!)+
z_pQmd)W)!U>lNcQfVJIOmp67Uim~xA_Bf9}F1-S?oMX>hqNjC+_Q)_)AT@<IDRp3s
zIHjIt`o2jyvMIOA$sY>g1G#rG6bDiZjT*dGU_r+R%!gHzOKB^@waps*#Z8XGv7o`}
z$Z(gM2gvngmQ^oQBk^+j{p2o^@xaOxQQQmvjZP>FBdH$$Du!&NI}~0PBs0P}q>4cW
z1(R3TI|ErRZKp(n($r?bXU-csXsRD-gh*MyGS)sAnysmW6JO;XW!f7f^N{8j`;QJv
zN7$lsgZXR(969i5E-sgoCT{Jl7&dOd)ALV?Vol#u`70Q2>!mc5nVQKL&H6vsKH@lt
zzQIj1?D~8sX(onaB@Bb&_n`+Ii2GK?=Fs~xvf{=hi$FM~*-Ha{KONoM^a(Tdh(#oP
zhAQoE^NWQ?`C56~%tFtl@BuTRLiIJZHo3c$26`y&QzHQ_5lY7zlxXdf**_(|?u89$
z_(ek(75iFPZ`YBArX7}IVDofRFs;Fz1`v{NfKxk2*Ql^M(ZhT-^pn_N)E{4EejF9#
zXlylAqj)lW5Lk;!M2~Tzyn8;5`Y*F}(${~ly@+r)+`4A=TDiB(ng{0zHXiAV9;x;u
zqu*zRi<Y-ZClfoH(2IvBUi3J6Dys(Bnj+Qh3G{^i20MJ<hU-a|AO2~j4n6%*@SR+6
z`1Y?^{P~RfQE;PXP0j5y7=#E-B;?C+o>OGN7TIV1ifHq_iO>-CEMS>2Il=_KP}}Eu
zAxmwHkAjzAaT*-rR)4y*k6uM9F6wc?Ag8`KBUn%O@vgXEnRUk?swYDIUQqF;5q=Wf
zoCh{=jH@4G^!sAE8qK&VHaNU35<qen5|9SI{r$551LFc&<tcb>_QT(Kgvk~92b~po
zOWsJH4Q5%_h6w3rWk;f4BWk%5+wH3frS<H?O?oIn6^U$xb4iXm@UIA%43Tqbz2h5J
zJBz(Uk;)~S9Fy`Nn*~G>A!_1vF2(Z(RO=yE));4LiVu{<B{--2)#=y`E)1LaOP%)q
zXtb552TyO$2XWiY%wzOVI-ZU8JmD==F{Dgbir{|Fd<V`z8G@oP0e8JKG{1=7pc;-P
za(;W{j5U=oSg`J>PnzO=1~wBiLpx(?8+MT#Lw4e4zY%9D_5^dRT@r;r^UtVCBDr)r
zIQ@2kowt)f+Sx0F92I*(m1~#MFx1Q#B6QHL?}ojOUxF~ktAAz^E>R0B!;wXqiBtH+
znJn3e*R5#+u)+ctyZfta3KkYQNXhP7qm4j+QSS+VF_SGK!|{;PxQby`YEUZ6qC2rB
zCEU<<Afep1LYWZ`_7vys2@Da0n96x~7=U28r|4{M=*WyAG2A^w+QU1iZ9%7wAI}kI
zUW3)BP(lQaKb(X5gBR>SO8RqSwEvhf#h(Fja=RiX=`zEH6){zHI^)}ruz)B05q<bj
zE7(!Cyilbkl2X;-E8Opb^-Z#3?%y}<Gkn`4LUgVl9M^4iaGcCtt&&nqh({R19*?<8
z&N@NZ;Y5=>%5g1ss1^_J>F7;%cb-2xl7o2kRYS!dN1D#woJm8Zz_{5E5U86Sj3j$<
zFq8p`4-RRId#K@|1!>|uJnEuSdO9s3y%c|h9uz$N&cP0Q>b--Ief(k?Otnik$}Di~
z)cqJ=P`FQe69{GAsto?*!6Dp=Q3_Kj6H2z3)^Jfh5>Fe+Rb3n_e*@D7lL`R^H=om}
z7f$K@E-5-!ibWGNGriU^2(IlAUA62FJVy+Z4GO=Rn=<$cJxjBSu@pPMFiAAlB=$#x
zW^*0o>@}q{wlwTm?sX`5-QR_TJ2S|RV_VbiSQ|;MLXB+8-O*+^*>4PKUm>KHw~>1c
zr`I8dk@2sT6)TK4inPbo5t>Ye4fzEBiHPgR%6^|b{Cy3dbKuVef&_J_*u3b*WPW~-
zF<P53`-kP2@*K-H#@G{^kEoo>X5jVqW1;nqZ*CU*iKTN(f&cx?W7Pn3UAyo^#KWfB
zt-xJq<XMXRyaE#H;<cyr7>|jNTs4f*xMi>k5dRBHG`RO2O@fU$V5`>{NiFC~R*Gg{
zHGX|8AIa%(--f*w9|yr&bv^kj&OoTaT=c@JbkTPIGwvStJGu`3gKJ^%^IW)=+ffs`
zb06B@A;ciduA0x-F2uTNsOL(tJA4)5EenWx|EF3&KK@Vs(+VD6RxMm)q0fzAnaL)2
z7V}_^HjeajT1QE(jFPsuieJN)(J{$_brRO>1tpF4Z7Z&XdAw@HQ22H$16aP}0UJ0S
zC3vG|ny6cG+usDsX5_zXBZLOS5z)zEq$01!{B*KK0>ZP9!Hl`|Q==>qUBZnBzf%RO
zue|Yk=6+I-ys+QVN;u6$7ltGeTo3M2%ZAcXx1BLjR#1@G77{|@=Q|f!JqkUtkW*R3
zGBCl(43(hXdc!DC#gY(9M(%~Us1dyXVh8(mcP=yd6mPezY_wK4gNdzo^}22BmJBF-
zkzEAT^d-^RSk#VDJ{>y$k{!Z*LJGgQvn8v7#pj?DPdhj1$W*i4sYNmh^2PjM1NvJ*
zJ;%^*hIPV_X(^X<Z`_%TBT5H#?^^Mf8HzEkg1}Gr+neUWsL`vfrj!=6YXKA2_PY-<
ztsFT<%ZRB{JC)|S4lRnh37L849^wcTXmADmqxa1Vviami&>s>>&**Y>^L`tCD8^Li
z<`%_`iDf0Pq@s}q+6vJN0=c;_({1gsUVYah{}ygNsvu?pReQbwoMW?sL!pb-3TCjc
zO=)mV9Uj%Op~n9)>)E<e=aN9*A#74Kf;?KXrg4$ghqygFAv`EvHz#~rz<_Cv!B6R@
zx#}>KZs-=T#e@ehrNk$yJl<4#T(XA&>T7ZXpNY(AShD`=(h$N6x_fg_ch<Zgl2?9s
zI>rBm-;8@PJWl%J-b2MxM)w!Ujo5oarS||5&-~;J<zqykVPSqg??v%fv0&4C^~o-E
zsHh_$Q*E|UHxv)@&HM9EGvukY2s6&^h;y?(SSEOW^@7f1z1^WKe#J3k$4cWi_|xrp
z%HK=y+>GaPe1?<bE`<zv{og?MuWw4tz(NHFn>U=$Nffo`k-A&`C%f#u#~z5jO#V&~
zBznEM-0#fXo(*II6Z!sP_$c%V2Ig9R1!m=DxeRPyx}6%=e%S<`L{exB6h(A%zn3QX
ztKyZ+wZxmv#!XYnL{#j?vkBUoP~O@x62<SmocjjG7CgpI?@^x$h{k4<eNfPQG|{g+
zGA_GOrV<*!PJ?JWDyv_8L%NLD8!YEMkhe$Sue2J8TH6N>s@4}1VeD(PIrs)BFZjDS
zP_<K)Z=Rdm?V?<C+`=+t$N{c0(z}^C*jW?u@V|MGyK1@4E|ca~^^I^pw9hAr&ur>0
z3S1t7Tme2^*GqIl+_+?T;U{oC&?{L%<z98kKC3g;*sjYMX^o7WZF_IRq2It6WwH*t
z@m{k}n&n%qYcW-Q$<aGsqc#{Htw&!sDHuH5=#$@&`I{|uA<;GK7Nr*AqpWUkqPO9J
zUvJFRSBNzEr($!DhMOxJvD&ZhMP8~oD#USR622UmN3|v(1)pa#y*{L<cM+3Yn-6=n
z)JNA`Yq7bM@N+|uosEk54bov3^_C`0l4f8Ixp5;GBBCi)1&$OrQgeYlCK}J4F{?F2
z#_X%x%^4NYzgYZWlvF#~D|yn;&O4gBtVoGp{(3)HyG{SmrM+vtfL%4YAJIf02DRJ4
zja&Zxj@%@yl&f2$FTm}G=Me5hzq;KmC<?{*L76DpFt?pEX*9J-__vNB%^i2&8OR&~
zx9NlD;7$e<_h}KO7euhvl2rJ`S<|b%@9zN7L{ew~e?%V2O91VP7w%CIg80a9P78Ni
z2M6P-&^<1OiB$`Dv_8uuuV*3$VuS*iUUlELqeg#2g1{#r86~K^)kr1_LD^U^ZYq3y
z9w2ePg~7{}yVm!`lON&^`8}BBPiimIDx3!4p+QfeU%(&Pzxg}$b7!ZQO=S69kG1vO
zuc(ID4ty-Zo=+8&>s2r6hJh&5mu7r^1#C(<_()DuTtoWZ9HA2JThlw_`xYylc4~Fg
zuThG6mBz2IBpyyGcKw<p5HmnBFF-hP#z(P7GIfCSjS6*My=OiePg%0h7<sR}Tr5+s
zy(cfjf>&R7bV>1?jW@-P-u_j^@3mcU&xK`VOyMG)2kMnx^8WxdK+C`FAA}&o#KvBS
zFSym#R05P}xeuT(W67zOdPg2v>oC)#={r7`4^I|vUoRqLCLB3L#b^vOTH0!3<zQYC
zaUu#g=;*Z>jRiVRKFIxJ0LJ!h^q0bV7+Z41*t}9y$SwPru`)UJ(yjJxXc)|eH!<;6
z%VZJVr=~{2YgP|zjhJD{EU(e{Yh0YtT#P{{l)?RBOeJItrn+5h{lN{f&SUQ#h78M;
zSS8!oi@pqo-<8-o7~dFF^iq;yF`B@l6qxN*Ffq24G#rbHG-*NldhO#bz52+}gCIc0
ztZR?2Yiw`%{?do=bNE4FE0291hpaA7#zg#gJS}fHT;5a4J^#Yt)*Ow$a5LvJ?-GuR
zI1ea$V~5shs>1~hm--8aGE%t$TU&|)8@82)7A6iO?TYn~8xS0<Wv93AxaW>1?EEze
zM#O~12$1A330A3z(?yDDu%H=(VVQ=9Pn->#x9rGAyR6vQRp*jy@2k2P7EMv4TDr9D
zs#|w0e&CM&^69#T6=h&B&iBkBrtRvdXnD-vfH7}_G0%8>zTu_8Tw89=$2SgGp6}#q
z?S+QzQC_G#w6@!N<+IjaxrVn_{f~PksWhOPomxlAboI1O!jOItrX@t6`Pby_x1M70
zJDyO?&1Dx8iy3PU8<Yk=epg52^xMIGtSyxh#puOn3{ffuVC+TY+Pw{kl6)-j!2w0V
zR{eB;<>o)s(FgA6>KZ$i&?w)oh*{@7o5LHzx4e@E-gyffW4G)W4pTYG$NkBrN%VX8
zqe2+Q9rVWSR6G~;N-f?_1kX4>>9W#XD2#AstWUvWT*LrcAJOOXx)h11;U1-VU-Mq7
z>lE(UvotCEuys$#mt|!cAbq1*#iQz<GuOM5(l?gDD4ie2f2=p>oAdlO=x%hE(i2uA
z5jj@4Y(M#u(3o$O<s|Zv&9Ogq(G5G{34g3>w0Upy-sQWE>yS}><g)$r@9Cqr|5~&(
zYTfgq@q722YtFA2Ke`Lu4Lk^Nmpp|Z6Oxc2%Fi@1F$_Eit>BKGo=LPgwa176ej%K+
zasuCldOX^|S=<Gl-MpiDhX=Ih(784(`pw4&76NcOR#MSfbPk&;g=V)aJxLQ79r|UP
zWqKgqW=74oCKk&$R~^t0wR8!q1EU#q&5FKv_<c`%eP0plc<)-BYjI3(VAWR8@AMtO
z9~x)E7bqw6jVl%Uc4v!i5{HjVk|E?O&D)!|W6i`cva@O_1|ut?U$*(DXCW=l+5Fel
zS7I|r8@(zP4T~aepqj&1`}Oq?LEqOytd^cGXS{gV79@Y?b9jYx#f%5jInL4i^~ZyJ
z1$m?5Ra41(xDcU7%1{R;1gjlG3VHxNKvfft-qD$oqG%vE+pDSjd$3a6rE0yi!2ukR
zQl01-RZ|&Ohi9lFA~8HO%wGa*Fw{A$R!MnhT#`nvq``evNs8|*ld3x0>0!@~r78S#
zutQ!0i?;ZM$E&>3?+RB0I+-mHhr5u+rrL)b->GUluARWNZ)?&_ZtWLAfMROAq{<2b
z?ygoRL!!jQ$*QWVM3L2=@lJ|xp>R?ZH}%?f?<Vy`k&~68@|$1kCfArU99Ovn;={^s
z{<o<EQ7WYD$R)Cl@jN|PZDhO!A{AZ`<DKE=>lMVj{W6*E6_(LhVJ{7fs4FCTpm>Qy
zxy@TD<?;u0c)bC2aP3ePy-Qav2zKn)#ezl5@Kq58O(@h;g)i$#Pu5lFd!|*l2}c|s
zq&<@1z>&It#0M7MY41gt7ck*Rnks7`QjxFO1(71AYl>PLPl@Q-39<iz259GakBUEF
zAmcax0rK<=3gpRsm>>J4QcQAlKcTMFL8_p5@9=0W{X57R3n8Ho{4o`=y`1X#?pSNo
z83;GzLEs9UsZ~EmA`vYF;B+^-+jGGA=A3@;AVJTdXY_+Pel}cGI66`t{U4BTW~7Dg
zF01|&epHUB7<D!HL0*x&(5I*{2z}~_YrIbgyxog?X%xB$;85*(n8D2i{~{70NFm(|
zI-uyBhidnryOo}hc784N?IT`aIc68b8Z>p*_F@5RI3#ZF14QRwru2<un(t`Gk46{5
z>d*pzC5G3>zat;UVPTW77y7t+eprG&c6)U&UWwzip-6i#N;@s_^k4C2;~@8I7oB)j
z7l$(54&-def6q*qZ#(hdkqT*lgM7$nzAc?FRc0j9U(@?LRi+YTup^(1Nk|QU?h0nO
zNR3zYx4$)$k|kL(GLj)9YMQTk2z7Qo@r2R*ukU|vaC6$U`g*`7(r=ZFg{ioqZd`9x
zCW4|wu=eZ(lVrvwo;4tz2Ztw3Jike18k6SjjDvJp0_>cd!^R(Bd%%`iB&E#p_5GQp
z?~>1h9QF&>3a=E@kG<lClLr?|1oXu!4bK%J-uWxV+8YabjOH{P*I<yoxN4ridRq&_
zJcj#Zr@hFRM@;`+_&h%>hZ(=FEgg_!Chxs@-%A?n4ZN@a(0;AdiA9_uX7>KM01?&s
z`?4lU!J!TZh3vcU54)zu3|_H)w%ydo-8UB`OqshcXLwCJOWM8nm#L`R$6x<&I9yX8
zPwolddTSItIui{4Orfp~$9uAvzL^-+Sxux8?b!IrlxT=F^~#NLkpVAkBycz^<AtdX
zLqu-TS*6?1l!}b-rXXJoO;Z?>32nA&5cD{u`WLVh%t1;J$OZ6xuj6#s6T|$=O1s-E
z900r9v8BSm?gD^~?f3P%R=a{$DYtWHKXYDLT56T#K?i)or&8uQ4{m^5#X`ojK#zhJ
z@*_Grna)b0B-+XJSGA#(8o<b=M?V|X!SFtFi~?Q+)M#C6em$E|J<AhK*8GiOJou0p
zXO4nC_ym5;X#Ogb{-gI9`GKTi51?J9zOW#Hn9%0+W_>g$D#o)D-oHgK@vMdwG1$M_
zT-cy`#%E<6WS9mPXRV$f0$x40fR$v_QdrcBYx7Hw09G9HYSCfMuc2jH>kBy&fNA({
zSN75*!obra+)baygfe0B6f)0$6Cn{t0&X@-_k3Oxr7!HJ*{mCgAi_7h^qa^&|8aSI
zvx06!H&P8K+QZF<l`W$(-eA}HJAGuDFIKSj{Z}$VZ~J=<SBiN)O@$y4&{cKI7{ijG
z16^J<uc}_0dxSg&{hxyV=c0Z+I>UQ?0pkYRWQX_C=b%|{H72PwmRos>?FN0}AM)Nb
zzt{X8F~FX}@TWDP9BB=R<dz52{7LgCUb`;T#YfeAee?DDuT_<I&%?kM8IX6Lj|j1L
zJ;$&4a$SsGTJz2FVwGo@kc#76drk;YkiST#9T+cH{Jr5c+4ZC%OFMVtyv$#igk=Mh
z!HS~v^zUnI?NMYr(D%HeC*Jf25C}JKMqMnVVjbwI*xN6Pxzd)t%{fs-#o}@ml;ha6
zFiro_n`>!+F4T`rj@8RunEdv0L6mPa1Ow}8{r)ZHhIW`}$g-MWM{jC>c$u?BTjLCV
zG4CggWoK(FOt8GMbULOg@v+n|>09@2IiIxi(hg$nWzR7Ed_^C>`f?|mc+UJ&^hvTH
z)cKm0AomZxE034O{UV1qC(3*3*j}*kH;9Cjeqm=7Y8OCWBhU2YCsjh!L@0=~lkYgG
zf@#l=1cGKkKIbAknt+fh;pBW_TD>+Bj|QcgNjZ^RyN=bSr|JyVQH}MEt0D>=X6x3Z
z5^Q<~t2h&h`u5XU+K2v)91vyznRkQCw=Aq#ol=O$TPwW!wT#X@yhj`h=URli&ck5d
zZ{>wVe<v&8@hXUHi0^ChR$qjI{G){3N<%yMKtR`IM3`aOBQ?IA_S^$bkcvt$-KZPd
z#6*VK%C0@C#6FS)5MB}t^u~dHBs(mH9^1YhP2Ymw3#t74NP;4riR;&4iJd>js5cuG
zco-4G*6>5w4c!QMy(B5G$!_dM)NVe9QW#}7C0~bV^J6GONb|?EJ^u6f>v&FBC2SY2
zhVdWWH#e0Mh`06!R75InYXP|A@7VQ=*&H3f*dR|t%dZOZ*)RWHXYIOO$lLZ_7I@)4
z0_1?yvO@diKc3q0CuD<3!JZhVA|9g7)VhQEyndi+4&_Yd>V3V0N;sn-<g7YyTP(3_
z!WbL`2l};J3k23)9oC2?MZgemH`B?tbpgC#(tK4Z(dQ1>f$g_x1kY(U6P@lTk`%gW
zS3J6JX4XL{Sk+2t&1HIbk)NoJz%%zvACS~Bz1WY27&Z>C&etj#JC8OKGZ_5W`7z4Z
zc{l$A%ZUJA3v%0b%g4^EmX^?$(8oPH@8Px7NcO^8wWj<+k7pMEl&ybvManK$`j%gi
z^!85IHV4e4MOQ_{UAsjJ{<OGPBq%svgse=rhDHmClSyEBx6F4SIp}g2;Zo5kvZMgO
zjTwuD*lbGaRAn_QrcW5fQefTD0I#|16n=!>jZDB5>1m1MdmB&MxZwM^$B##s{t!Qh
zn}Q;wfu|&F$*WORfxUTeH4)&-n%8&7yMsTkgmxs0=~OV3YW~PXC8R2l*OuVM-{x~j
z-^O2Ylc{1V*{sLeWA8Am=9l4N%`clKs`)b9zw~4LA@pIvf&OV;j>~tCiL^z-ySobc
z{a_^!5o4H{OoHI|&zPaNGvlk@Bw&`t*PbJc&xr{g_&M~~5DQjA-$#cc$m8}NAP#!l
zA68T(y?DSUa3=lT!tI(}ce#Gi+gIQael9w^uOqILNHB55(3Z*Wa46hy)!NGbly|IS
z-*7a!akz4PW3st+;e;O8G$<uEov0Kh^&z)Eo9<F;(QJPu-8VE;9;(kSA8`X%EY~+~
zKF;3=JJ*%&TP34wH*Ku<=&kj54N%D2As>x_Tx4!r70+;xu$+D{Bzg(RdK;@Kf>Jt>
zHG*beGt>Ncq$17W3zQ-DO`?rdQzQ{>eSA~%%Sh1-=5x}Y!TtY2=oETDUWHtTjN8u;
z+9{4C_z8Ojw9SKmflq6K#R8{?hcY}ONthW#Y<_|wb-_V@V_Dx3Et@LQRq5MPuX&Jn
zK*jHbL<OEtn|F)IxZ;cn2H@Is$CVqp9_~V_-<PjIUkXB(Fa&++D_Y#{M6Q0+0+_C4
zBwj9~dZ`3o{GX*R<%{9)+jZGE|D45hX&vqPd|G6>a+a5Kb2(lLMfWQYr6t^aBf1_@
zJ=`g4C<1A^3_SURhb&Fjq}2q7)80?+r7|XHMncxMUDikNM@p-GI~DE+JLP^Pwrhgi
z1NH;c<x8vHZ5Yj6hQZe^{cMS%BK{W`kMwk?RZB>FFCT_MB$4ZJ5{J)xc{Lk<{Uo|o
z1J}W|5&lmk^aS;WE$I}Gj8Rz+Opo9n7?i#1@!?@zMxxg3Xv62<4M$KCbqo(drpKJI
zYAeV6F`7e93bGIcS=tc$aJ#Rdzzlz=)8O4{m?nfH(MB$R5M`3dfV$|-ZJNPv{3H_@
z^Tq;f2FB9Qx%%?B>kWth;x91rwBilMk(fVk+s+SRQ1^p$*6)HJlhdMP&d(XLA?;ev
z*9T4ZLk?@k%X2U^<NS|i_o6#Nf*+h%g-lV~uyFp*!0T~*?`-p|VW903eE~ya9YYH|
zZbg?qjPFO^0i1G#IK-`Rz}6Y(N~r41L;}cS{sWMUX7m0rh{^G2E?3Uom#t>9RrCw^
z8INVrWAQ8;%r)<;X0z4oZCU<{KO?gIjG)i~&xpE?|BT@BGrBK4t^Jfp>mlfutq<?@
z9+PQ5Cf0gdU+X#C&(Gqop;JO1ukmp|Z?qOAURZe5+O6fyjCvsE?RNCu_Ome%we9Xf
zYIKJCj!u`YK&99v@mDR02R1r#W&Qf8Zh4}RSI!m(Yso-X1>2b~t2EbDNlMYg{54pw
z)ibozQ&PiTE^rPo^ai1q&s|CW8em@d@ZLYvdWk}7J!N}FBZb;~$#8yQAC-uz#CtYm
z(w$S&xk6Vq-8ZU&e@R$hUoQ1@3{Q3C&<!_jk1@&7`+KG=Yh=_3*pcH?2|`7wAr4H%
z0==V-)5gF~kj*!Nok&lQ1y{<3i>BO`Qfoo%ij8gM6b||Sk_ner&YLl8apYRHy}<2)
z080~WY6nmWvU*Md;%jW03ngW^pulA*F@i|Q2tcFBT_H-}D9TKqk;pu>>CR<ShMSjt
z@fO(>fY0UwoSrF*J4IyK#L0rF8FNf?xR7v*Y|_S0hze7-GP*<Z8d#Fs(*xr7>g-wk
zb@VmB7+yo`RK55cXvJ#}4}DVa_dd70J}*VQl^k3s4Flh0n&<DsueoAPEYUwPo9#)}
zOI@HB3mLt`lezWd<FmPuc?oMGkeZK}hN+u>vH5z%ERQ>ZV%J!P<ZOBEP=9u~oZUQ<
z6`8lj@k-!{4+$qh539Kzf<6WG{-r9sf+%y+=XHheyJ;<T<iR(>BS@zG+ar_yQY?Ss
z6Znx&p&Psw)E*<WnzgEhTu=A<DYrL);_(I*nQYW5q@yt}k|<i!Frpn{Ya;pRTXnPf
zY&rk+Z@}+Or6QATEuUXlV50t!QvdxA7}}fOusZ9~v5iGLTG>f3x;r~G?>fnn88^|u
z;1!g=>u7NwAya+nFp}};Zi|TG$tu=ObKex!ZGFQAk-wQ`-3(vatmtzK*p`@vZyMEc
zzF!xo`_ru&qfiE${ee&vwt)`Umc!m$382FYXQ?#G-p-`fzr(a_jJYgd57CnCiuUD*
zKX16Ab>rYd_qy@b<ApWFC}dvzC5?w?3#(_wqJ`d`oE3;ElAVVC*Gw2`XgD)bnudln
zO02-H;qIB$lP+&(xG^-lW-pHAy28b9B8l?rcSXChvTaMjXjlt;O$+4tTNH3S*A*&;
z5~*w{n;(GIl5JBr#&NQ;^f&lhcnx629^nMw<iWkO16_!$Soi3Sq1xJu)wW@Oe%oJx
zJ&C}!+ppQW_(WrQ^4x!M2YmHYtyUQbr1A;dPDV0|S2WnVQe0F-eWX9p6AR_HA8lx*
zjV2?yp=qn})R9>^CwA{RJf`$+Y9H;@!kxkV&c<}7cM!CF{ss+#-#RplRYrII0#8xK
zMyJKWc)x6>>kC0cQX5m^K$mGHQyt0t*!lH`L@bX?vVpFE#t#)nWeRP&l60_3anjBE
z45o+_GnFy^Z>Ivr%7C#y1BN{V_A!>VMC|9AJ}a$wUepps3vqM#Q2QTzY~fpLV?}$f
zMIo0TF`r~xRyDRrPg<&U^q7IAMj+lu1_?GkZ`+^uz9(ua{{7fdNwuETW|NuC{f_vg
ziGW{^tlL;+hAt8*Fx?>+V>yS3Pg~-JZ$tv#xR5bt;#ua|xgRU|IQSey>1B^2lOp_`
z?k~|{d?#XrSm*D5vECt(FlsR7?N=XJ`hCb<jzGM2g$!7uF|GD=r6U0d+LSL;s8{@i
zLiFD$#l+0Y-q7XqXeQq|)0OUQe$&KfEVKF9=4UVJj`IIB_Z@(7Rae^Y-q-t^KAO=;
znxdIe?;2TMwq@CtEZef>g1a#`*x1Gdj4?KjO<BqxAk<Kj0Gos~LV{zH#<Gx*vMFp5
zQZ}0qQZ`wVkfkL{ik|;-?|W}FvIQ|@|AMhKntAiyIp?<T-20t#oR5*+UoG}kW{$w~
zb@1v-<$2cm$cdvjPu+|EjMu`P?gv}d61l3Y5+RF}=pvIlb*@s8*`-Q3xikpGBCw%V
zm{lhH{?>FV7EfZ1T$8?b7Li^C<dLk3mpL*Sr|zLLmDnmzZ6$fOqTInZu$5SJ2=Ot%
zHt@))+h&!kHq}lLPnyV;iI&YO*ok;m60TxO`qW+~4KhKW%DQu>BLt<)k&SY<LJeIm
zXkno=G+!<)1S4%-L=HtbaJd+bikBaNehy+-FOlC~0)*bMw4q@s=}@#Y$%*lVO#3w<
z4$|NFW1AC+%?a9{h%ETqj0PT9hG`)-YRaX`1G++Ngn}Ln0$T{JMejZooZV*VmHwu5
zJXk(>&d}}S6?H<aT|xHiv$y89#sR<HTHe$@cyVREQ$;mGIQO$zOy{&Ek@LIkIwr&<
zV9n_ua<<iFt6~wA0XYK{BlzjY42@%=wrfHu9IWcd&Mxae`&i*|l3j{JfWRLYSZn_>
z^gh&|vBA7og1}Ewfe$+ZA2ZO;d4m^Jv=DRPDcGL@@TrN%ueX1XQUCAXKyH><acVg}
ziC<>oVBJPoH)^U=6{frQ1Y&SvIKnxT9N7XOnS#JAMJ^V~Mo8!nl^s7QX`=m$zg%=3
zs^VC`U_Wm^2d*)6<$9i*dd$T0EOYAfhG8I!yu>dXq9j~*S;x?IfJ^=Oy6Z8osRF2q
z@l>ZOi!o9B8r}6*h@U(yX9PUuT9C6kSrOBVet_nr(ASXz#;OY_8#q(O6^bCCYE*$l
z5!=t%&kKH*LshR&{ile|knbmgasBnMAoBS7>#!eWyly{pN}QTFLo^sK6ZX&X3H%cD
z(3LP=29th=m%$KEgb3xD5V|TuHa>jx#Hp?5Nz*x+1VcHmW|HJxWY$?o=d!CrJOr?q
zW9`@MKODFXDWp!KIQ0blKnI&zFy<vKlNldZ^(U;}mhi_uqU!c_jY_$JIaX5B@Ch{h
zQzMJu1N1{41$2WG4j=6vIV=dgsG|T6kjftCt+qC#$wD@RiC^j)XbZD4K$vDFVIZu_
zVz!#40C3qDo~eI~nFRfZz`el^?qF!EFfQnCfK@2-cNt(Uabbo?<mS{9BCm5iQjv1t
zR{J&Xty=)UAlfgIM1;KkqE1qB9y&T_;bDOjq^bV5Y67sq;!^_p2>9nKne)H~>nH0~
zmtXB{$QFS)`9mN?5T<S#>*gJV2rf%mC<*x~bkg8DaB3;9(m~__cW<m%9pe0eBsRC{
zYIQCN>RVN1RU(VkOAWxHm#W}L!5fw)iIvG(O>?gCWrC+)6U_MD{f={a1&QlS+#RgI
zKMHW=jhdQ@1vN=kLczGqvHFdVaphK=`^=3x%gOOzNKqv%7_Kf}R%SVueTIu$<=kV=
zWmcK;*YDo_#HVh9p`c#=fIoTt#dSH_Z%#Eqzxfg~z$^rt4G*PNZ@;MtrJSv9@1V<L
z?~(9UcUcSt>47#S1Q<xHz{HN#0y%r-f?<3@=cNZ8#LLDdPQs#G7Va)wNJ?P~pZnZU
zp90;%xS+ObK1uhsd2@Jen6I74znA6gn^B=Wj_hB5Jjh$)qwl*@=8!6CHH{bTZEFTZ
z$w|UFtBxL0ur9LS#wcJV$slTIsQ+X=4(9#inEMR3t5Cq#a7&$j;py1RjDe0LgH?*_
zhd{?@^E-@f=mid}q`=(WBc+-<@n2N$ew21<e`M2HgEJ{3Dm$U`!Uz8m-Om$!mgTEa
zOZPUJlOFpl_|Pq35%8|O3oTqk#tOH2>ri<$y8k^UhrTh15i3ZBp>}1pA8T0*oqT)=
z>fy0&+`D{9S*%Is3~B9Z_Sohes4qO5anx)&+O-5NS)g&x=Mk@(v5L@czpzsX(mCMU
z_#~TTR?xHcb0!x@K+g#EB&RvT#B-pIl;fj1$_pl2G6WiVnqw^KCW>%f)Xol4Sg4TV
zf)%jVPw0mS`*HXD%T<o^fBvh{c#FsxdR_i7hRIPLTh`w{IQ}kymj&|%y*gU%vtXL<
z>qQUh>W_YutmFjE=<4cF(XwW2e`VLsL%enOJvfo<R7q-gW7QT^7}_tu3Mp;g%yom_
zaw>o89hKQZ8D<G>p5Rw?Nkr(~w^+O);;}_!F-12ZSnOUud?#*iCV91{?XiS%Tqc*z
zDFb_S7SC-9&XFhCVvl$hVLje8J>#9-299suVX%bbO1e#FM|OuMbMld+{fUj|JOoRD
z$fLg0+z}Q`a$Q5)CWV)7PA$zM+<%4z^urw;nX!gi^wC8qn?d-8$xclWd9lC$mc<P<
z%V2WU@3J2JAclJi_UD7qdgueZG~cTBqg!t}U3-PMjvhl+bvS@}lkDo%Xgl`N7@2aw
zZ$Acnu^8--E;kwcH?T#j&kbdWI77Oakg(Km^$xe*9CmzIU)iUq0WH>9RnZyE)kb|a
zT^PK}<-LNxwXUkweXqb`{Np#qBYz!?NlSMtm=!8w@g^fG=wnUkswI0h6c04e-$&c3
zm=awh%mUE0GOBxf4zuAC_ATkTLKfcux)^7#<JSaz7EJTk^=G9X=vRM=#n0i7Fj0Cw
zkcn%Up6!6F8E1TFoJEcgb7U$eigQ$N&RNk&QjA;{Kc`9T)P7Ns416^wY3kHN??rQt
zA$4k;1a99z>Vr=0hvizqYu{^s<rq><i28qV&>Xw~I93&Y+VhTPBoxS-LRjGbYx+Hq
zaRtbD5@d`42A59M#C2!y4%|xKkwtUcATvPWh!eNZN5UM%9;te_%zLKLxk8i4#(oNH
zj_jY=|IYh07753$y6oNd>nt7#iR{!%S6_`dR)v1|WBX@FR9W0AVf-#j!<St_42=#R
z#6Dd>dkcluzP+q{O+e+@=eoM~h^ikSJcvX|<I(SFNiZt=4v>95_z(RcdsnS<c1F8G
zwU=Cnq;$+sJP}SHgB9IeP7yI!%mS8j2u$?U?4)FvT-bhL$5jDdRk`5OMM#^73v9qI
z%vpbazbNH$?`aS4dxENj)sBwOURuU075xjpyE5tXMNc+DFVhu~70V9hI-+bq=w9ES
z)i9FumJ4cY-yc@2MV%eJEGsHOEq$of(P2B)p_cBewAID%^m-Qw^I?|)B6xq&4x!DR
z5CPrLdBCm5K;}PzQr}kSqMw!XTT!gHF(81)BL=^?_t`L3INsv0S-E}iBBIMDYW1Uj
zY5t`zb5TADb79$Ec6O*(#;u|nA85V^E)_{hc*G_O_XT*?3N&mkWFkbNIY(=z7IA@d
z=3k;ABypky$Z}`rB2z0F*Lh|&=+s;jD>>7oe^T^x%uOQE53@4e^>&-)Ely}BNmEF<
z$(NSQ%W;ar<>oDUX)-5aS@TOx<6js`g>wh0#Hn|m^|1eBM6vpsc0@&(q{AXcVsuAS
zpQ*8-rCl4crYc#zyQB8x+0Fr;EozyyH0Cj(7w2;!&4~_p=_qMXuPf3&t#4y`SGk=1
zt1C8}SW<(I1!AcKNy*O%3bE76qw|&U)CbSn9OxNUQAI3_cAsx45yu9y*|R5QhFLz~
z7z#}-IXinGz<14n@1BHpUN~Mw;_#}mSWGKI4mlit3Q@A76%=iCK~ISCGwCLsmpDWS
zIw-Jcg+`P{$G#$C2@A%yt>Zg030+SNtcgwH9p|$MP_4dsgQ`xRW3aL!>Sq3ic_vom
zdHu(H7>gRoZSK1^KB|1pzE~!B_35WLRu*(am#~h${w)k(?=zocd0eq!LD0~}Xv6OA
zsKuG7;j8?dDv18ed(`j@9ZBp>hNrPqen%1K#D|21IuzVu!V}j7fr3~(t;%*dZqPt6
zr$up7IgGB!eALls>o#-sexhglxs}UtV^^d*il_nZBc-Ws_pz)X6VC5P=jlAh%VYBW
z2~H;|UwLEWnl_YKh?aw5BKpeX5};XfzzMpu>-N^~YXZ+r6j0j`uXkVRlLT3^?iz{8
zYLuOSqfe1Fj*X3MtniaL46xe?z-}v<ZP3ThT{RYSu`DT6<R;5=Mmlvzh#6=RFKPus
zP6GMbS}Ra1yg^DMrE`LKCYZ}2FGGw|5w5U9yFhEw^wDjgWT>NmtRlT|T`I)^3X@DB
zQRvh;ad7DTXh%$utMVOX52^Y`)=df()iYq-Y7N~vvNE%92i(M5HE3?Tf;STvm-FQp
zjfT>h!1A8{pbSu8d>KJ?D3J9HlLHi<!++{N)=z>1Nd?{c>t~`n13$ydf$a-?^L>Mx
zBf={#zCBLy?G~`nn&pj#yYK8cyzL&Sb)wN6f(?nYNxCK~v4i8?H+ct7H17!pKZni&
zbbr807Cxch_W?DN*ZFLcApUu(e@T_Dm+c#=?aNok(M@2XZ$IN2VwbKTu8wco3@SXc
zb!(^ov4=zsy~u?njzya`#?39agjv>y&l4=n>!OU;t{|9SxW7zqJtucze*QMUy0PB`
zXuwa~!IG?v{TMud!FuU;fJjIgTz-=Gi!A^A^LXECE1mK!cGmKhr%V_#S1>j7{Aod3
zfUJWVGDfl``4(FVL$GA%xCM%O5ZMx>;mjV(gl?12Lp$OSb~+m);N;$SWq*9pzB0oo
z|A$G`z9M_SuHW;Zy7&@!r|go&>Vx-8{S$cISvl%seS!#Ux9XSD2M?&a{fqouS=7};
zdhcG5TWaX66xcQ&*5ds5PL=SKMV(bv4`o}Lazm>X_TL06Ek#V$FeQOSvL#kx=qj0h
zm`>uAU<Jq5HSuxKIZOTd{zeOXeIi_>i_pUecS0=YIf1u)(=_a0iLQbh4*<$S;~(iy
zjO;6e$>F-y>Id#~G`$plFT0dzs_Q6`kHRc2>Gl3g_JNB3ov$YwKSsU(&|z?fcW@Rf
z`?t-{Uzh_OSrDCQm}_dL8tPMN!D@_$Vby2}66Km&V1{f966Hu-$`1h7#2E|bK+TN-
za@beSE@O^e!D)EDX-++h>&R9jFC(mK9ARH+@DEl|faXhq`}~W0ABo(Do-0S7ZRk!q
z+-}goyG2P7r*1PWJTdig^yiq!DpTKA2xE~)uQ~h8b54B%e;Y4g%9%#+HkOn9=J7>+
z&D9ADaV3GgCFIm%uw$SY_vw+V0@Gzk4O+z2y*ARGO*!QnI#H~lke9ZPuL^OTZ^78E
zaHb)%@j4&*rSQ4SKR#rYFW-KU{8-Xh5epbKJu=2}Z=H}8>U!a&@m%*rcW<t)3wQXC
zId}BZ@WSx9i<SmBIdbb}`nr4S^B=!_`$Q-*<o-Yp7;uMLEvCU85Q3Y*%LSY2x_a_;
zUA<&axYP#MGRkAS`iT1MTUMWKr^!qmzI!V@@+AXqIuE`x{u~mfbFU^!D5vb%eoPav
zc|idK4(a^t?KK`W1YtkRax4xbiPZuKu>!*7i5`|0^^k(=nnK}pdH^dyLuT3D@^W%5
z3Y5DS!swOEfLy#xehVhP(h9Pxve|5P04(fNmCCu{a41xV*s!51I2=|K%U6jN-3($>
z7YdOpRm*a&TfyRhWyr;=WajiXA^hn%&2O_!I*Vj+$MZRRgEp~u9Z2(nz^4z~31jl?
ztx>>;6Z`@x1!ZUqPq}~J!JlGu#>a%1GA6;8gIYWW<Hc_p0>cxcUe4##2lJ7{wZ0_%
z<NX}bIO4A#QCO_nPloK@<5By+^3D%VLyOU3nS*h@oA3s9qjLL~<gfjCl(2t6{yN;?
z88Rr3Ige&fe>8%}p)($dGE*n;=+uc>ALcxWDbZ7dXGEA3Q%Cfy$(BXKAyYq7PZ%W0
zh`*i5`3k&GG+6M_A|fSsMv?_rfWu@4v!A+W@6?O@f7*ZLS-kM7U|nSyxYAeq_Jp;o
zuek;(S9@~7^mc*5qWuqC%-hdmr14Y#&a$}rx=>wJOqB5T`FDiX8~*{J)9m4J&Steo
zHP|BKvBAzX3L13yV5b=-kGD*{{|_acFb3D*lVB5<vs)0vRL)0SQ#TTZgr337y@?(N
zX{v}GH;`q|M_;gzVb3$kVbY!O@(1Med&mVYH^t$U%Fw5z6P8B#Mbq~V6kj=OOY!bc
z6(6(HH0?W!x1T!Sdu4wWmKv|$utW420VWN0iiOE@*x8@+hEF_s#tXCq9)0&Lk3K^P
zeClhbPT^Yo7}Lh|5iW2?mF#gK+laS3os_cG_4Sj27;=(SQ(|c`rDb~^tzz9-=rT0p
zwj2Hzrzs+zIQQ^@&1oL<g8i%Yizr~tDnUUISXuYA*5A?5h53#sNxEl$<w5Wx1xXMS
z2X5q905G!1ZJ#`<tNGe`B`m?>Ec2o6_K)GA-ag77VvDl(Fmsv3V84aK1ATdiPtzI+
zwH1%AL<;@ABP>*;Sk0yfn<ifrNvK$;&`EUp_0}z*fTVKaM*qaJ30416cwOWnK=$^#
z+hb>_^xd*A_16_{K#H!aM6Vz0+lN$1;89t7coQ}RQ7_vO!-it@CeG09wfKE)efJ=g
zP)(ZGkLY(d=r@;e<~=@XC_?hiJE0*?(MozcfjtG2gkhS>b+nW1X%dUr;iVlVo7!E5
zq2bt$G7|5|;X9t-$XO-MPgLD;#~q;2CsdUnu5|4f!HfmKo^oYS&w?V_sj0H9WoWx$
z-21+pK5H60$}X$8i5|VFvi(C{KXN3MUj%@DUbG7!x>^y`GhY89IxJ?!p?@tIZSgp^
zC3>_?pS^i4MH>p_r)R>+&>Jg6$~TrOwR`&>$&y4JmleW0wr*AR--VXL!g#)}+wYl8
zHPkpaIYYf4Y`IXf42k7XtP@%cFlJy`Am}Gp`$w~CiPA%r-rk^tKgp~ooe201%FPzs
zt#gkp9>G?MqXhskj97O!T<38;^m$#(V_Q9R=r1^CAhN%$=sb%67MoM2(2rk4Jw2D9
zna?s|6_-wggB;njk7UUVL5_4obSE1T5R|goNN$?!d8#O@9B!8lXL}my9XC`|V2uBA
z=+H$q;6GMd_8)mcSIE{gy1Q)1FzpPwtf!~bIosb4&pSkQ%fMKxj1&D>CkE~f^yA%A
zeL;LPO{c!^oaZBB<PCNHqc^oNrLqv+vmi?{LG&l{=9}q{iqgEPCG5?fI9;>Y#57!+
zO#P}vB)VR#=PJ>Am@1|f+9RK&ZI5VPUwUBVB(R}5F^Vyb9i3jvF4ub|JMaG?ujmdL
zg~gIFR4<15Rw@|T$L&XH5aT#ng5J|SRG;>TYI{_nqeejSw#8Um(N`9!>z2^M4h3N+
ztPyRR*G8@(*EaUci00`!RgYdnkI*;?lk9`>2Ad|y5YjoPa$E(b8z88k;}l&kSJBvL
zMVx=)pA=cG7#lk&i7Hn?;w1p+OIQ$mYFtC^T3Ls`0obdWoH<m5ruUQmk!j+wo5P2c
zEg%UMNg~!R73S4@`u2|nkw^ybrJSg7fC|}5_MlfyyUw!E_wZ*WRkZ*4oqxE$7Kw@=
z{^u*QMZzRr`t{VFs3eEw;(ASFkfBFNC#p!Ks_XwnD5;1(nVk*-Bt)NLEEYHkq!Zfp
z7J7|^HMs3TA`x^%j%9xaix<a32e|YS{5e&mtv<EQuU>#wP>EDdP|)`U1+yal!)snV
z3iBNEIAegFMJFC5*Wt#-lK^;vby$(Rkzk!+PFuE&6R{+|pO=vrYxXSuSDa*m%pztZ
z^zT)ptr4w=&%HP^@329n0IIU29+)#}IvG@HT<Ua;0kt|{`oL^=LVF}BVkqT27Y?T~
zp<vMXiXrgH(OtVQfEl%Xcr!9#p?-PuaJeo@7wq0Ongr)3F}%rs8Qgkv({SR)#qURw
z>2NS;;YuuWan-LTV&QN&Srst*1fyzn*REZ<$X5<;A^CT=4p+i$;H}Xr`sP-cpSKKG
z+V^6Sk1Kw)0=^o7uUfR7Z)GHW3HlvV0T@_1k*W-OJeFw-n4S;lYMvvfNVmeht4DV2
z-l2&4&Rx59>Y{wUt3m$ZIhUZH>ZyhFZ3+I}1*^lZojXCGu7|rXIqkU_(!VN=Vjp)O
zOoK+IZB6J9un?OlJpE)6PgHy=+<zDPT)t)HYV<?VeYoA}K30@Lh+Xz!v@YMYdX<x#
z<u`z-Ptsgux*Piiofk2YAmtzCvP=mvrL)7~W3*=rx}_r2jXE&WEgsoF!NTpgvjVgy
z!gsyrJ$GS5_wSMYar?M{SR|`FMsryH{`*N_F3Ioo;0HeNporKK8EQ!U8R^$y_gRQ3
z5<Z;NR>5hq4B2W9t+e2Ar~~9s<>@Dbu?6<_+m&0AW7T2$FaajGl}MfOU=T^b_unty
zmzl^Rm;0E(-$DNhJ`g!SY-^0t{29TSl>cJzh2zq;6+<AP+as53mdxVsnBdf?nprz1
zBsI?;OVrebrJg0Gig7i0t7*aF$~=8*YKMg{x6G-l4HQpSMq)u<9xLs0!0Xnb2Uj%Z
z^H}a6ziM0TADYm>nk3Raso&xc;JGwrC0UHwqg(2gsC7Dg#UmbhY0Ml|R%kNPJ~Kq<
zgUBe{8i8p**2*s%?BnP;5o@mMUR{nGB@LIq$X4n)mRrBsEU{RV{H*Wj(HE*&Md1SN
z)vxXz(OEZ7&TptZEg+A-Bo31jKYEd~oeATol=0-81f<<E&*y^#tGid3EXF(*Snyc5
zzJUYfMAAs))`EdpRzyRe(ZWOsePs75ZS^8ayN0pKR{!S6F(2y(d0DCXo2@d|^-A`|
za_sHL{t(u6vMaF++O@YOM{<skWV+p`v)kE(_0AfL+pv`H?(ELetqR_K<>*x0xb>nI
z;f<9KyaNR)bFI;PP5u2J_91ck9zY7pSRt7RW^Q=DZr=S~@w~eOJl<;Bqk(+Kobn3s
z{`Z^a{SSy;7OJTdAGqKA^JVYTNOl~Vgv_Df?qyOuCJk&UHv#C=utB7}b3<e~0i+9>
z7FCB>1Y=CbMi1w!ZjtCV48?Fi#3w-C2C8pghgsZ<ow*h3aO*mYH36NB2?X0vwtF{f
zD^Q}ZFuif>!3p?%g{Kf7xM!Pm-`%d(RaJ#i1!HBjkS?cs>$hh{BhiL*cOe&8Y?}tv
z7uQmKu|!llvLU)4vf-Enn$r=AB%^$5zvT~D{jTarz6CysWfwIq&;_!iYV=4t(b$cn
z{0%-AuY&nwgq%y(M##Bjm_Yjuhj!#fn|k5x?YM&;u%(>hSoF%`MQ{oEo#quXPy(%q
ziHJjTW%lxg6IUnW9Bm$~R95cnJ~EOL&~5NJuMXBV&lj*rUPmvC@+f3HQ`vH@fl)3~
z+uGY!QzLxyYo<Pog2PS8RBmx~BmecU8pgvnH0tTbIeF>fhYjOnH`c2S4Ql<3A1l=<
z&kWOZXWik>fO8h2!5P!RC{8$Vs1kXhDt)LkRTALuejcPbtNKwN!b`!HM5XG(3&yWa
z#Yopu;4N(Y!z5Knyay~S4zC{;u@g(|=!939MWyOm`dYJ%;y1pg>(6{knYYBz$TS~*
zSgProQzJg|ux^$pMDh_3eV%9fV1Dp9^FywKrt)zPLR=|f9Cf2`n^#E9Z3+@>M<bon
zG$Tt$7z3fOR<~desX57lkeY-M;y51n?M%c}o;HMW(P9-|sO|NuLm0_n^Rdq;g*3of
zv}LPqK8X-tmyG9vUwG6oK6P`m(a_J^e#1b&XMGh5l*b;^T@K$5U@Rq=C{s(;=Q7`H
z{N5tHx4I;|yfag*67W1iP2=r9Qr@n{dc0lqbVWlftOk>jaM%iC#0$tj&C2BrLdpdv
zZxL=tMrvd}63C=Orif?AL^%4ngj&Q5)1=#J&TXK*vn1G^iZ%fv;32-qrR9)DxwL=a
zxfQ91BuDge6R=igSZ&6#U`%smUGWZyoc(&NPR62|P{Y;!2p=K%vg_32+!XGj{F`Nf
zFBf#xB`o60an5{S?`-)p1JJ@$7C;$q?<0IflXzLSe{0*AWm%jdHH-~`ojQeK`WSw@
zALcEU<L|nOBif=m=ux}@NW%WL{U1npTOWD2+p$YIAovMlm+smsi};lh+D@pEbI5%j
zRZIg{34mV7ug+SED2Ix2t0LZqjFTwF`Dj$q1cXETzP@Xs90`WRp%|)Ud7cAr^fw%;
z^ucm3qO_rDhW(>cj3m;_@3w!pofS~0BJ&DDQ53@*$4-4&@`Jk<_^|!LN-WG%Edil;
z?}c4;77`?bzvFJi`+0oNZFswnMK|0dN?}QS-!*{3$aNF9b`U72@weT{@ft7K&jw|H
ze`V*~R*!i%_Q1XpKgjN<o;EovXs^vwnlygc;gmH};&i46VF-gO66T8lOC+S5utOmv
z9J5@JV)mda$y49QJPTMx!!l?gX)?BD)PHx3)2ALaaTCC;XAA@$7Kd}ZBC=E8!2v9z
zKc(!~zlCJ<xTJj#a~3J2{#60%;2h#7ujp2=@GXKe0e_t|I2L_}6;y?1zvnmjr}Xod
zA%2ElQSc-BL9do{Rh-6D1e`W>ge3fju*;7Vi#qYHs+2+(nx@v(gDtj8Dmdz|I1*}L
z&00<r@znR@o;rArq!Tr-Ld-s1#(oZz5}`eH6oR?&Bbo$g_X#4Wphy~emL*ic?>*uw
z^nfN2CEK>vVczhA@f1}+J9e@TE?xouoW#$8-$?dyYr>Z7;)xQ<lXFy4eHt~b63xnB
zTj7$kBrPB%+kbs)gky2{>AW-~=|1)h`WpIztUBZ@HaO5RzCq<LIfI<0o<?6Q)xl47
zXb5Sj$kC5Dp>hr)70;fo_QimoRXcY6rA)6FSn%x1{6%NYQ^Q{i#TRw%gk>wBr4RLQ
zIva+X%ex@llns=dvSs5!#feRBYb|n7NS&xww^@qCqk@q$xJ9(Q<1D-smxbXR%vZM#
zATb!8&=WUZUAb%pS(C<s=>Wow%Eo}hJF0z8Oq8^2%QcoqJ2K9VjLSGw@0*yxO(B$w
ziHUrtxp7VcHN%{n3ZUhN9uvR(WsdNcPc%(7M}*ED4jXA-w`y4e)}jlK5k8U-*fB@1
zYTlcFawa#$lB};jLCR|*Qoc{7Ly&NmT>kYrfHfwXk;_E~7v%Jo96-}-q_CSLvEW7)
zfOi=twTsD?amsW8sLwFh3hnT+Kz#`7wY3gCNfR;l9h*B|rW((8STJ?Stg-Q&x>j-J
z3K`5d8K@2UgG(0@lGE1h{`E`0`)y5|wvl!PZ+@v^XDiQ1f$l5)qM&mAtA^8-$l<0t
zYRX032###5FeLVy-vA33Pd9IGLs-@g-M~M844gAXD&g(8`-k@3_!;~on2$C?pIKTT
zn8q)mGXs>^l$)C+Qh`fj`|0kv>+5>iTAaZ0U@>oFyB9Go3admsz>^(W`&Ijo2W|z>
z!#kiy;{funADX+Ecy5Sq?c`WaGLr3KAvjcMuc?+;4Sdaxik#m!xH#OE4MXSZD%9)w
zn*2PH10Fp^LYG8|bx{&4(by$rYGb9~U$$*X5LnD_+KQ1X;h`;A-D<DN52mUF|H_t>
z#1HxK)&(iu*nU1v$<c<I2n~9iwow`7Gc9X)^BAV~{~;r-5jg_F;6DPwG+0qIq#n4<
zeiifT-)ANKT@v2JS}Z^|Ll8OsN-)-yJZJrN`0bmi#7;S8FW6~gPr2&(mDGVOuGMap
zSvR`gCHedhS#7zIc<TDK8+CG&C+b$m&!VdSd?$=FRbusxYp;JQVf>xeLyrkYZN<ig
zWzcEG@|xS51s*ruPDY;|T)45KR+-xIwyijA!z{B0Y`CF2uFyRumjq^@VtT*g%;eG}
zVJ1TVGbY5J*2}+i-I|R$Cy^<<@Kb6+Qx|ns&^NBR{)^@M)UAJ~4NnR>v0+drv-us3
zFo8AS-VlW;fh{98)TdUxZ5y&KC-o`t$lRQRbL#720$?mYRqY~?c7KOQ)|_4&3Gvpc
z)+Xf07OKGk2xHq*Tqqpr#1F{!Q{~zAGR5L<$bUlRIOUN?=XA-urZu%>>sJAu=J?9d
zt=(cs(@5F&@?UZGA3mV2t+{J>a(^S><1Xx5A(1E<X~oK`jsTbz)Lpx=Kb$qDz9({R
z=(%jeQL8y#uHkFYh4=_s#y{y`VNaiSW-c=d`Yf8?)0v?;@LDTK*{A7zw`^OmB*DK+
zkRg2{?Y#7Ll0xIDP_V6YfNhUBae}Rx?dY6`=Hhw7u&xODJbxf8quu8bx9{YmTz72<
zG;RsUP%gJp5*6c-n^?r+eACMA?(aP!3pII+bR4f8ue|$iUX%s%_S)L^FzRSh1YQu(
zITM_G;M|-g?`$3j1admAGp-o^?Mwb}?a`xX$4WiCVgo)xbfnlNMfqwQK*#kf7LN2p
zSZ8e}x!Fk7IJdE;Q~tp?aI+>gVv@qo-K%r8CEc2^1FLCc;!p*08<SFMC)7m?3thqM
zc1Rre&risFZG{5rYw7IbOtoNu6LVvFUKZ{6>X&u(+s~AT48`QjqJu-wReL7;JJf{E
zzW!y-{(dqa8IzI?SI8>9>rPG?YLx(?3+va!m3ORHz%@{}U4W97587B8@>f|1+rQ=<
zl+sgXNkhXJ^ZbkGx!T0dl}pnIUxE(dn~@b%vaEGQ(Jo15m{|#UMR{!Ps?kLas>?N?
zdiWjh-JMju5HTEj17px!E|>-n<^tI!N}h0%dbdZiX))Y6VQBAaILIY}8wF1CVcgx@
z)UiS1I5$*m`<Vs-LpC>wJNM|a@WY$+AVz!kv0OI)#I52G{vqCN%nNs8y%#YOXYwC-
zFc_}~sKe1%F=7mSx-}#)<<YA;+BI~1t|Y(o`}R)6?cR;nFZv|f?w)fU#NR;&nIzyh
z#mUE%otcn{MC;557FZ(dzMAe;=ga=iwp+$UKQxh4RkP{xOltVjYULofITZ^VM`Yw{
zxy#`Fn8m*CnoY8A>momW-p%xRRU~J+x0gPh>!TmHg^MSxPJ(4!R^@nV>ow=C7|8LQ
zCi#uJYnN1{GZhoJW;nE6R*}CUwY8^VNRhx56QT<?nLKapS?HWIOQ)8zSK_CcIMc)&
zV174P-j6suhy-qE4(5e(kSuLRqRcPe2+sN<r^0wA0}8>^auFlRf+X*OyC4>k^4!ci
z1-vx>C?g2mI)>vcQg>cl$B1G;^s0onpZ0C?4a_n4T<<oses{3-4ZkKcA}fn$d|en@
zyLK>+nccf~oVRAxqLKM?3vKnasY=UW;yA97y4TakgC+KKtE;pV$3#dwyYSB0b#*&s
zWqK7(S|cICqV6bi1uLe{<Q!a2=^J!pIMqM0uE&EuY)uTEcV|_!Dt&ZveC6cWs-x+u
zN4pmHqUZL0_Cg`Zz3cl1{;v<d`+Jqz)aRGZ!8*5~LGa58$RY@aAw>7&+gr5mzOJ(J
zwZoIml0QH`fp#-=Vf9F^Js#G33Q~O^ema=EZQJmoRZAz|nX0Hry>oKus^_k$iw5nH
zi#~TgQosK0a`U4v96!>0fA<Or<@k`MAmQVJAYR*;ZHw}TR-UeJgq2W;29Pj0Ka7ze
z3=Fr|#2PeFS2<%T>9432eF2{YOfMWar|TQi{2bo)V<WP_5cApNkCJ@t4}A!6(1K(u
zooDf<owNLhuFjD&@mdtC<!OyS@4i8A+>!DHX*a-$I!G4W9DP`oKlBjc4IF<|B2|oe
z0kxWFiBpUS^R@P`YI(suTSQ+#dzg@SzW||sIg+|b)QFH{n)soIh?I{WXF1ln;U3dI
z?&eX(j)ZP4U+<noMzvVmhf3ybK~Ta0x?QH^D8yq4?h3Mk1vZ(2BOG>$H_`hsr~26S
zptH}*@#vgeIR}qH0WqQw;0-_i$%xJi#(DPl?A^NWiv}<H@n1$%-Pmb=-QJ*CGwv1e
z@@V>;%>=}Rovlo0@T|d0z816>)tzSuyw2H=+vgAa@jvp0)nXsBzrNFeRz~CK!z2D;
z4oZjfC>$5uGyf8<<4k(vX_Q8fzu<8ur4xiNiD%<Wo=KCOjUGvInV$L`K8yz_hn;c|
zB4956fWz>O5k|_n=Fy=+fa4-Mc9j{FRUVbya3dfl`vv<KyeiZ4IPV^W&lC-c4#()U
z`{dd&!7s3U&A4OcIqssp_-8*q^UgIG{X~BC6^xk@&b|q9a*mucIXtJ6bxvn0QC(jI
zIR~ljl_Fn16jYp<Yo&=*^QvP=B-M$NVHpIne__9Xc#Z1leK!m`22G`yN3Qt&KzlkB
z@<$4tr8j!*XFtDZAt*TGemH@V{pdZfzQQo2x{*F>5V>aIg3UsVI-UCE#`GP+=i+ZL
z6-=I-B_#dy%-c;X7jd(klBfW;>~;*b<1~PeN|-D9MNyKjOw3Oqo)?ZDVqw*14;>Xa
zPJi_;FQ6CRu^-{5Md2&;7q(-W<7M$1UnIl%i{B7Ml9m}Awl@Kkus<5%KYfw`Cmh)0
z>eX`U-Ruz<KXZz?58M5Pc1pGkM2JKox99^!0HrxI2rr_2dL?N?dp99~x16vM-E*J@
zVa#25AQWp-SdPE^;K9pzj#ZkPE<enHIHvyyx)Gr?spw`u&y#9x2y@)})o9+bn?(uZ
zweTOtl6doNXw5o~!{o+JU8<F*p2IH!ZYR72!>QNqIbZCIY`0$3@HXNn`>RQ&#vl7w
zA-a6*;cl$zwWh|iBMVqQTwX31sX9bXf8T+8l@SR)rE-EA>|67%_G>=P2ukdsgA&VW
zW-#16#)4T<_p>qH%~#ue>Nl((+LF|dZ@{RSx5;3gN|Qv6O5_uAo>NXw<K2`)9qs)r
zT+rbHD#w{{98X&Iv620vfF2<$o`gRuvsLZ)uTf<V#-P}8&DM%A%gNQZV3}nFdwKDq
zWb3K}bzpQsQ)ga;pMsT#Bj+z1+Wm}APTd=nS$mnxBX#0jo%403Z<>U;n`dWU=HIx)
z5YQ*JpmR~?rj_I(w?>%PkA>rYZ(VqUKJ0(9p8Muq);-U8KdxgND8ITHFngkym$b+W
z3l(3{eSg1`LNH9L*c0309PK8h46)*?pkVxxki!)4CGju8QxRPz8yk0dVkbSm*n}b|
z=-&led`A)NYWP(|gAS$5;{rIG#yHbL@_8lxb`A!Bz8Z>DaMSO<d7_0UB`lySa##sJ
zaq&}p=#8@~*o_!ncNJz4EccxIkup=>2$TEUc@z-I%2<4d>3riPPk5;xd++HSZjtc$
zvnF}6$NZY}jwWEFa87%JLf^rEX3CfzW*xNmlKzIgIUUzRPi!JHGYAAchKsZ1G9B^i
zz}iB4tFQD5ns9RF=lEXC>4K!QQ!gPb@v5&R&%nT@1@&!xb9>KU$ss|N@YV&jZTN6c
zd+kC?M&;8VV$GQO5&jcWO__ZT{W}(PKRS32!4r7&`>FjS8=_T>nckLws01W^czqNt
z$<!pRK*E0A`zVntdArmuF{YPU4|W+JXsj_<)=7Ex21yst-))$4#L&#t3_i7(ngL(>
zwk`7mQ4UOJZb1HG=7y>Fymi|+@sK12G!C|rPP8WdEamOu*?9wnPS(kbMY<E=+`BQ5
z6pPaIdg##5y$exE0x(J>5T>3W8L?y?CE6Mk@I+ap_{7Rrblv_{d!wJ69REQ_FIO%~
z8JfTyIXY+L2=6ir$dRg@ko1;j4!*AXrKE1?EiEJshgg}>OLZutHRqZuwNjoz=nSHP
z?{BC;5*E=6UPNkuzAVxy>)=(;<jv&A+Xd5pkpy)K4hMlh^3Lv&BOEtX{U+j*T>AE5
z{4M+^@RL3W^54JSJ^RSaa`r)Z5*{PSJ*#v!T6w@9rTL1dnH_C3hd~8yD`DEfIurDE
zV%_|^)E5h-OcV^y{KUJPLuGUcmTsCip0)pIzkc8rq>z&nVlVA=Yao=&4A7*(e3Nf(
zvY{1=oB$JCAz80A=ILh|bcQCaBHzIK46bHK2B_)xXE8}vmX?At3O1%P$v%mVqV*#U
zt*VL26AMEvnW}2~UPq$EQj_82Sl;r<0Tsd549p0xk^>iU@7}iFeLOjEc~yXgM+^Al
zgB5}h8EgubmmwA=bBwNGQ8*?<edPm{f*2lbGA)3U7-{vqE>t(I#k?v?tNcx2#LEF+
ze2}L3ox7zB{OGy!xJD)Hiw{*s;JrmnaUF|NQ#@ZEY$$`TNn&YxmN6fK_IzN2>YdX#
z6AjPJJg52pqCwZl;BC$mc%FxK@h1v7=24Jz;1>IjEdTQVqb7Ytd{tmAR=E5iJssKy
zExT9b%)hSvzuu@Ev%+q{C)wY^JV`Q+E+nzcT@AI_RE3Y^&O}B2s>6u@>u0@uLyVi`
zQE-2X(|iz~^Ad9xT)G8*P*zp6@aeyZNc;<yb%~pLnpY$dcTauBz{4iZ|LFWAl?QMS
z0aEr)?4R;}`Zd;m^-lm?e@pTWq4>g$?3N7}))y6hm!KM+eRk@ym?*}?&(nYJ!{|FO
zsmTJ`y%UfGPriZ9g>NVtQ=&78w`^h-6P^2-8>*{fI?WgA5=Ao8G?7p#Ph@7MP=1;o
zLjZ{D1-25($oY~kb6A}E6IKafWPlYFVd~3KqNV{z=sC;6^PL2upEvNhq{$pyDq_{o
z+ds8`f(UuUk17m|6QnQ$_ryPgs+2k+$S`?-=aE_Rias!Xr62Fyjd(@lx9{Z9Ol;?)
z`HHLj(li#G262VX2tjqTgHwt`Js2n87A%0nBig_G>#WceA5w{n4`|M(6DlLZPeEhM
z4oOSpvzP`dpE?73dZI)efE<p@kQ*8dft1q-)RRT^;IV;_C%U2!Jb@IFd(?%YqC}+;
zKTL74#A9%*92Cln73W;ZoGRjDFW+W8vxC&JYmX2a-E_fp{vrGQl<(mb@ur0DYARzJ
zO*&IRZ#M%cewWD$M(A5(8qaHEo4fl}Q8Pr&8b4tFvP;*yj6wPFe+f=~?X9Qd{5M56
z%#RF*F&nPxoHuET2HckqFE1=t2n2>n$lSekYU5i=&3UG+l7@TMN>5sy+TKprBGY|G
zJB6KY5edQoY74)8Tb<CmtO4=yuLn6%he@Nqd-IqM?&a9GLWaPboPX>9D(}*#-uu?G
zw|+wapNJR)05-X|IXSPhD$L^W@JCETSHdgWCuH4T@|N?Mvar7X2!9jS*9K+{a~0tE
zi`Oma%NT44*Gp)NIQgx-Gk&k1IeFu==(L3T&f-clmKE!0IGGg^GcNT)xK6*;InbWa
z$9}W(vJi9w3?j3JC}*t3p2;%RSX-#~XJk<~un@ZJg5Qqm_=*h+GK>3{CH%>hxx!gJ
z=XM(DtezVk$@@}CE7!=eioSlhdbEEuMXt&>vUC9^m*v&u^1&u@*>VZ4LVpl-p|<5>
ztZ?ApgTtZEZHT7weo|vHUs2vLSBDu8hc9la6;=E2{7scLEh@*AFNTFO*tOc^Sk7!}
zGNIW!(}~a@=WVX6Y0`OK@5sO!8=SMs<T+MvsSj{md@K>3*#<dgf;kLraN*=&A)&BN
zzjf(LUY~VI0;JQnxsA~l4*VZ!0(`<4{p|&p2P9<Zf>`aZ?_M2M^_6{%R<#(^krcRm
z*9)UY^ncd)FxS_%?u#H5%-r8nUXk~U9QM_uqAmS#9!2)G)(VEb=kGN;!Ih6tT-iYV
zg#Eo41HXkn&w37O$w@tc!=j-**ho;L6UB4}p3LS_)A3#Hv$mWYcvbQdjEZ0HK7CXa
z*3wbY;G?60<(*MccFw|dq^`f3$H{8Ma-vz8EH+0JZCJ2L)=hsh*x%wBKZ@23&)u5G
zY%=7RWHnWpcUzP+)%;E?*;o^{;0r^IB`r+{OI`D6gC!fJgQYUoFb}3dnGIju41;Cr
z&+|43R&AIcnvaksvh#;H%WW@MB<F7`<2aN^59tj)o{x>uH|K4c8{vlP;{ZW==+)(;
z70}*uR)ez?mN2=x(c*d93rgBF$Gjif^rFs$$Fn(`F@*jfHK{Yo4g^I^N13mIj<VI=
z)1z$nuSboktN-sbCmDXt7e}zHiuyoHtdb7DK(09aTIvL2>bL)A8<Nh6D^JzX{O^rS
zC*@T4&FN^#iBA6aLO1SgJ-ZMt>okYqYy-AV^AFH7XBDJnFDP*cynOqP9t}(f(+7I=
zcC|N~n0>3US^m@XINLxhbebagCubXcHC1_<E(BX0!6#Ug$ub*AZtDjBX*teHQk)et
zoOub(2&x)D4kyb?_>~r>F%=y)ozsY_;G~E<tBhwK)zRLzF5c2`Lw<5X)xTP|=0h~6
zMn|TMB=)SYotP9kb^Er_t`9vVa=#?G&%Cr?8lokW)zw4U%_J=twtpp9y@TNOu$<7;
zL~=H?Z^x=ASp9WnmWT>%E}Lb=2+e|4YL{x73wuGmg*}e;-^_!?zCE*?O>VTeViNqC
zn-4B`Ax#HIOhQtnHIrm;D*o$BZ_y^Ce%%YqOXw3!B_kZSiup!7iaJTYL5LePT+QJ=
zl6rpm3YY@*jxLfQqc#C=RBK{^RQS6jU#052++DDB{k!!Q8n{R~UFxRK`A>8gdW7kM
z=j2Oj{&f~Q-00It2}jk5tL~u5KhjOOL!2(H+@(q2Fzz@9ONzvcI8p|F9xEj>l*u&o
zPOM1=hs$E3pkXeRK@S+bxPALzTSL9ZE9FVkfMEj`4BAiW>TP#q$Jea|8OO&h!xA`-
z3kMw@!^iM5cmq>Q>ht=@c~v(Gw}zc!Z?uLz-TRIaq}Gl4QEQtMT9$@&2yKccV}N-z
zENd6;i*?F!dFRSW%qpn7p=(k4_(0*Vr>gVFfVBbs=XU=Hq(Nu`jT5#8_!{8uzVBZ5
z%&_{@pYe0(QF>-r>zrYFVFM(VfTn_>oKi0r7qO2p9S}|kd;KWa?$tqZA`hn1`;ZVG
zeB2i^xshQx;u91e#pn6BU_$n<YtET6D^=;^n@&hoF)JD!7?D+3uV6F%Iv)za8YKDF
zw`EM3)5|n8h|+Qudeks9oo}oQrsi1bAXYh5G}BE<GpuT@J(Vr}`><uHW-#AiTG6U?
z9A+h+=i!o;L?96J*SExR?PHwojn!YewL3_@;=bCyQM-f8yR__kvV)RLXqQSLItPcG
ze@VPz@{LP%APxEL-@|zHlTby3L|H_puG=p=|LT@%|NafDb4*=hX!pT5XljHTiE>@N
zC0XS6b*j8!ram!Rf3?5vZ`I;BTZP`F^v2m}^v2aT{(9+~s6_NxhflJ1F_$sNK%Zk*
ztVm*y3)qi4yqXvUtC2!&nC93e)2G3<c@@SDOaWS(mz;Gv>IFP^FMUO!gg7}}4zC}R
zK8+|q3&DN12r?(V?@qP{uiSQ0Awd@PJL+0iwW7{$l8{u4wpQWlrg53)<#%2hj5U4i
zBQWYe`6&?x`5?MOSHJyTtc2upQx%MPVn3l(jts|RTQ<Xs3%1uv5e4;*{R2j9U$e}j
zNaW+1Aac^^2xdQp^DUDSJR;Z>h}J~V10NQlLxmUIxh)vX%DljdVs8QWj$MPn-G})*
z!p||g=u{<CbeB&i0arck=iF&|Y#gR#Nm22^viS+XS}4hu#}GGv2zh<TiJe*N#2Bsb
zdyBOT3>5JWxyTga78&d$7&q<Gv7znWMhydYDPHvWd9WC8=v)8N)FKF)k;@^>#a5~o
zr;Lv0rJ(#a3mSY5C(mhyA&1V}c<DPNxBze3jP+XH;shmKy)M`uIkUEbXQ$OPu4d!f
zB~j8hp(7Ui<yjWJ$dc$H_g6x=%hoy5D;O@&4xO>Rv)ZeDu^nyR%r%`&@eAX|t0h#Y
zKKdwz`4P(xe~d$w>A5`E?AndnI33M%%3plAz8-Oxopt?-p?O>5D<?VVaN5MOkyY;{
z7oz!mz72%<ml^dhoN>FCIRv)3bl;i?&9~qTs&=<v`2Z><w&S90uvZYprFEv>^6*83
z1Rf!iK|h`#V@nRJw;qka();YUQB5_W=vyhll6TTcdSti|FUN)9%fW7<vHu{>=g)rR
zqW5z4$Nw8?Wr|v+rO2o%AE?5Mx=l_KxE<Rrxd?g_kGF-J%TNnBxJ)J=9ABBJ?12eY
z)aG<w{Eo98vUrmH0NS4(t*97FIW|5CHtuCMF&7j6cFV#j%}Y<x&pFYgB>`(*lmIT2
zl=y6SFevoU)HGm+MZl>q5F!4qL)A>vLomScY&!`XOqXP>?!=$g>~AJB=m1Ri`}5^5
z{94mqc`5AIB_HSGWgaCeb$wZ7CBJB~u0NE_u+fn{1iS-GJ+PM~=$3U}QzKyjdPBS8
zbIQ?8@76Bg9xJ5rLIUX{7Y)n1_x=-aE*sND&e}Z332|%5h5SNR4(kXLaJXm@Od5v1
zYzZrpB*uHP0OWCH28*nT<8cCG^gs3-8A6<aF|1I^+JXGWeE%8+|M#D1tl+1?Cwqyx
z0PxT9uoEko1YliEPcmDo=Act{w+BsQ*r4O+xb;=jrQw3kvfJJdBiOMy+|dE<Xjw<Y
z#*Nba%;xlIF3sc>0hTqF_Ert9S(l2MA~<Db*{rT_ukYHvUDf}iYVHR=plOdjn#`z@
zj>_We*8v#z4f^iAPlS<dtysugp~87?MrUwqz<gM_aGABh>fKOgif#FzCUH$!0`3Rb
zx*(n!x2+evc#LXl5&0~3e$317?Dn_wm`k9)?c6cP@cfzx-OBK~jeBD11}Y#g?e|&t
zM=-tfj=w-0$vVVmQ#e%gl$<o+J#$S%FB3@jNr(m@j<yI%n_hQWzyItz<L`9!$kA)(
z=3B}JuDA#Nw~4=?YpbpVv+MYK;PMC=m5Wz)3DAwC9y19Jwbi;hv>>>=r=jhv`s0|z
zODaaScT{PxpqTc0jMZJse5th6Mf=@xiq$THes^v!D(0B?rm~Wk1IP>Jr7@|eXV32N
z8o>=#u0!5{Eit>7Jlr$-3T;fSQAUOVN!+LA)xEo6Qro{j=+h*D6p!Z-o35IFet6o2
z1gq~GYY!7MZ}?yFgy@sdlTU%6cLi&I_X0SR6~Qt?geea2eIlWKl{1~L1AQ^JBSt1N
zRmLs(pf1Q6B}&R{7?XX~PWEkTHEb;Ho}lL4JZjbkq4!CG=UKK4Xht>p7B*boB?8+W
zWLA*;l_KH4x)qH<!$OIJOl){&#`QC{Biv<36lVC`_=IlX)>tR9oUCD-O47jE$3m0g
ze0}oFEeL14F6(Jo)l~0(hfO9YSAw^_rVhOAgMw9P<B&<?sYqH6Y9HA;Z#WN_YI^Ho
z7a5{`8=_%)wZhkA$>7}Hj#XNV0psJK_ZrZ9-b}r7?irNhqPfMKoq^>nu`TY5ep=@_
zb7R6${sG<2rmJ}tlQLrQL?i%!cci6l<!W93YAVBlSEZwhvZ`2c#y&%FBZ8#mA8Ja?
z|Jn2E6};8a!6KxJe0?q8G2R+mLej6dwX-})KOr`zaq0eoKE3-u^6--`K;|FP@b!R6
zSw@8UhbMJ>o9kLS+CpvccboIy*<VM&E?h;f6OJR|_qI5nGyfafLp>3A+ND%oPTN2b
z9tQ}*DiI*HQY%&6@=}nD69X><ij+blMd3#fig-hdvxyCf9od^0o_mR^7pQuKUZhv(
z8LGbY^Lh(}(o$$v@qV72`R4QN>=Mxvqd*2_zb*Qxu|X5`L*pEc8;>;}p_c~Nc$B7%
zPa2QW3*)=Sd793>)_BseMn7v@plA6<8c)$gepTaX8qdE2voSh>w+|{yiVd2fZyM*Q
zV2o)zLT`-c8jsSf@m}LGS~tFEoTu5`Q;jEcN4Z^%3$#4;RpTj|$-mNgnhN>1v_T>D
z=z=2hsZAb9Vl+oC&0}7q62=NGDCFSJXp;oR$~VAU1D-xC0cJrKEH#B~GVf$|Xc?%E
z6|T4{SmV?LPZv?N5%w-3zwJpj=gzamQfXyjvE-E4rilG^z#6VE0#{h97Pz)~)7e>O
zb&m(E;_{~Gf~^kf15h8)F%oS<IMw-qI6AIu1MXv`O?~RXE5fU2_d6V*icbh2Je?zW
z2qoQCg(xfWH(3{Ma#h1XR>P<**rHuxWp<f$;WEoVu-p=L2#-i@MX1W>K$k<SKoX;c
zxIX3(<@MD!q{Sa7uO(~&9f~OS!+<%qv&y7w@xBZ_KR^Koj=ePhP*wM9C+i*!mGZ1n
zqK1tY;o$b@6!SUWv;A2|p8svU;XG&Bix2r+&u1ZHf=sCzrYaPxof+WSgymNcG1>t`
zSM|{EwM`F<30t~b@laF)s0Ea$ny1m3M+dX3Di!NYec-0b&6FCUqHDO~8114WLVfKO
z^VSeUTI<_;${tcSoR>k>0DoWg#0j3M?W!JJWvtMi!V;&(R68P}r%XkR7;NcI^<ayU
zD^^^;DqMu}DwO`|I<RiN57^vVk|cJQOYfAQ+c<vf^LO15I_3-}o>{Uu%S?Rfv3(JX
zXds#_J<x22cg59FwoUWE^W$u(5w>K)Bf((k_^t?I1oeZah?w*QYt**bZchZ6^H%0y
zv1`ZC&d78u;{)z@_(?}FrGv9-Wsh-LHa#hO<zg{*BflqOJN7%N;Nor-)p}5g|3>(r
z`|~H>^lqtm+HI88gBw*8#_zAT-BR4$>N<0i$xJH1SSVJcxM#cB-9UD;q$zE2C|cZ#
zyA*dT?(W*+yz;`I0NKo!H|8O~nVWOIbI#oFju~az*T1WcHUD$bHS%LdnbBsFnQW$*
zsb-p)Zf2O7W|o<4=9sz0F>Wh2XY$4~1>>8*6wN#{-z+c-&0<EGwPua^o6%;2*~l2i
zGLA0B)6E1nVIrHd8Jn{OTe1~fvklv_9ow@5JF*iyvkSYj8@sayd$JdMGl|JeVJg#@
z&J1QUi`mR!E)Fi19C<tn_yiQqKg?r33s}fL?8|<HM8qVdl-Qp|9KeBQ9S3nRhp?DK
zIgG<Of+ZZuQ5?-N9LsSW&k3B!Nu10noJyG<meNawKKdD;%4wWVjX{Q}Gt3z@SVoiO
zoXHASvWl}fn{zmq^EjUixR8rj&Ba{8rCi44T)`Ty<SMS_8m{F!uIC1B<R)%rEw^wh
zw{bgna3^<hH}`Na_i;ZD@E{NIFza}PM|q6Ld4eZ-il=#oXL*k2&3azoMPA}%USU12
z@*1!625<5fZ}SfC@*eN=0Uz=aAM**H@)@7=1z++NU-J#$@*Usv13&T;8`#Lt{KBvN
z#_#;WpZwLee5mR;p)+Qnr`%{i<Q&`Gtk!xfOY4I@*-DaREIA{zPR?u7bxIknpD|~}
zg4kIPGUnaxa-&gSQLFSdC$#Sx)&7BI_Gd8^BQebwI-<nGoT#`k786l<k@6x}R8x_f
zic~L>PSnZMP_gR8su$-)>BQ2BHC$X2r5j5(R)4Yji&ZC9oka18;uFQC>Oal;u#PL{
z$5#f2o2!;pnp(&bTCZ0uOdM|1hwF`IwLVm?jV%xL*DBdxRvK2CHYY08dSaowIZ$a-
z`sxj3wzhm(b+B5?OwxK*(YzG%Qp^{`P)x;aTI(s^Q@p1RJmq=5n7uVy(0W1Zg+MHd
zojBDgsE+T5s^_bouX?_8ed+qr@imt(Jzsi(^aAMx>LXAef#wY&QF%q>$=z1&wnf#E
z%WYBda=Q&xCsdtKbwcUL^;WL8a=i_u6KUQ^^G4d?NIM)!SEs=06xb;4>a8~i%gur8
zSuVG7x0SoC+->D<D|cJD+sfTG(L9OfNz_-Oz7qA7Xg?CwOVnSYx;iCRr^F_zlc<hP
zi%nH0m0l{nRC=lOQt74AOEpKD&5_dy$?1gT<6!)flH)q9Yvd-^xv`y_{K!o^)|2Nv
z-*)#^Yqd&mPkrUMMXiI{GGDV%E%z@U&H}VKUhC7;Uhf^!bJm0xXMzPM+ce+J;(eQ~
z7u9^|WiKO?c|(~u3_P(Q`eGm!#ZZ)9kiCqssQjYxWu7qVJWEez3M1*sRAH=meKJFt
zCd^EeI!;0K#Xu~Iow!6y#ZpGs5nWMwuJl~#xzck(vE4^nDkWknmi`0Ub!g%M0RRF2
i{{RmF000310002YJ)+M50002S`7%!c0002dw|tVTE!i{x

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_AMS-Regular.woff2 b/source/fonts/KaTeX_AMS-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..ea81079c4e2ec7160db9fe41ffa1ab70098f3d45
GIT binary patch
literal 33188
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Caligraphic-Bold.eot b/source/fonts/KaTeX_Caligraphic-Bold.eot
new file mode 100644
index 0000000000000000000000000000000000000000..1a0db0c568e4697d56785a687649e98e9bacda7b
GIT binary patch
literal 19836
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Caligraphic-Bold.ttf b/source/fonts/KaTeX_Caligraphic-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..b94907dad11e545adaf8fb1aaf54c032b7de1796
GIT binary patch
literal 19588
zcmch92Y4jeUFUnRa&^v0-Kx%#Iw-VqY~@iJX|gm?8c7p&XSABIGqd&@FN<x~V|#5d
zHhYA#*#i!T&)3=op97pt@^OwB1D^rI*}&fUz+itzxP#-Y`@O1`W_EVg3%>hqdersm
z)&Et!`iI{?yeAP#2yv08h(NZdrj9Ob{Pm$12${cx-iE~^tsPT4YaT-A9h|SOUtQb&
z`>($62qEkl^qpV7b<-eU(SMo{w;R`6E^J@C`c?lQeTNX?TZGtt{Nmb;ZS>>X{3?#>
z#Vb!-_@W~gN7r+NR8C*oT-#8-JotWG`zQQ#UqXla72zGYcPGv>m#*HtbNwq4o=v}s
z^V*fi*4KPHvKQkAaengZ+MR7WL;n}9FXP<UTD!XW^M}6tyM&DYEg{Mmw;#K4^LLJ?
z{)Ujb-@x^s*uK8G{p>Se{|sLEO*p?x_`BohFRy*E>6~lu??|KYP4tj2|NAHZ&E9eM
zrQMP=BOCyoN*M3OKa3F$?3Tz$>HO|X-~F;QW8TTSW_=gUo+7yczVd&JBuJUuM(a)H
zT+ze+1N&tnp>Y>SLf&p2>DNg+HJ_vMarpNXA>VeBZ~c{dg0H0ulN-b!#<zC`W4D)_
z#N57O5c1Bm=9Ab*Kw{wO|42Ic2)cl;f5cNpNEts%_^IHh4L=5c`s(d!{n#e_E0Sm5
zB28?Q_=P8lpPeIFp-epNgQP?FBb-0I`;uTIUBX4uB=||Qbe`md5A1$ZxJyQa7L552
zxg-1u=srdw>`f%cKDYb#>>DH^{s@T(?WC9e50Vi&zzfWYLQ1rV`EBr-nw;YA&|vb8
zkkjY^r*STlDvowj0wUh7kDMg$|Mu?gE_w~pMn-Y=zj69!yT7~ph23Y|7WZ*+?;n-%
zr22`;-91U}6IhSmJLN}Fk`-0cZFWb!*XeS5ygq**7z#(Cv4(h}(MYD!nQSh9|FHiL
z?WXVZ88uQgYUJ4R<ceX;eT+B{&DG>1CzorTv0Bs0>ILKOvE>@eu6<kuqu1Bd=VQra
zjjYtjczWUmuy1^ItW=}Lnz4GJRAWVB!>E0FsV3%5zR*PV@yYec!>5*$>16EgvQb-F
zT29ugD>0+i%UiuGE5?pRw6;-eLRbCFsI~FyZJhGcOUni(ad*wA=}XJ2=rQ;;owvGq
zt9v!Jy0WqotI@*BO1egtmN!>cN;RQqOd2&YyM_r#<4emmDLqz`(_@(aN{z0TYGN^s
zc^Ml!()lriU$Gv}zj1wXy(Y9I(LZk7HSXfxJ8e=HuXSj7bt$%Xcx5@gf~(ad%eWNd
zFI9hXsU{U`%6Q=g7`Mq98K>#7G+3M-TdT427ix4J_peDUrJ7PS_#|!P>mL)zd5~b5
z)zuYFvN~Z-QZ2rq*vR<gSW9xB*;?`C%-5~E&;q6~jyGO4Chw-#xFAeUkr?M@&4^)=
zd$X(w+4S0k^$6Rm46kJ{3WN7w?fyY_t~2Se7i_vPxtxrplPfLBQq57^VQjLtu{Kev
zIg5A!!>HNEXZd@fkse#AIr!OOoH=k-s=06*x5*L%99YM+YtHdi<L;_abAoB5n!7l6
zba_YIm{`fw9GmGorJAQWcW8O;h}9WOqTgrsdy6~7HGXV)$K`_j*2ZeC0#{O~?%0l<
ze>w0~qd`bQ$Sy7KaLom?#_mGA{IM;`G=}Z9W7c&(1iH_!uHa3kG5_gR2=Qg2dKCfg
z5aLUN#p5+H`~s!a)COOX><~72bh+kAj~SCS8<bMVgIC9lRXqNe+-^#oWNhs2>W)_~
z)E+OyQecxG@8&C%YJuVo<;NiS%#Wesj=+!M;*Q9Vk>ZZTkI~|e%#X3+j>3-(#T}I&
z<Ha3~ADfFtxkk^FYAt5tTB%kr8`n#<M3K}Sh3{jIjhJHs_cky`eoSJH{FuTV`7w<-
z@?!>b<i{-L$d5V9kstGzBR@7_j{I0G8iS?@l!{=Dd({}{Y~u1<!?9N6`c^L1N`+bp
zmedL*o`$wP)RfX|y=e|(-;)BWRI0V@i-!hltt~qe4NNWrhPV*g@8`@bFLxA;E_1#W
z(9y|PS~P&-q0{62B>0OadQS|edv`i$0B_WZ_s4`EI%E}!z1CZ*brs8@!BVaJwMe0a
z>mcueNJubil#OX_ykO<b-MiE2X@JEtU>&dsi|(d0;K%cOfigiD2>zQSHEq1GdAFQ4
zjKRCOSKqzMM%lVYO~gGxWz<%=y;lz{zsL;1h`q>iLUd(}W1tE&#q;pQ^c1WQ(tNoo
z!R~3n0(&;Tx{<C4<7*p$AvV4iLwj`vw)^0iHB1S>oSs_ijivE~DZCdB=2LLLhdcxm
z;b18O0Kj_*3I%9?U?#ZZ8U|<0N#GlvhNIlQXF((SIS&jxUCPyYkRAkU2F&i73IjKc
zsq{2|7?;+d$uj-|b&isw%VlE_zLC$k-ie#tW4WBg*$gi2dtXaXuT-wpbX_u-W2rV&
zpTYQ^XjZv<e()9dL^)hc8)eS5DFE}}N_nSD{V>3h{ccF}UUzlB+oawb`ZAi)Vy(BZ
zcjaX_9V^!Q3U{GHTv_hIEMM_ph^1UB<N4zzySM`GahEGs8dgz;kyvw_0B8Wi_ce9z
zeP3G@ryr&m-;efjzHxjRO!vl;_sKiCQlH}_XT}~=r}+CPIp_Hl>+iAu%F}q|fMuNU
z_OL@=xz-6=Jn$<0Gr(Nx_tm;UGh3|n;4sIzHVM8OQ*dj0e3~zEb*#;StqVnDauaAA
zM1%6iV(|rP_AH@c_8j6glel!4)9}U-PQx2VISp?d<20ja9OpE=ae~wE#xkejjTKHa
zj>bt&!yBhK4R4(0G`w+!(@ddpmecUYIZneHtDJ^6);P@=8s|9;Z>)0~-q_$Yys=rV
z_3yL!0zat@qx+)S8bRxlsZZ#x;^cC%Hn30q2tP5YA2nN?`ij}&q*sfz!F|##eqxe7
zX0|x#w%OvO*NU~FebVdv#3a38wm9icv&BgtFTSXWY%h2kE7a7@nvhw#v*&V3NKZdT
ze(Nv-75XfY*$Th6cZfU&7LXR+c+n<O)oOW|*;2+nfn13a4ZZ5vCrH(53uIy^L!UW>
z=<=E69bsc)C&$k|p*}^ZSbb(4Ar?pwM6bN)5UIW8V|4e;HSrzr785(t#)Rpb9{hS2
zc^BCvo9t7&-(~@1lJ%oW79`f^3i&*J9rLoc3oXJghz;WN(uQ1CMCD0!Q2o00hx$it
ze`tT&k#qdH^Lf`vx9<Ki&#ZUKH|YDH{^tVM1K$k(ROko79g#cuygl;%2+v`enZN!P
zo+uE7sJ|qOl(4o!#Z&R*E1q=6dp9~dSm1yEWd}tFL&}(&n|>a(h62e{lbJXZ7@Y-A
zm_XS&5d?Ay_jHo^hNf<}D2EGTD%aK7-P1ilJ3_%wFyI$*>6GH6ieC=+c~3_Vu6A|i
zy2_OP)IZ)_JQj}l+qFm9vd_l`+QN2?QpP0bzjjKDQL1^ipS*O#EmP-s--Rb>Djc>Y
zi(;$iKs4oSYjdWe2RyA}G09m*$r8T)ntp+FkwUe}MPdGYqVzg0N{mQrBJM08`4!y4
z{IRZEnN*J~M+?3|+TGdR(cM$Q%qp04oLb+0Ii1R-_}38a<S*3KnU<B5lNM;1E>V#x
zEd0h9yW$qv;Gn20&fvA<+aaf769xyUo)z3-HLDBsX<3m4QKUIp7k~BBO!mnhJ7ac_
z91z)$zgG|_6*X)A6$nQHuP4a6e<?$mNN4A2j-}-)UQZTfa*2qHi5KunGNJN1_|K%%
zM3UUnd~B}f2Vu%06t}+zWi@>tku0*Uhuv>wrRo|UEH)<_W6?-B>sI7o!OI0}afpi*
zZ-tMOx+pl;-7{=5Eo614Q~5Hu1wju}F6%s00NFi8y{9wj%s(?|ztolwM8e%^LF@>H
z-tV-jilF;EqDC7Tlf}<{UQk3yytdKmN-h~KManeVl!`X^`l!8}>1j-R+<qrzVVjLo
zXT+m0NmYJQk_CuY_XI_8a>#HcGlM}*Va(x=a@}a#EinglW04%J&IPF?r>Q8gSyZ!R
zg~;1PkVHuU<0x!`D(hgeB*@ab$;cB#6xk`lM7FrNFf}nU)KzKDCmVBq6>RZwUYM-m
zEHGbEkzLf%eeehBljjzJYXQHD%KQS?G|m;y7hL2_svAW*wbP!T$cxTPvkQ*~?M7n2
z?mE^KE*e{-$9~X8TXLCV+^&d%mhYPMsUb(i-I@~>su?MJvqw#~l;{(_wsccd%H!%9
zZ!bmS?JdnwQ49>GS|=)*=D9K1mMND~EdiD5l5a57GuP;`Nlfy4WvG+8H`LUMDhMOS
z?l4Qx-$O-cm{hAn15{)lXeyh9+KKGC41lBxQC4-8LAOsy$j;n!zQ3Q4{^9;1467tN
zbIJZ>w@r=}LS?#VLi~kIeh?EPOoQ7qIlm$oXn-3ZSPH%YH+&vh3H^aCYEoPKTiz@}
z#3DT;3a}@q92Iby%Zs`$=5x8cU{f64lbN;1<d4p7{hFxyG^fno#6T1Zs`Tv~uOQ^#
z{0%0xN$8itUI(LOm$DBZGb>n>^g%}?=*R+DuddoDRh?93BUF*|R1(EmjaMqKLt#W&
z;U*@@qO^rB%2c`zmdOf}*P%9obOKf>oPtgXi<HdG3=j78w3d=aEaLOnG_pV!blG2^
z9Ra*B|9~gyfCWAYL@fN=)EKbARHX#8iL1<>DVbW8w@|6lZC#_Ebut#7z3TR5y#iG_
z#s+#ihTe1S)KEE}9%J@|!~{*uwFTu)x6AHrJ(gEBR|s;aRPs$9T|DTdUx>Px6rFW4
z@wSwRL{~>QZw#~zCY#h@D3-<qK@}p@k&GW(4QKmol1=#V>0^uva;!nb%eTQ#IN6Vp
z7BWt{s}-Hf63|zKJ&6?7g{q%G)^R4u6jmk6+@3ICzAqcd=bO?Bw1no;5IOkaqIEbi
zQO4p1-oCCF+}4y_o)cOQrP9$20OH(%M|qE5^xKLPo*={>s<f;Q^iOn^rw;U98$Iw=
zPfod(8O*4GY&hsB%Ay|b6znYSalnEUc1RanjN&C1OT<U|FDz_CgPFNMd3O1Noklkk
znQScoJ3gj4iWkN*UVEO3Zl^PHV-~hTNfmlire7odq`%tJP6gIL@x|X>yiVXQp?Uxo
zdJT5P$O&LQe|f?dd%MfUTsj&)FUf&|&mZc5ltZTWa~^Qj@b3eN`GN(r)6$q+9$wZ$
z-RCQ6N}}(1GjlL@=uoc?KPP2E;fzG3<=9Y4eDqmK)qrn)4zL+uq&px<^s@@^lClOb
z6VIHTd%9_;L-ohwK_&F=w-u+dR1o{Z0u)3QzbUFPBFNB^@q0*~^pIInt`;Ub({`Zf
zy?8*R_X2{x-rm{1*<wo~lH%`|HTAmg761WU#ktV9N5Ov+9Q~mL6*_b9vZiPo;aa+d
zj&5KF=*zT~ruc;*b3SvWxir1tiA@9A!ij`EQs{Mx%qySWT2j@{!8_x<r@d06dvMw<
z=WYzmH0uZ4&AP5ci}Sy-c2)PRj5eh@^MdF|mO6Udyn#lA(WBFc+hiuh&r-F$la(B{
zc)(^f+2!<i&zD-2Ttv-lAxVxFhX#i@KDO<a8EghM@_F)atF|F8lO>&kpYYizvceTZ
z1sH|ThRTajd8Qy{BCAk+jto2mfzytIGR-NWtw5AlC#^QWf=VU=l?4twgq`4;b=rKw
z5`1@nlCf%Mds8|Ra@b^vw9z&dh!ZkHGtO#-;|bhO7Z_^dk0}@Khad@VXB>hR*~cN6
z>me6Mf(>wam>^W9-<e&3DWyWW{#@8EP$`=C#m){I4K~MUQ(Hx_i$-Ljx%X%KL@AsL
zxPgQS>!Q(^KVma<c;58yjEp9-*?2Z+&qQVy-AdXaqgK<CE9S?&ek%KiPQ3T84#(I<
z>T}xlls-GB=MpyEW=!bCkyw~73^0=4{gUv<?AwT!4wIj$>M7{#64hXNbG1AeTOop|
z!BuX{Kxj#2(l(J4RZ_NyMpUM$=Lyvj9+Go#@5(8nC{ATQR_)sxMP!w!GQ<KKU;z4i
zW95gBU8%+>nVA|H>g#DM7g`$Q0l&kpsbqpq*!H;(26jNpEjS;c6&L~7&Mm-Vx_2)=
z=&6_@0P}e;l~3nQIneF_)&<kg<+~L5*`|?*$Dz3-F&~y#Ve?0COL0*jjx!su9=02B
zdF+ZNhKmuKyA+>HCHtIOSpJb8(QIc1b2RLY&7DO0LtTg42TIWqkDUg64b=97AOBs|
zu4{p2nL@5Y!&Be=)bwJ=VGmJNkH&qC2x;6K8ESXlX%5q}DxG<=nvq=5cUduP6a2uR
zv0sIvKUej41BiO_h!>{e296ut1=VHK3a*M0<8G8lB7sO$LDht93Rf(hf{&0Kb3|2z
zQwk8p30tXlJvf3;iO~Ilz}JV3TdBHN&z?DT<WNh#(A<#n>hLpJAPf)d%{0YQ=$x6M
zm>gEn&pSsr*l;2)ABYF`FwFRc3XEef!n2HHFQ&oO3ap0>TwYRJlwh{OnS5i~(Rwh}
zxz^B7@rCl)275W$6cU7Bb2QXuf2-#8gltSygh$`t_BAC2sPs0Qc2j1Z{)WqMQG+ub
zaYh5hF55`&)4x7BDSKTxWEU+_J(kP_vM+33S#ESUFt6%gxb(pfh3x@vLqeGl6tA#O
z5h<N=G3rWGPc6t|^Od=gXz-|$#vF<uxB^8X!~K?j_gm})`xGL)fogASGZT<;AmBxe
zC2*I`1jxnAoS^)WB$$nGdJdd+()p%BwAAC~`BV13IA#yi0qGWwfNMzocoYo0ucL>B
zDcpB+D`3qrUvvNJdBuDAmf)Is$F~?J?+_ENj4Wkr-m$1E>Qsv=EWbW{z|BTmt3&PW
zpY+*6<?N6~pT3gt-@f>%0Hunz?DP3%ouMRfUGcO=WLIYT#OwUNNBf$(I!wIqV=eM=
ztmAe7F<zXjg@F;as0~3N4`bMD%sP{-vlWXV0Y33`i^BlGf+2|E2(Exlbqr78Hee@{
zBxGnvEF_cI<k$nWRUTQtDj9bQa|#tjw>S?B$L4_QP){c&+a7$TIj$nLu5k7a(-Fo&
z7<nkPkAIm;YVy{^kzhsS*v&s_+L=Wdoe!XmxSDJ4qb@=3HAHR2L32mEvM4(GqjoXG
z9L<I9mDkgWXk?nvN~vf2gMXl}u$J%sljLD)cukW&ace$eS8TEp$f?Z#jj!1>pV#k@
z{b`AL1-)2kiIh}Iy??NH=<LiEg6ALpcU}nPzkS`$<|@l5#ek35-S4m)(6{5{Q1xI8
z4xt23&<~agvp{n$2B;nKYMzIQGSpy;aBiB|OF3=>9eA|?I%tA*KAXqChJICUDERJq
zusW88Ox3gO+)6<$HwNsrw9+zn9#BACId6LQF6@V#-Cu1?50>6KA*(bz5(w)WGSO<2
zYzy1m(R^Pd9Pk}%35r^K)RkB$CRKX8uemGX_azdsc;~wg+ES(X4KaF4q#M3craIg@
zs-U8wdF(!in(kGYQ)(2EFbBf<23UhvR=sHrnAnjkiCU>G+Tho{%;S!CF4(BjxZ-g?
zdK7Uq_~hCBQ{j2&@e<YNYHp~XGmn6C0GzT@l?YJedWTZ)fG%^gJUGk^nfpO3+)MI0
z(4U&&2v~}JB&PtmPL&5HQIMDR$&n%}@+Iu4P-IC#8Rb<5<uIu5;2?ks4}g&vS)=cN
zPPOf|sa4esnfcs^x`_H()jvNoJ~lei*W1~iZVU(gKCg!OvIpUCM?!@AH1&Lhrp?^j
z0&^3!d2VGI3=cgEj7QkXps6L0H!_gAG4asUb2!7JHpFZ(=y$yNNLGB#*&fmzc2B<l
zpzx3X<Z}j?I@ajb^wq*L6?{1wa8k`Z9rsEf*DIOEM>{2V(AkyJGLc@Cu>^i6Ni3cE
z#TVSpfUerS(Qt}aewf=K$icG2%MXfZUwl;7z3ym}JM>s@>lES^Tee;s>eziJdmn7)
z1o>puNvK9bU~3nJkA_Fp!1xwKHH>JNz)}1+t2!d8L=qJd&<N+icIA{x6~#fgd_AV9
z%n>}odF>(9cI*E4s3lPlB_JMZQ+N*i_=AsusGNrulTEo)v?ZI*=yJS3JIibj{!R2Z
zgCCyenP>)MttSRNCbC310&jy_K-~|c)MTZBrnvTykGb5bP~dR;ftYq|CKVrUu+1c6
z4VtmkKe=GbPmcu@-RtWK+x>mRNjaI33RlZ#wglG`=Pz8h>FV)#SoIeJ1L2T2u29zD
zL@6ZMwv{&KH$2(1@iOyBk2G9)OR-|7HbIazm(SP0L`{&AE6!;0@v|}S`Je6TlWD|n
zcml<8Fz$8wl0j~&V2*$Hw}lsAtJ~BuS1W_-C@<RR1xjovEU;E8N_`ZX2Ah4z1r--y
zyA2rDPHb>LHnMH!vLYzkL0=R}+(y!YN(@wWgNQ0_C7**{Q3vHx=FjWIsSPzy8?jyI
zV^P6)$Vgchd6i3sir^NDvFgC94kM~4i>mzc2k#B%g-RG{wULr5kF1?rIkvbkIo8=x
zE;eNwq5-e2fDzm98U^3I$O>{c>m2?8UI*hTZQV`-=z$`bJshm}N=IF0a0ZRxMr(ec
zH)hZVyQWYT6U)tTqZ4&DUQ=+=7MSCQudq-l=7TQ@D_6IK$*AK%ENm;xxLnP;OO`z2
z(V)=3^hDAX(simJ=1`sfBdc~J=8){}ay}rqld(`=pKBna#iC4fDzw<$9dpmnPkFWA
z;srPfe>9Rma2iqc?>7aSy<)?qzgRlb(nOgOO8L{3eo?i1oe^di&RvWMsJ&#*Rt=lS
zo^;F2hYlTJa1Oq91SHh%7@ZewtkBRLE0}t;`w~KjzknW1lQ&d#t^iGNlRVSmNS#;F
zAu_`KCXe2>pvH`zg1>ak0U-qGRJ}}G%|1wpVkd$c%GU3vTd9V42075zUe0IJ$!OT4
zk!d=u?a9sZmi@H5pAJx-rtmT_&)UtnxN^^vLPlmSi+fiydju?7p>}VWDX#2+`6p>0
zQ|xbe(WyGR<5QC!JrFC7X%{bO#Y&VpR{Mg5U;i`F9*SkWqrLrwTuCb|AJxhUFZ~;j
zs0RJ*iKIYvRdM)J3T<fUzOu7~Xt7!F3TkeWCpS#Ay8|(sa`02{8nWwwCQY&IvTOHQ
z;RE334B4vcaU|{>$T&Z_v87;Q0AB=sJoMvHFua$vYC66Z#A)2R5X?P5wD0M_Y}04)
z>O7H_R;qe)OQf%<Im@eDJ$xNxAN!!mX2}bz<1n}9tvI(VzV2!GzMfmvQ=XChmbg3=
z_H-C}6Rn=sD}#N>9t3)xv1mwYm_By7t%v>4(@xdi5pmjrO1dfE;_(i@?!;nmashbg
zZmopgC<Voi0ogU`e@=R7O;=p85sw~9c_i;r?^L5xG#Tqns!&L!@ywYIk2F3y*y4=$
z`LRjQ#X~xv3GzK*41Os^&Xbku@fm~3^e`1jmMSP0GDVz)#>oPT726sWuo8kWPL{2L
zu^Gp)Q+!zlmB37zlG7)rr$&bg&FS-*^WmVbk`ztxTIv00VY+dyYh1bN3_~((mQ$@n
z!z>nYC(qT6E2HT%;AGOsL2`LM5K))87`0be?dd)rYSZ4L`Te@2uwcV@!e*N?8kFf`
zOo|rR2V;WoU8ke6GuW6b%-R@J8xFj4d60RftgoRrVe>MV&z`x_l2yEI^I@0AmyRM+
z>(E#NIhi~zXo9GE&u>2Si--N867wj|4}Ij~Ij1A^-8TmmZSXLYT!HT4pBqvGJ~^6P
zTI$fL!`<5~=q_D`0#BtIU3#MOj@38<5ZRyd)_qGea_w(}_p{{Zs?H>$tU<)g&}5az
z1iZA=jc^*-4ENbwoxypyYH<stYxo^_5S2<QkE$UERYmflp_YWDyjZpOpEVGrZxzPD
z$L|eYsYWO{Ff}nY(AV8nX>ZOMiExn2(pfIW(4M#~u>jh+H-{})s?OD)FANrV=FLAY
z%5&{T_<((vU<L?){gI%kC!98a$mwdE?|j#^APA^>w6x3Gv20L?MHPqL=^Jf|hU7%=
zlZ$zWypjtt_uHnmbl=fCt!_ur<53iE(B{va>TZAcsgWg_(zfP^Bhu{_d}7qFJ7Q};
zzfrPNKT?@!zgtlIPTQ%&$JCgGAGzHxNi*R61u{_`Jv9pmtpJb@qhNw$21~*ycyKUA
zg0qEn04jjpvLxStDRFK~l2e*rUmHwE8p~b<Ni?EYs{&M4S^mm+cmA=MWhEyv+e@2y
zuHu9}@edeQ51YEXOtY|Hm-n@DRmUfd5>hT#3`%M!<IrP+)d1GLCsR&M9G*#v^iuxr
zXZo3-24q(Q!cZ1%j>O<ckm&W6f<d3=lhcYGq<=AGt2&z<nkvcOHlwvD$(gCCafCx%
zs_4%hQi4z~|9ju}vr#cr*4*Fu`AJHTr+?trdST!hkFWaOKc4MwiQ9wJE2@g9F@Hk{
zYbMTA`@rizAd3HaSnISK$gqU)@XXa`J;As9^!rmPjeAt^bN8FOUlI=q2got9S+z~7
zOa{7O-2sY@oru*qAO_2t2!07Nc@#yFexv%n%5{@tb%I|92*D5@Mu64MV@DU}h6V~P
z*>ohyS37&4miNgbfkh<ivj-}Wm$f`$@|P=XzO!Dh=ZwFP^`-}e6f3Q%W|!_s4tS~N
z8fa8dTohUVsitVuNon77K3Q67ZVG3-vSSiKfIU_1g6>geDs2;GXLrlUF;Pg44ouse
zsboCtwcFm7vWG9d_=&J1kVf&@A%5gPohX&DNGE*bYp<_NG`h3tDFms_HmTvtm%dzt
zE2J#aCJ4UqrQ2WA-OqpMy?!C!kH?0*cKE&#;P`bDOM0rEE+pDRJXM4$V-(@b7buHJ
zTO6uQ^);8#QJ0&VXl!n7O388rv3+i@S`3Y|Ox-G-q29Tdi}O<Eek^aQyrrMk?tlce
z9^qaW`^J%jeuvu=3D|6<N`z{S?eAXjh7<0&qb=EIPTabk@Gd{$k=?Q9E+_r6?h%pJ
z^p6w<G^+V-EjL6jzKy=;__nTx5+%Q_Mes>NqBy_l5JdOuKX!EP>Ea-BK6Wf&ba$Wo
zK&MAwNP6RqiGhO~qEpN@E}WJ8A9<YnHvjIg2nP`(RLC5;TlEIO!6|b^&_r3R2+q|)
zJo>s92-M*f_D>Ll5ps>Mi&_abSHt4>pakMl;RJ#U(>Drq(JbSSkM?wx3dsh)7lBKK
zR;)5UJe$|ooqkveXoPl{$WafW3%vM-{}iYSzyKOxajlLhyeRU)ko$=cqq)PcC<Qe&
zC2l|7HLONIb9188u6in}XM%pbdJT)F)RB?xM&_yRjDs@gxL3;45Y2iYQV;SN`O$Ff
z^gE-jNaYRoV2)iifID{S_A>$5%hXb1kL+<NEzrL^yIaCrp?|C7&#QK<nyM2W87%X1
z1Ls>Hy7=NNybaexq&XtE3wScYRmSQR2UpcB6iL_M%FM+@hgrzr3jqTtZJ-XXZDY+^
z)p&0FFStc@^cABO<k4G1;UETI`r6ariSX*#d_LElEuG4{c_M5UO}RMW(CTYq93jl2
z>3)C%#4$mLJIcMqfO?7yfZ-O#?W-rl1q#1ekE{`0hERm=jfN6S6K(N;duk<8dFGL=
zXiRX4P2r;#v!yeq-XI*fFcy`d`!i{~iv}KP8&FeeefG(fR_yu^weGl@AiGa2YV_vW
zq3*7EogJD`y8guL4mN~Q`*f_$bq&1!#Dqr%;6HWl(Co^>Os5ctqlh1EXR0O(2YaGA
zR?zbenod2k>dPaFwB0`Rh~hYRCmOpn=ypylqJ9q>`?m0Vu(56O!KyC|3p-I^iaLh)
z1cA)HiS@v6RIK7`6IG!qXTF4-7ZHqzm3hd(G&t-W+AC(s`d%c1WrNoqNd&&@2t}&B
zapqFa#m#ePj~|;oFgh|ckZTMDtmM^N$}ugli!UQs@NbC{y_RjE{EhujrpJIGg2dVo
z!aWF=s2R>!5x?at%<p}Hn&QlJi`~2VCmU>cd=hm_M}69ZHCrLu6PY@AHl1;+%+b=j
z=1}a7A+gC&)ndL}3^O^_|Lkx;%f<q!W{=yYxdQ^kD~I3E=<Vve6{IY%koLGHJRUiM
zLP0>M*g5fv!mjT1#ywaO?Qb7%Mu}>$EYI0kV-B@pcc`sbaAafSOJTm>#-qr7E^DQy
zG1Kbxih}>spFQ0W#DX0q5!8Rb3>!a5ZdLUTp1;D+>{)mQ^&=S5CG0E#dcsJpJvY{Z
zgSpQMAycfHwa5q-^}Yw)O4Wz$U<U{L+gqD*ZYMcOPhwsLUk9%=01mC--}3O*MjS2y
zzDK3*vFgc}6_N65W|p>>Gt~D#?N_THu+K%A?uuebUCH(x=`W?6HlOk6R5oK{igUhq
z`Rr=GRne!C4WdKxx0fUBvfJf~23zkm#ZNC?d^)e6?9My0M?*B_cG`VzQE@osa5(3&
zCBpthq>v58<9W!%6>OewDEWPzVP6n+DbXv19B}=1)t!n4eQu|_r7c$&+-~Zku5!E*
zjnBjYnIyOSN#RBI+gSCuUUmAQ=`bw;r6-h%tvn$CW}<p$hOFW>!hJkKR)MbY_=zvR
zrC~+prl0$$IKeRx2rHna!h*^3!GUrq9rt?d8ejG_d2U4lNOZdm{Futm)jB1o(h9iR
zg6(wm7yw3;GOIS$LR*h%TimjSLW2Loz_@FLuCHi`Mp+ND=7C8Bs7PugU&L^&w^vv=
ztt;N~RG4WgKXu0(?N~#6NyXgso`jEn(IaaMBWWj84m<FeH<oV4as~bM&#6mOK{b>W
ze5&Wb1RJ?p`GV$f*xj<`Ytr${Z9Mk;d;Auj0E{|9J~LP2%RSC2m{&q=p%r0~S#Q7B
zf$(#$X4gy*17MfbHd0`o5J0D~xW%^20^J<gES=^nom{W2`|^^of?6HQ?brDj)apcr
zJtX&2R&%dPB%elV?W|`Pa5^aB99kS79q6mHXHrO~6>@|g*)QT)nr^|9xiZ3`37uGA
z+RL~s`0<B;YP=?Aip|70(+lmP9j~wf;UfOzRy*?!#WkbHsYU%^ckbXX_lpsm&2=Ca
zN@9I3>q6nJDH8MfhsM%lf)xGJ4@W~IeqU>|OL4pWt*puG2qsDr?a5Dv5Bxw^s<Auj
z4RyY>tqsRwp}Z$_z}5AGKQ=Vtw%G&J>j?N0N!sfVcAfw4_QuoYp`NR!TLWId9<i|I
zMPvdWA)RFLqb2NV!X}luS_HD=y8)s9JSRpp%Vi>7GX=r}H0)%6#IRwMmq{@Q{1-2;
zRBiZGnFQYlDe(<|92B6&Cb~D)qbY1X;tm=89QXH_ij0=;^JDp3M`SRi1`buG0(_C|
zJx7|Ig3yWGtO(=Pz6q^;_u@gX;uS^zg)m$2`P;DLVC49(4xj08Za-4V%1SIPq~n8L
z+tOen^B;fzc-hunSUFsz>XgUC)fdH&;$6>?qaU5N*WZ=r|1s2`u<_M=SG-RBUEvz}
zB0x0&^8o?s!A!dUZJlRMA3faL-QE_9BCyBKq`lk}uNAONlW*U}%koIm&v&QcV|l(h
zA8=CH4`ZM<W`4>+RAF3;tU_0poA=}*3r+3KXFXU@RqXPu)fQzogF-u1bn#45WUgD?
zPDP;UXh`#>?5!Ql*1q@)6LuZDw?yYa9vg#y`uAFORq|2KW-O!H*|~5}!|)$>m!oB;
zpgNUz{KSMny)@J%VC~Hn)c^3MsO<gWiwyx)4;w5K4)?g&T)*4Bu=Z0Qok3(H7e4!&
zPes1_4}V@!#H>@Ed!9Cqdvz=4@5LURyWsP6^2Vy|KnoK|PrV4snO%6LwcnrqTbVz%
zcfMb@n!@>mrY`X9Vv>N(l_rsCz}s7=SB3|>J3HEvjhalZ)9c)TX<Y|9DkkqatGPK_
zt_&6o!B{$o&<+>PyoyI1ra_x-3;J5$P-U%(qOiavgFEll&4!WCTG0syXsQLPh1`H@
zvxoh08+FdCcx1zYYKOXzjTZu*)WmZM>XjQ(nvzO}S-3K1%Vw0k&!%dyGb$f^JSD4Q
z*zHdi6`vN%27JcCmz^^1ENfm{RMT>-%@gi-I;iN44he4(X-l755&a_7R4v?|j7A#5
z4ZSBk68jKsX%>UNK)BsTnLX!kJp`n-wM`^YQcwl#baVNWHkJ;Du!*tyI95i)(V0NT
zgSd_3LT2~05QhwplABfMVHmp`+el`xbh_sY8<~QH7i;}|nG}-Xxdm3E#npX~;3y4{
z;B=<-$gmy+W%3E2uXvi%qU4J$Sfka!{?3kUCLU8Ha+DtBxtm$Ygd|L{!E6Hl`r5M@
zzneydtLBBeQ-rY~{D8GtgRF#r^;ob1`6%*CIC$`6*x%V4kCc3<pJW}E%eLN>Zc79N
zy;9Yfv-HgN-LpM*SJwfXnD;v+TRfgrg=nXQ0u0qg{qbyvo?`{CJ2Wdfit(;9?>mxG
zbFQt&8?|^Y?2Ps6bhuRu<ywF8eNV5AIfdb}Ur7xEk-bz-h+dZ@`S44ZPd6vhiUNG)
zd@f_J#WC>tDqXgAW4RpQ+FA>?{Y+2=70UYZ)LyrJue-X}BiDOY>N_zyaaSJbBL|Qa
zZ1~=Ws@P?|K~Y+FBG+c8fM+~hR21!$O=p_s*0^Kk8DPhQV?l~Bz`ynT?(*PBzI@j6
z>LZC=679z@9$LaD@$%u{Yos0e27SR$)L<VR$(Oj(BDs9=+?iuXj~qTUKR!Ct+u6}t
z&ZiopVV_+mSH-I?4g$y!%%v@8N<GNph<q=>K+@4~mQZ2a^~yL(r|1P_*SGAOS1d^8
z=!}o$)v+wGU#H>AawC*&JvAGOctpJ?>G6gI&(P|%Nc_{03^w-#V@EfGf@qVHnu95o
z1VFwNmX5tM-XHo(x+$pWry4_otvflj<QQrGt9W;V-5#+!(m(n`k=9m^q~`p}*l1+9
z+rx$>%^z#ADby{iJsk@+37gLCjc3mV0U(N<ss1zytKz~o*1iRnjyLqUC0o;CWY7t%
zVji2@8Qp#?NEL^yyJI2?5BB<?i*R>P$iKzkLa=_{1vw-CeV6vGN+5}!4O-mb|LSzb
zhtX9yo%N6FHvhL_(#bDEiL86^Ti{=iI_nhp;~eBC>TT@Vz}l@f63cWnUvCQ}M_*TO
zix~T*dRromELU&KB*<>o+YZ_({$0K8BvE;_-gXm@{JwhI0|fdc-qrfGlIJidt4*;+
z^Iz+2hGI&*-WJF_{#JxVBa$NhnR;6y!}Pz@+cGJ#se0SNF0r@O+fLFcx76Eil9FFv
zZ+nO;?~rlw81nij;4d$ei`X1>lNh848>pIb>>zFU^pTR;YDe2ZezJ+b>%nQaaCQWg
zm(jC@<0dJh2Wxd`mx=zGcWy`AXP|0#iL9CT8pXIZNNkf_#eB&4W7|($zkKo1O`~bO
z+309%>nnA%wYM1)n>Q|B+%k@=U*6nW-z*w4TkB>0LE`pKWA4)0mNB}%wy}8?cbmhl
zkK)$L2*AeCzGA+@b+ooIfy;O_nOi%$xqNPX?aJkg*Vnc$T}Ia!m~#bFB4dwT!S@tS
zx4<EOybca*V*dQEd2qh;oA2^k4=LTd<<w(aH>V!EesR<2D7P8?#w#9QvL5={Gr#Yq
zuXdB;nCo>@Zu|`l(vDfTlL54D;&TCPcpS&aOjhtW<T`N6q^dv@$nnkVH!eT6Wwe*u
z2aKCHFRVR&^RY{pw;-BZ?d1vx{+~?pU#5y&+5Wl8$X{m=e}IO6%22O0yy7MD2#$Af
zZV7W3FZzG0v@d_oqjl9@dzoV2|GXlecpKWsXJcT4G&e0Ss9X5nK+m4S8RQ`5dKJCg
zU|vhfxbf-GcCObqUUruwc-ISf+HKt9x_LK?f?ESO;4Sm{{K=1_%}wz-+I)8W$wy$^
z^EfWTW;pHr^P7L!9k^^Bu5x^C_h$C;=Ng#RE&N=D&8=an`il9~d;D25pEybm;m9S}
zk9%>zx{3MplU96g;4L_iZKLl7B+G&7%D#kKG4m<B!K*<_@uApaG!5RqeY<>h?dGLN
z*6x&HvBS-;g*Wvvj{<_$ECjN~74_SfZ(cGEZ{FCvert2X;22;W#2;>YrS+F}{ph93
zH!PAPk6pNVd+qwBfsQMe*EhFrVDRHx8=KdSo0m3?BQx{H;`Zj2MLcg26pj0=wrt(3
zKGs;fwRZW++W9M+hB==#V`}t}v39dxzjX8Fc7JQ@jrHr7w{PAk-?)5*PrP+;3S9fX
zSpB_j_}ZHM&%oq*>_Euw4*`oG_OFOeL=*6OKH?_<{LXHOgh_-%Neq8oDMPX(hu@ZI
zg88?Q0(@8r3eyTqZ^!*A@KIf)8^24_3qRNo#2mz;8<y)4<4DTmTbJ9~M%(yta%yU#
lew?fyr_AS4{GBG3*}~W7ho1iu4&*cc(6Pvm_*+}={y+K#gz^9Y

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Caligraphic-Bold.woff b/source/fonts/KaTeX_Caligraphic-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..799fa8122ca184fff98b8f0424ae6949f8668984
GIT binary patch
literal 12136
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
U3l~oPCkLN7RR5DR&Av(h4+#X92><{9

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Caligraphic-Bold.woff2 b/source/fonts/KaTeX_Caligraphic-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..73bb54228786739b75b05af392000dd214486580
GIT binary patch
literal 10604
zcmV-yDU;TBPew8T0RR9104Zz$4*&oF08D@Y04Wdv0RR9100000000000000000000
z0000#Mn+Uk90p(jf?^0N36~cU2nyy{*d+lr0we>0Fbi4$1Rw>EP6vS+41o$8=R*}^
zn+3hc0mA4NM9`-}$({ZG@j%KErg_&=*aS(2$~d)3Gt92k#-&b`7InLx3X|HXPsYS#
zrfqCuulTw|%nnm!x)JV)n30ITS}I>-_J9RAL}dK?)Wl94B3xaR!=~N8$1}Iw(O%}y
zcz;MzG>7;({d*FV_aZMsAPG?jk^~463Q;T&NHA@1t87IJ6^FXe35-c)QWLu0_O}!9
zPQ2qjU9U4M!b6hy03|-yPh<xOD=gYPSE<Ty?aN%HRCllLZ_6_5vS|rewyrP$^qqX|
z%5NY@pcx11AD*wjXJ_xezea&K6D2{a88nk67H5Ga#sAWl{v|ApyL$+7pHz*Zc2T=%
zw3BYP)oCA%Ph|c#0P0SG%JBcFd!=Da*~?X5faI<0l5GFqa>7zk4h?gM+1qsFvQ@UW
z`(h4Lb1&0Dj5QLfo>mU}PcBo^M+at$fRiktv*-f)Iqvyf2*|&;nJ0uDxm~0KxH$k#
z(fs}&@K+iDo9fEUGHIlmgYir28z&qk67SePS+oXtD+~L7OHDenDYb5D;gtmv%^ykD
z%&g8gE4j?B+pc{{)^^ISbY<->`)WfemG!=ot8~@AG+$~#Ie_xQN~b6=1cuPC3ji<x
zz<{c*-jC#D^yNW8HYMoqFlTc{UxyZaH(O-0jy;^1)+x0lHMX}84FCWE02Y!DzW@Mm
z?Jv_U7y$QPTDc84ujXYW0N<8J0<eBW=)<O9002<MR~`c3M=tp8`;R5J-c<|Q$iEQn
znNlPj{3QoqQzZfb0Qe37xy&@;89^FIP`)EDib7Gq0F#K^EjX5-6g>XpqLfZWv+c0Q
zLGMpJaL1%Mr>=^dp#l3;({;fz<6;MSqo5lZMxoN^3?|F@FG%NbF`UO22nmr`A`OxS
zhsYJmP?cJv1@T`Y01o>jL3MrL*A{<_Al0|9u>1f40-j@^q__W|b^jLr@lzz46TIgu
zjc-PX4*x~RTTIUFta1)`2WZ^{-Z2Lcf^m4oM@XOx@p2C~_%sC`*q`?YpQAHZjqiw8
z_M(HPN@Qtg_MTL7IKu_Oequ+7wQsT}LNA#V2)&4ed>8WpAD`xOswF6yos%D01zJi5
z+{Me3JPgzeR)-70aWBG2fR~_pIDw&uh3OR3Md9M0lX1Z?4})QU4s&p)>ZvjQKfRT8
zF(^{he$0E-aFC*<Gm0L@D_#{SA$24V2L$d+kTVP8w`U^31V|Vl@fDbWA>6?uKniwI
zc>a%dv8Y{WPT85<x#NkLgt}uNww<BZA;Iv5%%L2b0fg18ezc=XpjI+rZpm92&!M)-
zgHang_A8=1RpL;r0rO%Fx<Tqk2uPTeTK+1!%3RuZ9u0-$uJ~f;JUYNoLggEetlA|c
zv>p6_wOo$@VVc9!Kh`BOKQVM>jh_fzf_Y55J&J`*yR?dy*$+<zZ};Qd!y~eC*L&2?
zSw(?1k5k5$2cv*t2_Qs6QD;~y298WHx)+P#JXj55)q==*4$i=6V^rrLe}?ECOQm3Q
z-P!y^fod8~<xNn)tyl*VIGIpdPrE=33x(X(QN)m-9z_DOfMHMuqu*v{k+s}K7(Xf1
zQV+lERCkl7jspE1PXh&)sHqXu(iqg%Sk%!t)YW*@(*)GlL^RN(5+PKB-=1lJ{`Q!m
z|7Y|N3-qQR9^n-pgUcoWFbe=?1Hc>rm<s^&0AM}<EC3)iM>Ne0Edm)cR4ZPzRpDaD
zysiCYmSABl4xSaHxoW|+;h_y-!#_)!QL|@VHBmTXbts%4_HhV;!Y#G2$`DztTj-vy
zPhy7!yb^Hxpb3UkE{uLb{L|^4*~7B+V%rlzjpn-koB$3FJu&K=jVH<HfIQDzCPg7`
zw5D2fKw9-pug4cR7Bwgi>D!q=2~*<v@Y=Q~12BTs3C)f~;?Cu`6sZ~cERknrR7dTC
zl|W#LPx|_TbU*$io8`7@D+J4K3c-X(jW*#Ev{{B_H|op+ZJ>`J%ohg3;Udc+9I6e^
z<4-~I@L&>bV6*yT#@(4gbU`JoH_JC{q*E;O(t*=qS}+IU2Bi_I0GS(mBisNvZt@i6
zPsv8O06Eq?^pwXOL<y%;Ge8hfpu|30V0|K*VR(wQ8gtc$<PlLcAl#DIH%q-<dE-eM
zlDr8}$nqLJhuLQ_Ej;(;g6<{L*nWhmj@Z^_2T@I`%hJ=1=k(dt_Lf08hyMA&&vwa7
zq3?W`+(x5-6td7EHsipuW@(-aawQ`R$eP>KsJ4fyp4peXMJ#B*;h$noJg^;Fi)^fZ
z41~JIrRDLfKqP(Fu4|l42_LH5#W%(<GtCJ~@FiKPi4LAy+o|x~ZUH}7A>KImyQB;B
z5Qb52sx=!mNQ5R%kD)2b*{nNXw&6JdE>}25gOFE12P_v9JnuZd(tO}@KL9)*0A2um
zrWFEs5dgdx0A2!op_Kx7834Q-0A2xntyKbe6#%>%0A2%pt}O-d006uefE()!vxz3=
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
G<+V;xU{sp`

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Caligraphic-Regular.eot b/source/fonts/KaTeX_Caligraphic-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..6cc83d0922c961a8e94dc0460bb583f14b6a041e
GIT binary patch
literal 19220
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
AGXMYp

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Caligraphic-Regular.ttf b/source/fonts/KaTeX_Caligraphic-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..cf51e2021e4d84b7fa8d19820387742138b5aedb
GIT binary patch
literal 18960
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
R`0M}Bg+C@R{@<hb{2v+=Mmqoi

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Caligraphic-Regular.woff b/source/fonts/KaTeX_Caligraphic-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..f5e5c623577a08e9c85da33e2bd383e32fe18c28
GIT binary patch
literal 11868
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
DcOwsL

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Caligraphic-Regular.woff2 b/source/fonts/KaTeX_Caligraphic-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..dd76d3488d5b1722e8f929349a978d8cd953c4c2
GIT binary patch
literal 10396
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
G0001QsQan_

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Fraktur-Bold.eot b/source/fonts/KaTeX_Fraktur-Bold.eot
new file mode 100644
index 0000000000000000000000000000000000000000..1960b106656db1de5df7206db47cb445c8e906dc
GIT binary patch
literal 36200
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Fraktur-Bold.ttf b/source/fonts/KaTeX_Fraktur-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..7b0790f1ae89994c5e7a54b219c013f80166cc18
GIT binary patch
literal 35968
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
K^48~m{l5Tyl6G<c

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Fraktur-Bold.woff b/source/fonts/KaTeX_Fraktur-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..dc325713291c91c9fef5967e0d52d0366704715e
GIT binary patch
literal 23388
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
I0MWO6lO0N-BLDyZ

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Fraktur-Bold.woff2 b/source/fonts/KaTeX_Fraktur-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..fdc429227adb718aabf201bed2075bfbaff70a75
GIT binary patch
literal 20476
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
DV&7%c

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Fraktur-Regular.eot b/source/fonts/KaTeX_Fraktur-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..e4e73796aea73b5a7bf372f36a27d6703679a7ca
GIT binary patch
literal 34896
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%0At0b+{OCX_D`rX{6r`VWQrMATlEm
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%0Axzvam33F?$txZa
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Fraktur-Regular.ttf b/source/fonts/KaTeX_Fraktur-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..063bc0263eba6fff6ab62d728b5ef666b134f5e1
GIT binary patch
literal 34652
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
KKm6dcU;ZB>;KKX>

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Fraktur-Regular.woff b/source/fonts/KaTeX_Fraktur-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..c4b18d863f31c568adb0b8de64ff2368cad1b656
GIT binary patch
literal 22844
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Fraktur-Regular.woff2 b/source/fonts/KaTeX_Fraktur-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..4318d938e26c1dd40212772f4c9984b7fbce6adf
GIT binary patch
literal 19868
zcmV({K+?Z=Pew8T0RR9108N|#4*&oF0Eb)v08Kpr0RR9100000000000000000000
z0000#Mn+Uk90p(jgAxcj36~cU2nvDN9D%J(0X7081A`0;fk*%ZAO(*z2ZBfpfeITw
za24#>2yO>RMEM;if<7!#{n`KD59Ao54LhLB?=2Ce7%svjYz_gPqHyvmo9Hf`i>0zW
zf7tWi?X9x?s0nXz2KTd2dTNT-+S6uwVq2GLs7I%@`ppP}T_K`1EmLr-GRPrf7W$kw
zBuZh4*YV%@7SZDP_>iP%^6>mP-g7_UL3p#HkQbMNT&3apx%J=s|1a_{3K(o-8&L}?
z)-c#uK})qLv~>nj+K64JcSgnOg=fW;_LbLOd8E^tS*;`!2`saa%>gAjb{+|f8jJFP
z%B%Woy8pk=t^VG#e^qDyZdE}OOyow<41zEznBGv`HG9}|d^vnZ{2hOxad1LZM<;B^
zrp=+HU$AIRhj#Biq-=!-z$A6P{+BK7y-(e<B-z>{#2vNdk`7h!TI4a{)M$?>B8-nK
zhahuZnjO!R2Ydf-w>Y3Q&$>Y4z;a12(jbfC1prj2`<IF`VKu8<faEUhkW4|4g7W)N
z)G2Cr)yQGL*Qv}b(;tnCoL1VFcM)eKio}x+i2HwFG$8y}%Qka_7`l2d^fQW2urX~c
z58B}rjt2NY5NKa(pYtv}bKfmQ0kR{7SUy7HwC%3Ag=4T`u)O<!HY=;oS@+pdfwUB9
z*aSxy0cuWWc)8Omhg}Y<eyIgB3zC`yGprHr^3bj3cDmJu$Vq01bi>o=f+s;JaT@G5
ze3K$@2;wK~+(h?(s+R2l+!QY4>Ky10FTUQX>@|N#E@y^XEe6!?4zLN3E&$X9fYP1-
zas8AoNDev4F#uEoxrv}Ih!;b-)jfA1#Ikc++Fi(<i{9=FgE?DM@G0cFO@C@Iw%p-o
zJHHKvNc5@>*-`~w+K!pM;z=O!ivkmkMIZ>j(l&mcU-0Ff&b7q<ho>w?AXo_&A~=F%
z%!Vfr#FK}a<7-3<AXdog^3xOY6XE+G?iKgbT8kLSexcflO8V5-GRT6@5CGrZhafVM
z-Dp+{P(VZGUT_?qj(J~-5yO)$QKd+ep;Wm^)*tup{--27xVrQ)MrEoT`L3V->)*J$
zzV?+T9(&}0gI`yhA8%;^6R-Ayg;Wv4riJsz0CeL2r-*c*P-%1qlf@>Eoo-JMCAqH*
zAb?chX*yFi-7qcNaXmi>qc};ke7;z&An6K7%5DGPusAZAEmm7*mOVSi;mmcpJzifP
zlJ(@{EmrVAKy%hn2!g<OFLf~M^UtMbbj79eY}Nl=2z&vLq#;XB|3TyCDcs$sM81dp
zQVz8|@(l6$e<}4T)a=>Dc@I1RoLIjCCY2aKn3jhDg7(FoYiRLlwKLPOH@x|rym_}g
ze$4&X$y2;Iu_^{uFIlyLHSc3z=P#s)dxDq>-Jy~o@Mm>Q<vNucHZ5nBLS3N6wvxTu
z92hwpaDO_;Il!PnP@ne&t5*ruBAi9pgBdIX6jRBs{mRx+rMZq_9|X%`4`$@cc1laU
zmvhv3BB@i<>r`I3`AtriYh-bkM$BoH7dl&j1zuNHAa<eLc_$W4fEH&+eF!#S2|Eh#
zNWxH6d;e&v#cWfQxmqthS*XOy&m|4<vbXfhDP#Fkg+n6@15Th`G%Q->1>z(D14kZY
zx<}!fK`?G}-~J0zeX54e@KP|)Ys>`IK%0ALt<H{JB=5}U%RW%2lHLU`SAC!XSW49N
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
TnS<+ZgZ~G>KHm%580?|7K50xN

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Greek-Bold.woff2 b/source/fonts/KaTeX_Greek-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..1e289dd5e069183e3aa2476266d7552237977e0f
GIT binary patch
literal 2904
zcmV-e3#asVPew8T0RR9101H?E4*&oF02T}Y01Es70RR9100000000000000000000
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
C>2&r0

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Greek-BoldItalic.woff2 b/source/fonts/KaTeX_Greek-BoldItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..8a18d2e35e20f57da262f493d1ae9b5ba4093ce0
GIT binary patch
literal 7648
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
O7)?fc6!Rzx0001imX;6z

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Greek-Italic.woff2 b/source/fonts/KaTeX_Greek-Italic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..20559746fa3459baaff76fcdfd45eece7290c323
GIT binary patch
literal 7436
zcmV+n9rNOMPew8T0RR91038ef4*&oF05iY<035LZ0RR9100000000000000000000
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
K{==b^D=>CCk~<Xu

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Greek-Regular.woff2 b/source/fonts/KaTeX_Greek-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..48ed7f118fd624431cb38574414f692b26a3dbbd
GIT binary patch
literal 3036
zcmV<23nTP*Pew8T0RR9101Mmz4*&oF02ep_01JWu0RR9100000000000000000000
z0000#Mn+Uk90p(jgAxb^34~=45DJkHjWz)`0we=W3n%~tAO((72Z0w1KpQR;qrjYp
z3L^W91G~-gd$1){ik1z?Dfws}1Lmggv6t`v$2tGLm(-G)L6MXoJv1#dL%p!3q>KqN
zCSvXX9yYH`MDj(2A^qZl?5oS~2l6s$EaV(0Fm8Q1N3|7jVmO+&9{>#qP&Kmw%EI3M
zx%Os(Y>j!Uz}j!}F`F$xnj(WH8oyBHBUG%;0jX2!jJsvH$!`T%JPSse@sa@m0RX(7
zfBG!|fEWKQ8UX;__O3h)7?+~GAOpZ6ejEUH(v{ICFcx9J-a`OC>*0qV;f46R%e$Zm
zn4d=p7@g9JUk57#uxAbd0D!Lm00ZemxKfG)39u6g|5hnL!b$+JgB}P_0s|+B2yu`&
zLL4W0xz7;iiAz6^VjYXoCy4{OY3GQGKMxPC_W5Yn(CVQTL(7Ji3@sj7IJ97>TW<nr
z7{?$v6zMc;7ccZ;{-1Cgoih?7AoDo#01|K#m};e5pCHw&4@$rm+9kPL$PcD(w=Kx@
zOUUH4dnCj$?@4O6N5Wifvrx_kojn<XTV!XXBA?*grUyL|$u(1Ovd+!IhmJRbjyeYl
z!;T+=4%R8j+=5iGKA0(B#7bGlY1&#nlAOCI1KkCjm$|F0%^^V-2@39>%%pvhx{@;*
zn5lUlNyRbSIFRR^b1@Q;Rn0OInO!4+PY~ye?TlA&io@v)I>eYwGv+2ylEvvAdMC34
znqzLNVpgL|<Vgy5o4_!YY(@KGMqs)+n&Ud61{4i68Ih?JE81C+5m{a$+i`$YG(x)J
zM1)i{KZ5F0ElAn?LA%rGU<O4Kpaxmhj0C(~)LA7<$Fa;HXGN9~YG*o}5()~UGAh-q
z$TDKJ$hKG3kMKUiBk2!;rBO5pkG=McNEG*GcF<;?7I+X~;uHuJ?=+cWO&2RFB*rJq
za6FxRpqaZ5icnEW395Zq51p{X6$5zzDKrag2O|Mn;uu&Ua}e!O)GXW!43u`3+>025
zic3tVlr%pDhFLf%hp`fDxd-5)E{Z`9Xms?dvNnBtHUK06;LibwrRQ?3%aJ3%w+X!Q
zLzG~0PDGMky*xQtJ=v_b<xQ)uq3Mox65pB;T1JxrnxN*!&QGF{4)_5`pl~c^9UP=Y
za|C?}I2es)MQIwS^OTrLA^M>UHadpF-`nCe-D8P<3(SGme!rhz6Y8hL?7_jnVH9q;
zk&|eN(>?qp&j5d@J4T5Ss^8xaQU?aA&(S@J@d*?T+&d^B8t6?rg(z6kS-z+x`tG|?
z*WBY`K%3ZBJt+2``5j=1J|c&u`N0zD@sDS<g!jNhA_||j#&((`CxOT#8Z=!hszC_Q
zJs>F>wLor@6OY@DpfFAQwJk^8f7VP!&rR&ms9S(ct#Lic2U!v6H-lOnw4#{JaU_w~
zG8nLiZE=kTLgqp$-{C=u;;#)PB}L6bPtHrPxu0qY$8Ct7ONpjZOwc`91H2_}OU!&K
zDEr6&h)|+6oL%!xO61=5AB2o7?(DN3+l8ia;pD-9`sDShZFG5rIy$6brHI0|M9W((
zaT|?dm|0^~aoV|EIW$=3*s~EcSOx~h9s+i$-*0A~r#m#j(}Ypup6}-q2chg>Ma)X!
zSz=5ZbijTJ%LA#0oC8glvMfD_VSqnm#yp9ZGmaCJ9kr+hBGg&?LFQx%hYnM9$U7J~
zoqV`6<S4`f0YqCumSdLVOv*)8@g6Q2%s7t1j>PGL1_8aiu(By9{ZHGknt^`F7AJe8
z$B~T&f4><h@w`>zSoTCqVuQ{fxko9{FM-rk`~dPnr&1kymvNSurE~1Kd&a?z#fR9C
z(`z6#Yc#77=_1)ZWkTKEkiW8N)jm76fn~!V(#b4`SG|AdjttuC46%n`rcx}!%@47Y
zbShf~>wW%MRvc^n^PkBpOU2Fq{|V6Rk3ZKZCU-8<A3SMXS(STd)1uGk*5uDsh78Ms
zmA;$BP1-evJomj;Qo^m8iGc|Xk>d60y86X;{LhS^HKlh<^X=`)wKYNiKX;vQW&EGv
z+I=ig_*{!drESkLbQE+JPn<Ar)mYl6CmmkpXNxyB(_T%LiQG2;;{8U#)Yfj7d6l@M
z>9pLdDIvdxr@FyAq&SZ_w7r-Mn>Kdz-`n4@(S%*I{(i(Ye!_ScI(3Lp+-Ejp&k{Gk
z_u1!PxOXq_UgE)KbB@tS<T35jN*8$-m4=Bl9>La_D?c?2($dcd4*g}c|A5K#52}Db
zS((56T3Gq?=ALbrH(%43N}WtPi5y>A`;?lw1wOyB^VUTRcCVaR`)uzd_7B@|5q*~%
zTBuos0ue5#x5?-(s<=^@Zl16zHS2yaq}o??|5TiQ6!Pl5bf?~wiAa=I&QAE$L~loD
zP93ku%*f49dmULPrTz<%>xG5~<{NxQwmeOF0JO$zWA<)A44+midigwkwajFc?F3)5
zw^H#b;Gn<czE3`3Vye2!9~*+bb*jzfq3@ZD??O}vLwbX}{?#k^iqh&bm25mgP24u2
z{Ev4|sFKRc(&-hi^@40XlntrMt(bj=b+@}7iL3B-{?a$MphSYh>wv)olC`#S<Y`s>
z5m!6Mjdv!klXqNr8Rx#lg%8-C@u(H7t;Jh!O*rJA;g>If#-!<f6oZ!6^Vmho@|SL(
z;C$Z45sl=?(!%aPBTU+6OU<sOa}++6Zdb4_Y$)EG#zg+iek)5y$VP(mJwG;c`PO_H
z>B4$m%L8t!nP)apso@Q2bJFL<7CClxk3W#xJ<<P3L&nTlO32CF5CZ7J^?0TiLcBR(
zp#7Fl=IUnr2{iEyz^iks8??gccZ3nY4)ClqwD8BT=X_^qC5iz62;)m>h6(-~H)Qny
zp>7k0S3y$kvv~;$rr-yG!ABq${{%_+CQMF~$<%gAI)^v_Hw3yQj50yT6PDtqWFISV
zjIknZG^!2`j{yM<qkuty96$hzmH-JR^bp8^MxTQmOxOk*<R$M0EhNi+0zJ@j=RpQg
z$n${!M5+MbAOJ>yzzSaj1}&n2fC|I{3E5~5$iRwTBl0}kpFxA$up6{6LH01{!75ih
z8v|(NO?i%WdNUr=j0onH1t>DYHwQk+-GXp}gnGmdEuR@9$Fo8bxSX04Oj*9-XIwLo
zjpZRj<>=I{nYq&UGtb&Ym{$u>WZC9md#XHx6AG*?JS!%vD1pmCzfx4(BVU1QgBA`I
zmejg?*FrDIhfn7`BFeS7+P%=n=eZ|}C^sY8NCWxNLFrM0er~Qp$BI-yTqEJBGzHyS
zG|0By0jt=G+qn5kuL%m7!4|;!4PcssO~dUn0*F5_)*Z{`=8rfR$OrB$<T7X7jHgL=
zB_qs&?@UOVY@t)tsGuon@tNIQIHBr+@TqIG#bF&Nl8pEUEC~hs&|u$^W26LUg=4sb
z+D6Qo6l8TjgN0TVpLM=O6RSrNDCG^d5w&myOE6+3<Q_;vsb$4WH{f1huMX3;H?1v`
zMw}gOrBwAmrU4ow%4Y>1YSOjrK@p4}dJHq7EpbFx)FYA-9;hQl`XLV_uwP^0jZ5#H
zxw+IkP6n|szcayqk!&%V3a7I3dT-(SH`FI}Qo_Ez&Ay44a5V5lf&7?CxI|~c9kz6F
z7M4Qz4TplV&)rv?peIP=X;_gBP27xZNgkr9^n7^(_dVH)(oJFS1TH~Ic4TO$1vo}-
zaM%z?aW90k!$-ilB}|O{R+<LoxsO2xZp2-N^#1H-&cKcCti|q*hR@XC(OVzk^<!Vt
z2do3a=wrBuNF+mYq(DlfLKLFm1X3dn(kj+j&a%Vo*EzN={_-1&_`43<VTs=b{_f*n
zGg-Izhwr7%)!83D!<)dsO_EN}&Q7T9>G{t7qfzB{3GISfN$C^rL1=gIo{FCz0h0c|
ePJp@DW1(Q`Pl`j@1dtF@E)niBBw-XEl+13=|C`qU

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Bold.eot b/source/fonts/KaTeX_Main-Bold.eot
new file mode 100644
index 0000000000000000000000000000000000000000..80fbd022363e7ee84f211c9f814ffa479d588815
GIT binary patch
literal 60688
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Bold.ttf b/source/fonts/KaTeX_Main-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..8e10722afae5f5f0d9ac4dc5245d445db9151f2c
GIT binary patch
literal 60468
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Bold.woff b/source/fonts/KaTeX_Main-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..43b361a6005e845717c8de2fbc8980830acfceb2
GIT binary patch
literal 35480
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Bold.woff2 b/source/fonts/KaTeX_Main-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..af57a96c1488802f4a5a3d59cac03ad04860ea84
GIT binary patch
literal 29492
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
Xf;9h=;B5aP!m4RV$0k;o00000frDRh

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Italic.eot b/source/fonts/KaTeX_Main-Italic.eot
new file mode 100644
index 0000000000000000000000000000000000000000..fc770166b5e86b6a9c18440231ec09449c89b634
GIT binary patch
literal 44132
zcmbTf2Yh5#eJ_5`xpijl^xia0Go#UrMqQ(>S(VkUw7p8JEt0jn?(22M1{;jQl(lII
zH6(;b0-@v+W+8UK$tRDJ<Ry6!LJE&O9)$4cg&KGdLJH58{@>rZGg@u4NxYt&JNKS*
z@44sKzrWu(d-k^_>G6+A5|g-e^?!`LmC>0!2Y!qu|MWx2)4Ki^NlHtSeELh@sy)&=
zcjY@EElO+B5$T+?B%P7=;`nyy0xp}<Zs`I1x(mP8@q1D_hBo&}_v80HXpxqBr7AvS
zIC=no&ZF&v_`XNFP2AxDobQkx60Q2B67G<_;gh<qc@7#feB9FGk}O@^x%0^0vp+ic
zdy@3AvpAdBf4IAE?jy^?X!J0Cudd&{cJXabzxy3{zrU0u?puH8fiz!mpO++`f$O8^
zFW!3hR|8-BKa!+=Tap~_x^?aTi#U(D`PfN(8@Jx|$oVh*>Tg|^B>$`=z4;5bom)Gr
z{%AadYtQ2|bQ?}+@8JK8=MCU@`)zkW@bJ(6Yx;Kl{whBIcGo@YYwvjPy%>uR{iTh&
z*B-veKFr&3Z3(~A7uN1Rw@`lNuS(Jf@J#)}#e435;E%s}+Zjpv$m3}9wTt(iyZB2_
zKmX^F<b4$FFNt@@`#)0q)|bw>$A2cJ<nQ9V^yS}s^fz1I8~?beDQEeQzyih=8=w#W
z(WWMykT-DsUgfN~6Lo3*_eyc*mC~CfMV#Uw&#?3|9KVjyT;K-mgY2!6ii1o15AgeG
z>zjR3>Sb54+vAe-V~_O1f1*zG-+}XU^t|+sH|6x^uyg`r`*~WD-f~*TJARsjU!^pz
z|6J;$)@(2S`Z>P)r8_y78gid>KR$2co6@Ur?r+(9q_^VZWt-CHaqcOcn`7stBh((}
z0{C2Le)iyd6`v|Tci{6dK5xKh9iKZz`+jLB?(qPA)4kr!zax$E&qyQu3(`CJPo-i0
zA!&%eNg9$h{QizK#Ga6Pxl`IFGn~I4=U<KXIFG*XK--%5{yTj4Nej5g$8ha)_<T{u
z2j6}8{0ToN9l*19v;NJWuuZ1m*(>;*V_%T&!spiJF~+y~J^ZGz&!PPyet#3c=RnHi
zn2$v~V-eS=y@vDW*oW}@J<=YwM>@`<IQ|0Kyc^$tDUGs!6xW8(_FrjkG5#fS&pn&p
zl%&lpK8NuEZ8!c6pMS)$AD<QL+~x?rAupQ&@y>l>&fdX)7w`UVyeGZ?7o-Dt_rJyW
zujBhm_&$qgt;ieFgLuv#<MX$m<xh#8JRx-w|F8<^d=?)Jr};?;9+a4gGk8rY0bYb`
zf)CR;iby%AlL=`Bis<FiE2Z~KzrlKWO;%(>Hs!a=@0Q;yzfXR@{2TIz<d38S>1aBc
zasPO8a}#$+OL_F1l1@PlUFj*wnrxSUd0Wp9${$Yq(~)!nJzqfA|8MhKoBy!+&CS2x
z{Kn?jHlN%4)Mk03@WSaAPQ7sQ`L8_x*Ux|X`7b^H7tep;`Tzd>pMP`ho2S2d^6&5T
zSdxT?{%8JU8fK>1QApKQl7$PnC@ZQa>4wejFr6;9$LsS4f}wCE8jB~AQk#@YXR^8W
ze4*G;>MU2fs@*-kef<N2L$%?N(J^U!Vp5u_@0gyMo!dFTYxlz9p1u3_A2@jE@R6g(
zj+0Va{zZlj&bY~c_isOcLi~8(!G|Ath&0KI{b%WzW{ZYYNjIdUOLNQV^x~%^*TKbx
zcKF0nV<6t>SYAD!zI1e{!SidMHlX6x*K@bTGnt08+>mB+v!B2W&8$v$HCUyQUOnH{
z;Fa{*bmKDz8cN~BCpwsYW^R4%(8^LKmx*6mN;eK1Sjsf&%kgw$n2v^*m(!Q6Mr&sq
z9XQqem2ULV^&V>ZnFC8{4C2ySx?w-Cw2Cunx@M=NAvzjbjjt{*FUK3Kyu6%iNC%eA
zEiZR9<Vt!j-B9vt7?3)1V5y<zrW;yr8pB_1u+^@HQpsUl>9d#BTc*==#d<jXjq7vk
z4Y@Oe^E2s7=}Wlx<sLPU*E+bgdLX`bXn85OjH~s-OSlxLmufz_tD#mJ`b_x~Fb864
zH2lm>=P<>&>9q#G<$Qy!<Ngh`v#X(3(lkiN%=)Jk=@vA>Fzc(!)MRy54AQ84LU%|r
zbJLxft;x1kuAY3mbr)8~5N7bktLeE*xiun$m?<evv)M?;G04^^8*)CkHfue?ag*+i
zcJxB$tykOL$t0f1O@G2+m*<u;@myxPGt<>@RxWcs*EqX2+tqMY@B-;{!<<>5_rgJL
zdb#1GUx)C^iC<j}H*Vt*Q<BCEtYg>>*UW1A(rUWl!lZRIJe9>GOP7_iv&-!b=egX&
zT@7z#@!-<pVe4c(gY$lI-dDLSxo3_pU3R-czqRRxyG%?9)}6j=(qB&e)nFk|Le3vp
zx=fsl$(p_d^3r2FGdXl?9mlQf)CIgxSC{c7^BDj9Du{R$scu3*a%6It;+cjt`3c6D
z;0Aw1x-9XzBTEf;ZaO{JaDXZ8c<}0UdKHg<#^Yg<OPZd(w0ha6l^YM1<5^5o0Pp56
zcQt~Q%Z$E5m}mM9S1!x+9jRPa=sQ}utkQR^a#^GAc;&KA--*g)gT9lM%QpHhRnpZ4
zJJr?b6bJWqHOk`PzOF`FMQS+9|A{fCFvd3AJB=~YcLrmm?<~eh-#LttzS}WI`p#pF
z^j*Lh>AQ$A(su{ONZ*x8dR&M=R|Qk!SxwK-G!Z@5@ZG2ozf~)Zu5zOblGF_*o(H$x
zP?U0O!#Pr8FWLgE)Ya(OA`c5Sx;rncEI79WHAF<{-99tdU+$}<2gP{%(T>esFVRpG
zHyj?FmqNcQwDIg@ZuoK^3*wCi@ctO^4ZEy@vDb#X8iSQ;c)Y7I^ioa1gzIQt14*P%
zK3z@Elkj3HcVD_RpPPrWSb|!IT7*OoF%}Hq`NPmMAqWWm7fl+rnew?y)m%C~ehK#)
zxpFyOweHbSa8I;KH&#jB>j#%U$<uN={z+btW6RT|0}W_XJP%LI?S%A!npcYw<err+
zWzT0;&*mEP%-UI~AwIJf$MNbiWcS)WYZwv~b8hF_a6E@6?8JNFOFRYlyTL;+5K@*3
z6aeO41w%o#Uo#TiaSfgGVi5QnmWH(4m1lt?MrjVxc)D6>&OvS*Q!^$`Hw*}PI=wSD
zPY)w%jf*Lx7ii9?bY!WT9*1qD5jRibW>=<M%j4H>T-vg}7NM?ZuGL(VG8ki5W1=~N
znHFhQ$vj{CiY-!3R&wbo&Du^V=JDm~<tht60H?N2gPK=P*SAiK)~&8rwb@Z=43}G1
zuDa=Tr7=>z1Rf%0xdgGi?!h2SwNb_MXT)?71GZ+Dm@5aVs6t4rG0sA1K!<N}YU_Pp
znic17#2Eh>?xT4l{W6{#j%T*fJG0yz;~Y&!Yf^X8`)6q8X^74D*m~u8ymHVIPFQ=$
zp}*P~fGqC1$@$&Txh&vs45H0KrBTDzBF)+y<~6+&X00_(dn&|^jYUlB-pVH=X%+|j
zaKPwbf8`TQoH>94apoYknZu<+)P@cYQyV%sLT%{aD7D#vgJaZ&4vteBI#{AMbg)cq
zW^izV+R(uYwV{KP)P@dDQJbAOI8ANn;0(2)gH>un2W!-38V9#f8#-90Hgs^7+R(wd
zN@H|un$OdZ#w1SPDvqXbberHOoUY@??UlyZR_i<HhiHALIHJ~fi6d%yccn4D)${`W
z5KZq9N7VG9IHIQaRvHsqP4A;0qUrtOh?+hij;QH_l~39f-g2I%%MIgPLvBCtaLeR$
zNfMm#KRpCTg}oV?*>b-xUY4}!Pehp1Ne7>F7|gJaf|@wer=O!ZU$Wt>G5wrWw~l3L
z_HsLW!$EkLZ&<o4pPjv2pkL1!k4sFczhNCN7Mj3`UjC%hU}op1*yfWB<xQ{_vzOJg
zv%)l8`_~ZwRe32-hys6>J-7KUo0B|<<Iiq>U;O^rW<UKF|Ai#$&&#E61Ce=J{=QOC
z&MUvIPO6{M3~fj|uf1C@=pQwHVsEp5*YO4OS?32_x4D<x&w47JJG@ojwC^YWKMFh=
z3<ZB4`d{I%ME)iEhS)%SA^wkvKTrN@TcPbospm62StI-5+@tNC`JuwDVxss*9ZJV^
z$16L2r*uo{C!H6{hsu9cd9Less^_ae>3(O=13f?N{e!;KeIM;V(f^}?mk)*pKRmQL
z^cS_KhtH1e9Qpp}^yu{1(Ae*ckB*-n|E2LSObkujG4b0I-<qsUJ~8=)DL!?})Vu51
z`a5?V+wsHcrRi_X{O0WH>_5(h=4R&}pZna-_MLB@@0p*SUz$IU_vZp@`BTh>Ea{T*
zjHUoG>?!wq`@O|}Z?5m1XZ!ki@P!}rF}PjQouJ>Ni0K1TS~^{~D~w4I#$~>+*vK7N
zs>eW41nlxf+(Zg4O0vvXRK~fB?}^vLILQDEGMU}CbtS;}EZ6;^Ad?cYU^<kx8^CP>
znieRtzEG0sny%%t1HRf&ZIbs7$=Sl-B<t@B1p^ve2qyO|$UG3-E!*R=p>gBG!Gv5&
zgp*bNg-FQpt#8SikNu$@bupRq7Y5>yWGNnsRq34@>=iu5pOuop5%Tq{$`#_w6&aqe
zTiTOqV^TiXHkKOGRVm4mVmNs8zz`mtWC0o#jjJ$#aSaXPxc^13G9w(Xq{2xa+!2jv
zT=6*PlBOb?&)oPlpNNLqD!G^~<T$Y_=~cXT`|x5?V_du0c|phfHz(zBywlx)SLf@q
zn!>rqr32vM?5x}1lGDL$cFDG;GFf&nn#^wZ+4tOY;r@FsJb2H8cipkRcKq1l?y2!<
ze=!&H5BB-ITC!XlsP*FwbJ-%^zBV+*rWnnE9?)If&HAlh!GIocvv7YXpyzZgi0fe-
zx>%X%F4fIwqR@E&6r5tYt4`r}v5*&?YD4#XK3*uCJ1?82eDB452Q`~vvT08?%xoXR
zF9SDRT-dkIC0ZSfs+y+8Pu#QL=5xCphRj6+tN917K8ap?-R$chEEMqnd+heTdl*-p
zrpAB$1De|=zc#(I%6&MdyU6c+2eSvL2~#v5WZ~C+`L<-pqpH^BX5*_*zVn?-e-2&t
z?g1SX>1~^TD(?rfIVv3l5dMgCw!S6<%!%Wvd_gg}Bx$Ootph*hy2{rfb+Vz$>rQ4!
zc86hKmmG{aj!O;)Te0DY?LT~oNe|wC+pR0hht3^7x41AdKG4_QmCHoKP6rUZQI{nx
zkcpsXKxC}>9x~V<9e2Z0TkKk_GSFd?)rf@QP=6nBZ*52&$Ym{#25W~ywLWT58-o1d
zj&uj2J>(B(!)U7ITtX~^0qX|xnC@hJ<MPHcT+s|Cmsy;J?7cnxWA2XbIo<8ivK>s{
zKNOBeBA%hs5q*8ysc0LIR5Upm2?TsDo73(#Y|}o@T%Dae`qG)vgl(XxdRci_nX4>N
zaGEYp&Y=|AJNS<rHmDD6<I#=RaK&kGO=a_JnknA6;oHCOOo(&)?0`pGd@|;82X`{p
zZa3qvIL7S7^uf6{qupg=nr@qV)U)yL^Fs?y7o+ouO#Q*4>S4*pmY7<}q(<tQaqgbo
z2OaUM&F{-u=(<-(m)K-II3IBVZc8vtImB$*8I9|9rK$GDB;atWqFt0UliBQ=jfiU3
zk3-_@$Q{^`7lB?`lvGt-f#!o^Gz`8XaUOzRTx?XJIY+i`Axo+vtLrautL6=&;s)Kg
z!O$;$10(|seujp`pq3}LI@&Z-vzZs6!J8wHOuJ@Y|1R76!z$O)k3IUt<Bwi??9$60
zzVG6#=T4tIesp2?<oNJVJ{JyVU0SdVjh+MZ5xY%7g@B7JWf}%&x*7Nk!i{s5l9^(p
zE}Co#7PK0Z@)@kMEU8`>Mvi-di;1<tpy1zNpvlmK1K@Luqx-2zzHewyaCnlnv0#Yb
z*B;LlmG<aJr54b*>CJ|7vYgzfbo0=s-?eaWs?8Ou*mUl?IBU1{j-*rGaNMUsGh~N)
zJYKI1HJp_bk$5_r$`;#|kn`le>7kcb+#c1(^`34WswLwMZG1fv545#~827MBB+E;=
zu0piXRx3JK$Q90H9gg)md44YLd-^wP-Ce_NoijsbE*x<jf1`u%=qvODy@58B>+xK*
zEjQ<g+iY%TFT^_w$@t;k^sae-*IRqLD(#MBdoCM_`aQj=KwAigR^eH4X&7=NuV9Y|
z`_^91#9(*Xf{#h_9A=rV5ap2_kSyaSllFLV^HpiuDc?xCO_3FsX_>EWc5458hhG+U
zDrSS75@UGlrUs4oBiPt*JwSuHkHfqoBZf1H5gBX|77B^DqQ4KcY1&m#G7Q4z{%^J4
z*Y~>JvnI4-=)w8@KAuP`fuC33b7JrEPd{?J$`n-z-0|T*_-rJ*@6J9|HSh@Urp8`}
zXJ)0gdK_<z_r_U<Cri@pT#AOJEXap94rjNX4fZI2Wr~9XQ><@{n8X@L&U)?vFP_Ud
zQ&mMZ#gJxq|Gf3=&qXqLHc~fSlbIOVKmXRzUW*2wXLY^{V>u-C)~kExr=vENOFPIH
zS%AB<3$7EF?n6(RlRI?#&e^H)-kx-uPsPmmg{#pYN`cRXI_?|l4}}8|mMelmGNWOt
zFj*u$MTk!j=X6bwvqpjei6eQ#m15z?aSz6+c9u2WuIdKN4b)H6G~3#yWKFYsLi%Hz
znH~L#%Hl3VRysPJXlHs=o3rmRO^<P|hDLTqk^_p$Z*#{PD|Kc{6CvHeD+JWN?fF2U
z#AJ^n<dDahEz+i_PIs8|j*`4E7Sc_Z?LCL&ghR18V`;ZHt>}VBp4$9x{QvSUq<vqu
zNC<kp4c-dBPh+a2-VbjKY;&BPGU=pn9uGiUhR`as)c~hehU5|Fe)2J2qC1q83(qY{
zrGcTqKtb1{WtCVTehB7II5=ebgksTj7&vldFrRvW>l%B=aAY!1J}En$@}*1JtPBI>
zn37-nq+*)Nr8lx!rjD3~_QY$r1}E>0Z%}Qf&Nppb{8aeH&lDH~aO2$Or1V|*1!-x*
z@|wNmqrowTpS%c;^^sP-axTz3w_JBJFfbhCG)pUB;aZ<yRG~S^Iio*=(1cBW**EmN
z13WP0E@+C|;ft002<Y5qINly*_D5!X=IMD~E+B&*sh)8YzDXpM=+Gc5h@5_x9hLqc
za^I<X0wRksA0^2}x(!$N;~hMb2Z_*NIS(-<ZEU#+cs|>wo1Di_-K!{?rvE=(R(fQ(
zo3Lk*C<x9devrO{cQ>V8>)lPfu(U$r>5}l;SAGU01O^T!8Jc7=lSEed*e&AxYB1rB
zWrE4Bc-R+ii-(eBF}DHeoZBIDe$qKKc7z&`e0=<pzmvvHZjBxYB5g*7qfi@?YD4@8
zUV^>wH;QHh%Yy+cio$<n8n}V{{0?}QswvC=Rii=y5bDC_4|pGc52D6y>2-^Z1o0yT
zSX!Z=$GHeH3Kbgy8Lf8=&;^-G^7_@+deQUxYf&P9bXyn3`0-{(&i0eRbu+0WACEe0
zQiz3A(%%*<G`+QAlNoAq%O-*`pyLW~-YiFtz3=Ub((J(QNHiH(md$ua=kUPP|L9D)
zyyaAKpwt#o1IYnTTYnlZ@q0dAzw0-T?(l0``c<{D*Bw96RW@GuvwT%^cUS)UgOyaL
z&f3GJzj)<f81zL!2>ToUD^kC7Pu<>w=`RR<XU$R+7eQ%$5j1x$LTzy24!PvkM1^n%
zBABHYuUy6aUVkAV?^#~{z5Ih6NskIS_Geo%02YA+2Lmz>!ktA}VmS%)_Glx-8?5Rd
z(6xUH7|frE&cRhy6xZ$r-O-B~QXRe%+03!5&UkFZr|S<H74`#%%L7JsBzN1n;n?`*
z##a>`+SG;!OXb|bqvVO&*q50a1CKCi4{(Me=HYI3@|n|c2^l=a2*^Ev_<&0aroaZ?
zR&4MLIl=*saKJDG+kk=Wc0YyA>WU7d6H;k*h{<Y_-LM&U+r?kx9#?m#*nIH1?hr0J
zGuE#k%GI68J^fE~j$+{T(U*Rxtf?~iyEzNZN6RWP`f@$Vr1NK2mJjZ)PYw_DbeD>m
zR5FIB=Wcel3BLDd3lpr#?M-jcVsJMT${P_1tmh;nt4<fnmMOHn!yx@^dYVFa4uD03
z0VQ9Ol<5HULlbVG^Iwgo9r2M&s!*Iet~my}?<xm+@`jcfnos%FMAf0Fjxd-c(qHM7
ziv#7bX>%HGhr)v%O$nacb-1T&YNd9ESve5$=#C)_N#)F^I!x}Ktg-{ym=Vq#9?7`;
zXBHyy(OUOZ)RpP8Gt<S4zKn_B!FjZ&Bxl=H*>Gk}u4%I3*!5VsXMA{XD$>y}+m20@
zV{V6hn__djY>MnI_}oTqzXE<-1wZzIAJ4G8b?30eZPMbdX@s2w+*o|6+YFm-P|cG~
zmk_`(rmi4h0Xxbv*bxem0u~R2F4{>+(?Z%6zLX)>GI;vt_qa)Si!ZP3t^y)b+4|N{
zZqnJ}%l~laC<b2dL*dKSW4`vGh6M0$b?dzqC>!z~&a4#kQ^odTzL2*AA7KMS1V~x7
zw;4x+^DNeB`Vqn&6N7<6$*~11iI_)dYiQ-c0r(lPqv19nThz|tydom)EU+eKCX33c
z2;Ut~%z!t1F++DcRGWJ+7fW+<X2;IKd6!{#?I^pZ-n68<hGraWBB!PzOsy8YF;uVw
zoFy%z`M8VK<pfh;)WUByg1a4&dSW2qb2=RkTfvpBwYPb+9fLhRosm#DQ(g#Zr9&&P
zvawpX7C44S$x5zMH^Z6z{jpvbSyrLvs+*JS8{n&5(&y{02txC2@@E<1M=%yCt^C$R
z1NTt4h=jpYilUwbcZC+gNj||z#0uFaHppc-L(S&bx9oiJmeJNd>**WaPEs{RJ!?Id
zC~D7_BBjo*yspK|;h`Etp0tC2O33l{H;EVowE%d*A?)84n?k36+O;8zt{UJk^1pN0
z7qV((tYakT*JY0{uKv{tXU^?sdi>Z&!>;nAPY!ww!{vASLm_5MA}%oOo{p^7<Fe_l
zK=Om{Rk<zf_Q*UW8y>IvX?9oH=VB@=?D^-9!jDq-&qfWG$23-!8Mn!@-BfkJY_qkP
z0q2%UcR<!_pvhk8$IoP#p_A<)r@3mw4+Z`@2{|f?AYqD_4Mg~QOS+*{2%-pW+2qRg
zy*NsaxPGPgReeY*fAKz1Jg46K3p_%Wwc{Wf4NjAV6XeBP?3MO*1_HT`QYB{B5@kPR
z$wzV)4uL3^L9hq{stU0a*T`ul;S!QZE^L_vx62-J0G!%C(vOnsY9DxQ-Bh?{PoAm-
z%y?W^Fy(5fHad{6yy>(YR7ZBs_(Qp{taRlyS8uj0<cr7Whu|}^9_Va#1O_e^Q#J0l
zC#!%5xap__j+JuNedj;m<+~<VL*8g!&sDgiQamx&p6ZwbR!ct6!=U3J{LCR~kMz@L
zID;MsB`HWMfN=00ZbLIcEeMpV3hx2>S<|*bOC*9tt2HCCzeIBq!u(cqK;nSK0aV`j
z-bCqNpfN#IkZdtxjG=W?P2w6rsMftzOTXGX1I2QwR3vGHVedm&F60sTj-^4H3e<Am
zw>&;j+zQ)4RJ~=!T?phuEse^)+y|q=-O--vRNiZ3$|2A0LQr#!^iE8V=E~getKK)i
z+mTSS8NV;$3zpiFx|y2@n88e2M=~4sAsR?^dJ+3Ni+%U>t46z9-C603CT3PTdJEOH
zL|}LQ{bxpz^2)b&_<f<zw`I9DKbE~Cn(l}u_DqeoWA>T!2GI27kj)w9dj=u2+@fd}
z^wxm~Uldifs!)^i3Lt!0261&gq?5HJDQ@3tiSAo1P_|6g8iu;nmMH&=-Ia)*Zrzn0
zDKW4u;nNbQk+kke^nUSnQH&DI*?JXSzxV3fsmC!!3L{lXxOWKfO2tsE7Rq@Ih%eI!
z0&E5;058Z}M}}bx0HH3-qA;KWxSmvi)Ck937G{(}9{&*gu`?ZV`}`xfCE>h#ed=%`
z&b=PZEi0t~%>f)wb;$PWG_pPLo^+39|Imuz^hJtX?f)$YH&u5azBG(rm>J50!y`<S
z^IT3FEYaSs^V719$PPZ2>z_B?pLP1$?Y=)}I%y&B^g3d~66jh0>c3C=mAZZRj=rR>
z!W1^`ARI%KytYC_Sr*cIB}5Dg90OC2e85!~DMq}(MG+*%ws!(I9B+1&ttipoQDoB8
zL~*oZG~km8EZ@wkQ8)w#1d>FtyTA)tz$<Vf%esZL08|k?wXqZnSsqD&ku+J(NfmY;
zRuY)V`zQ9?7BgAVC@}6mIhAQ2-s{rM!Ud<ZhpV33rc`JDQC+RtLh$mn{!E}_<L`$`
zqbnveG+&`di7muz{8#G3r)T{N%h)<*V)~AAAxB?17->(Q8rB`9u~=k$)y_)0yPZB~
z(eOcGC~X6s$zo+gEf4MK*F0gb!<R1k`WE9v3*;yvV?>J)R64U~f((&aQ*Y*VN`^5k
zJb?C*G|Y7qk%x>S;d2shNk}0<BbT@!8pBKi)qnBUBtY#~S_3}U1c2Y{b=93oh+evF
z6r-q@UgVaF!j3nG%#;JdH3g<PKQ}Sf-&-ywVy0ahVIu}Yq?$<MARgLE_z)rp(pf6h
zqC6-}0HeT@G=fDCRSgkLFBoJ?jef)%jCvKfC+;!_tNAvlFL-+SKHZxM6v6>VaBTMi
z_i3+8cRjRcZZV=~*nzR$0<>u;lPshr)AFUDCy-LPYS?7gMDMMd17Nb+i6n`;w@^t`
zj*ZXTnEv6TcmBruSPvqYOo_d3p))wX^JFrG%*<t9lfF=-1MK6H19jkcTL=rKmMvf#
z25@`Q*-Eb5@G>&b@p=#?21r>msJT`*%19$6?KGJb@R<>31TeXSIY@XAZdy5D_zW@~
zH=PXad%;9kGMKF1(L$xzP$H15#DmGo#-Cq7sJOHf{<1apPU-GvvWS|9H;I8l+h5@-
zWQ17eMpprV!~v|+3jkFiY)M#mfr}7CRO&$bSB#w?qN~PE=&~TTi*H3Ig9T^>5WmoR
znfI34s#;*&$QoR6d3xf0xc0iPgyP#??%z}8@lfK(E_+V#DXP0?xZng*$XFD-|A6$Q
zY_NNP^+lv?Jq7F694BU)04;eLpqRXOAUBv*v`ASB=$W*|jwPlH)G}!Sz5-J=+#6rt
z_y$l`ndMmSg;%)gOK~_9oc=mHAF^5L+<%~h7%+A``}6p#h}_+7>8SLMx;Z~9%aXR2
z!EbF&cejm6nxaW?h80;;<O`JbGKAP_40t5!n<&)PSL{sJU1Zm~uI)jZM3Wexn^xCW
z`+yGYGP$_Gq=WkxjxHXZn&>L$+fzx8%XDD5$8JZ99)wOnqr$FP&Z-bg%4Jz@i)G>n
zUnO3f<f1vD62e9z<xVL9FD^Dg3hf8pu;Q7oBvFgPZG3Q2^L5#dP3k^(DCD*i4q^9<
z=i+UhEL`+WCT(%<8A;^A)iza)DebM|3HI@zNAXPD*5=b}Y;HIbnd-3Z=+VQ8aL9>L
z2-)sSb(B)$73NF2dLpi3-eV4Ue1&Ns5{X!D<KXr>i+6ASOb+tTN^8=?(*LO2)=t~t
z2-;daUz1RfV7E!|3N<89fFK|R4v1?V*q9DeD`{t2I0UG{xv~NcO}cThL3Z&!&>hLw
zZQTK9UHf2!{{~?W*AL)IKd1%Y#S7=wPn~G*C@q%SJIYxT7(iYF^@xmHC@Zw4NMh0H
zDJoY9he+RE<FrEKB2W={fOTacHz3+rN+ujiagtIulR@vMBDRz`oFd@4{C1`orZW?Z
zs_f`4kGFT|?7Qd2lEq}|)G2#3WCvU+^E)3dR^K#{WWKdr@RmEdTYYF|kgKI&dAvWM
zLVJ&lOf9~5xta~w)PUj7W_p83o7^@L%6Hhk;bgWP4*NgtvKhhShikh3<jYJsT>1JF
z2QLQgileA-#ilaW@6ld4a4=(k%R>d<5tALAKNAi0Karg&qC7~EyH{o}d^{bB+L=v#
z?d#ZZkm(bZg@yfL-4hr&byD>dNnS_s*QbQM9szP}hLD_^n^ED3w&XPl%Akr&TLT?~
zi}0){IkckKAnhV?kffaUeXT}UT^E^zs3ILXI9(qd8SL+DZ%YLI0MB<T^L9w$5XFKP
zFib=oKtiB41j_h*z>b9oYI=@Dj#||w)&9Q0fo>GCpxOdH5*mUwKxzscQ48$s7<;x_
zvpdNFoodq<JBY-YoYlAw9*$A<>UP<gIuzLF^B~WF_)=Hvvig;DR_QdM4Q0)aVhZNw
zfk5TRsZ%ItkYlJgDBIyZo**b);~Rgl@hsPL*@(h;(0V5uz%mwACwGrbaNUSOkf8T5
z^DNCX*#qx{+Lhr8N&J7I8g3Zg>6-M^Gtl(HD<aF2f;)~(t+uY9Fi0%=aV}!?Ru;o0
zvKR!pT;I%nrCETI7D>d52(ly@ewB5{t=r%_NzaL6hxYHDtB(y0l#9t|)}Tx$lE3gV
zw}3G#kb_@}|KW-B3<@(l#YR~_DN7&J-(aE4s!X-?U^XYb*Z^vg=(<j_5+L~t!&jX|
z!As$5iuUZY=IsHlxmU*=j)9$;@AjE+$8VfJgUpJGw606fg;o9((`r7Av-gc@3%-1q
z0k|FKd-mFU0r@|soH)*MxuY`)&*1JNf437=0RCe}AmQoV2b{*XYcLobKjQ(l@xQDY
z$lfsx6_gc9a%if4c7e>Iq5KT9%ANcAZJ)uT-~2R8H&?yqr%J;V8@_Y%2XY0va<}v=
z&+J0MP)keZoBroTGM}6w#Ud%Fs#6r`M2Z37xma)w>BO5hh6Zdl7MM%NH8;imP?v;N
zF2KxW;ak#;89^;|dof-uws*qer=XlBSST|J5GWuZ<0FJXXfcY|x5wq6EWx8zN(M4R
zWnqQEp}`^k*|DixPxWRx?X0VB;lQh+vgQtQfMib`j%MT9zS{#f?p@6#ZoS`=HRju8
z?hWLDEV|O|AfyLXbnKrNSC;!1)^9aJCwlvyJdCO$HFEe#6q`D3+1pVFMlL;23LP_<
zYgqFJi%eIZd<uarhHi#LoPbG3NcS<R3+Ux~(~ksvk3=3WTlpywrCB0CUKpYK)@8Ry
zUx~|t^-)WTYn0+6inq>V?reAFOABLJO^XRmZ{ZYT25-#XgGIsKekc-(wpwPTlNFG^
z0<&xUe=6F?KdB$Sb#i=Ve5dVq&zul^tf*J<amQqOus3_IC*@G)CRr$zNCk<d-z=Ed
zc=Fu+7j7HrFmJ}NFML!rynU}*-P`V*J7fsnec``>M~9$CzQaF^2<m;-j7>r-qaaI$
z3C9Ge7m)AK4LfiQ)RO8*2dc<1sRm{RW26Lva}jQo<XASD!{Ks3X^g+b4M1lGsU(#m
z?sTPlzyU9dNO_xde(lWhBOTFjM`ym!k$1u<_X{S3%7Cr(K~oe(uD3Q+Vj-Y^&CE|L
zD++3m#=wMI^G*C5ZjlHn;=zF`xR%n1%?9MMiTGK|Ou!{>YY(fr+)l+-NW-mF0dsFk
zn|cyG+;Ay#J-+oJ)g|+ZRA4He^vJU8^Wv>CX~>ty19;GIrpGFCdrqVd6xxb*APivT
zbxq#*xvn6;2u*_Of`}>R+2iF<@?YgTP;7TP+fzcin(6XSWajklFf|1~U;6|pawU-V
zdELgwzc^uq&Hnb)D2FOiHZ)jFq9fy910C;>-Unn6nxW|y*CZW9L^^rJkTC6nWZ0O^
z5FxP5KwTT5805DDm9m4R(h58^%K#7FtS9(_>oQ_(O%k`b(oYy>WcbdUS~|9W@BG}@
zNPi`pj>lk}b*$1pM;X2v*<3hLLjAXBiCQucDszRB(DQ<p*+Q-pF$@R{tX@>kOv-%%
zK%xQ;OYwjiP|%?X<s~9sc-OhCHt&TkXv&bFWibKHmUZ@1i;y~E-SQA04Y)HQ=9J}h
zx@XiAjyYhhsrJ;ZPr)&9>yEHzxF?-<X0mt*?(wf=(g&HnWf8XMsCrCYkP+nus$K1f
z3>K-(MOPnxHDdEZ8H<tOovHGsr0BYu$;377Rgbz5IBAX`tUZ{X?8Wzmy*MrXxb8xp
zT{*>6Z5j12lzSn=UXtKmD6)PLMWHBsRCR<Z01jHw4MA~s+$w~^3oA~3u@0hq(drNt
z9mv`gZtw&Z_f)YkyY(bDVHuTHLkgPUnkehr#sr|Ti42Oa0^N@@>FD8od-u#w*K327
z&TKjwLE85;J58~ZsM)bZ6_sO<)ti_Y82>BAO4ur>Q;MI66RhAJE_%Pn4d=2V`h}*@
z*rhw)_~NFAEZ2A@ZdXqo=-Thq9Htqngg_`qa5Z=+XanOYnzO78K@8nK=VIvX551T*
zio=dgoZ7QH7dd>c((df)(ov5fM4y}ok5hAfS#|r!+LQj3Pr_!sN&4(FeMkwl<hG0{
zcS)*i-G*3}R4r=P;4L~AJ#MERmff-9_jygk%%pP{8|2U3q>KByF3__8qr?rx-I25=
zZ7d#l?d?e?F9V~NFv2%I{rXqG^08Muc<<eJo<Dc?%<|F21@F<qaNc{gln-oI(ZZ{1
znmtgJobD@BAwQ53rqIqrI?MOF(h3p`@0?&vsOL5rY6AQ~s#{1k{B}X-rsqg<k5;@d
z)OU5WmJ)9{fhb>c&hF?PG3<hrz9AIGMs$y&Jn_VY<tAQfq1)tSdsva5lBq`ArKW@l
zkZplu(Nj@-(>k!3C!WY;WmUJ^oL9GKsrW0-qT8u8>8{IdYq7f9&A;oh{77+0SB!|v
zR6~8?Z&aDmxp4SVJPo_hv=$t7DeU!60=C(95hMZspfr&^5B`~uE<BT`7@?^uA}|6L
zfaY8zwP!h)E)i-Ivs}6E-gZ4eqK(=dbS4PxN=IBEzcKGUUn-vOwfsg@B~rN+OeZ7}
zrR0KgLRSmgkuNDIM{yR3ZLUD*zvc9^N@p0ggk)OXrIlT&INUhKvz;cAT~9e&9e~Gx
zB;tJnr($Ok4x}@cWFZQlp5JR?cHoX<CNM!%r-KZ*O-8Mk4m3+~`fy1^O>kn!VaFWp
z1D1aQb2KV_<Qc1k)KaHyfG$)NOJCeJR|FuR+;YHarmk-#G^c1qp0@>E(0&%;USjfq
z;6b9SI|=VRbA!vMjG^=i-AI)Q@~zuS?X|+oGUQu|lIknd3-<(aL1m%jFOmq+q*~ae
zs3O&9x&@r%V}EcsfSO&*ANO{hiOjj&8n^j6H2D?Wzc!@@M&}EeK#b)gs_Y3B+-hRL
zCBK~CZ%0(?787d&!h>ZdrnV7QhYr};NME5E^2bZ$-GsPp1VH-#Cf+06wSswlTKZVs
zJAx<Pd*M)3xXXw+ntYhHAx{88Lw_O73NOQH+C`-Aa5W=+OL<+>&V6+|I2I@c6}J%g
zgJ-^e)s4vWSgz-o^u(*6oX(tBTG%~1Gd(d}D;2YubUYM*1M)O`z57}R<i#`<O|lz`
zi*yYXRTEJlWDoTL1h!gX6U<DwjboRNrr80jgEq}VBLWtv83Nd*rfOC$<*3<C&lMNt
z8cj872&1D4O;jkb-*|LT;ixiVveUCG+#hh;bUC0+4q-*h>KQpV8F!Zb@Yfa1Oz!gS
z@jEf)s9vh}^~z(DOfyk+X4--(c|eNhZa)#;f5nHnUQxkCg*JNEdoJDH4a?<{sT>Yf
zaRl7DXyu>A4<4|sePkC4!Bh1@yFp_)J$g*O^u~b!g@t<p%Nnc|JQUbEAzUKPcmTXI
zDZSPbzBHBjGF7@rZc;OnfY?adGJrzOB}zz0{H||Dp<1h5fNFo*TDOw0R)vu@yQ%>g
z!wp?IDUF9B`3FlV@QPiDCaz-u1i(VpAYc$Rp~;$p1v^Hz3FmV+FfXp$YV>5#3ml<1
z=0FMc)AiZ#>@3QnGujgB4wKKdl=;=ujVLw_j6qYN!oI{6)xUhgWwUYl1<C?I#(<;A
zKf%1+F1@qvIFKZ(fN9$T(S-YsB&6`)4V0|IgSY7p<m3rNvz)->l}7GG`&EsET*V3F
zfj)&yU3V38C;a)NhxhKD8HeLm&gY_Gp9e*}x3jY?f1YdrK7ewz8GUl&`~japajcnx
z4X`E@SFRP7Rzy(qH|uzLQIvabYqtv^828t`%4@eQ_UbCIjs6cDf=AAt0}$tn+A^B_
zlw#{hP-L&Wa!aATK2$KvTd>em8}DYC&(HY)pWZP>HK4NYOzrmXV0I-6I3cHVA59p%
zYckF<f8lE~^FMV7zL{mGQ7ZyF4M8H_M?pAvpVTI-4exy6{Sb47?^QRYjelhzzSW|s
zE6LA0E4|^_y-_3~TZTFbn4AOvmXO>#160>n9CjNrGnA#UwBuEc+*dV1Y9d~bQ*XKv
z;3PQWS8hRxi)C7@fd`*mKUL}sy)9TB?9UU--H-ZsKs_LwzfiOyFoA5RSYT2il_#_q
zxo<)ysOZvi&V*dZ<ik+}1_v9fs<wdBfQz>b{shX!bvFq1dbv9zG|$p5Ea+N3!4)h+
zFb8+o6#S<-N<;Q`!=7++1Fn~+JrK~8-QK*-&O=^(pe=L<du$Z+BD)S^DY9o*U{6pt
zOc#h{@HRwi3Um<U{$Kx{DXv)0bnjm|QnKoIk~lPpX4*Z*#y57py^z=Sw;mg3xeY^3
zDexp<=rDD-H8AUUApQ#Q&mey4m0oUXsUQ#z0UyCxzbcJS=+V|iI0Vg$l*YFl0v|wH
z@W`3g4cwHSjDQf$nt<!l`_GPbmaz;VQYMdgYt4!<B?8M1x5{8J{aeWhD`w&eGwE8o
zJ(fSV??iX^si|F0p5Fhx-7}uh@VRV{hmQ_uzK~HLp6^H*jDLnZ-*nrqg?o<gO?sww
zJ^I+!CkDQ}e_eH**}49BD7m<b0N6D=|KO>8sE+4S4S)Te(A!JWTdX<BN;bTkO$MWF
zX>Ni@ByGj6qYUGU?!LaIdvSY9p}o@p`WZR6s9Uz~drcFIf%h%WPC<uH9_uZX^QF84
z(B&2+BvjA#NP;5BW*$bYV7*a@0M51WHxZ1GQ5Sy@Oing^{B0)r@@2=dtTzx{pNO70
z*4B0-zn^_m+u_axm|bN#pKr&UUe71Jz~dY@RQxEem`=CnJNx&!HTJTX8B}Ds<@fVf
zU}ljqdDG6FP%ru9d{@M$(Vl8Dcyv<m=nyt#Tw`+Gxi(cp*)IeEZgA7*>XQ_dEh$u+
z1zUl=6ycfbhKd5eW+@q%xmlc!dQEI#xMeC{vL`sb*%MWnt)2uN^xX8BSjB~`@z%3(
z2diJbdR>=R&3J3Lt*)X2Imo`%(<{q+c8`tpR69!@9Uhw&26jNTLbPU^^py~mCWat*
z0O!d;Lu%C`F@y`Q8wx@xWsZ~_0Z;hTTuwn(EEv2-;)Y}N;;}_|=(1YsI3q;sD5Pz5
z(5L&EZE?>92U7w;*<Q|u48^c<d-b^Ty@^T+>x{Vlcu&Hv)Q2_m@ZOUJv+7pZuf<Z)
zd^R)ix#P(y@^##7ilD(=2NU7yY*2sn!UO%P)>%|pHk@$S^tN9z+5hR7^#{8g`t<Ae
zA1wG5*KKV7>aznwYu#QWmo3FI1e!utQ77})kX7uV$NY7B4u0PNz?l|XV5x#e8G(yP
z;A@JhAt}2hzbG6>o%o8=&TTfVS)!tSgeKNf1@gjf-WS$rTVJegYWAho0+#;)rfNQy
z<B28-dUF6b?^*A@X(tGQDywI%>T83QTZSJfJ#gP`>v;b&r<V^OAOv!Jq`$9Pfxd8o
zQ(jbGG&QbJ9Hd_@ZlR)ztzb)p0Wg&}!5olDAy}F)eK(xuAel`OJlsH^{Q8I8+%~n~
zDL<iT!%kN)<nq{%Typg$RdZ^O+ta5{O{O#3)C`tJYX0Mql^BnAbZEmS)<R-slOFK9
zVu|sAR9n`G=*YsBuW~S9g1BpcUnad&mX-Et^Bp`E4hHfLtUT!$)L5++7@u;Ec{zK{
ztFO^P)%FZ2cxEIMd-h?QCf)7r@5zx*x&S_Vgnw2#Eq%0Zk0YYkh3tNd%eD|iBn+@7
z@WK{s2&Ds9a0Q0C$ya1TZ`xX@39GeOcd~_KHg5}UX~B-Trz#z9-CCk$CUxKP(&2;i
za|3;y#at#95oyVqC<t!Gazv;q%2DYjv;Yb*$m^%on1GwDb)@9}5FdzCCT$U6u|X00
zB#=hQirle<MC;l|<oPL|UYfV_64JK*Sjro{W87muQgTI|(BRxTBFi2F!30z89zGEZ
zzP{#GHSf}Bru|&EjoVDck8q8fqg2r$tG_%x$?XUG9pQ<f><yW|9ecW_PUw8XokX3!
z>whD%QjleiCZD)vBHpE!l9OJqD;u7<J>s0QbGu6kf@t!0QP`n);BYYMV=x>A{z0tt
zTX_c7eJc-%3LY{$@<jwKmY3sPB!5^`We`+^1aPwjj5~os9QlIgbwY&d_Kw1XrE+J1
z03kS$(8IM%UpN>JP@qH+GUl0-v$a<3Cf+}(Z1|y|g&z?F1;*4+|AfkCRGobswh+J;
zPXk3zZ2pLEunU+8c6HHrc3?2r)S>gCw%cJJp<2?lxH-2|*1B%VVdD{nJp=szzk76`
zsvyEw5#YdyRBVB<WLw0*`zZW{ze07a-U?zV6a&JhI$4;Z(4SXgr(;y*{5klA<hvi2
zKK99J#&=n6P~2!DvuH`4JMkg*cWA-yq&2T@0+wzyu>f}xfGG7Acd}5}<~^uEz3rN7
zV0EkB7EiGXZtGD<<L(_3!$aL&nN%zq@w-gvI6F>N5KT<|>Y(g;Bo^GfrR`|?Elf{9
zdd;Yfhylz=e4#+}<p*z7*tx9`>{?jWS$4*;wqdAu=j3Rdt+ssp(f&h7BsSf9^$ZV|
z)1JYBNa*eZ5v+)Ldo!)R9VzYkNZ;M#awae^Hqd`WVJ~;V>w-@Ya8JOc@aXLuuh;8C
zIkVHW)*gQmbUF(<&7&TI{GL{b71XH)8fYli<<UY#m?$g1PBgmuB4{Mb7OF?o@ly}c
zo8ZvqrFsG;NWPyg;ikvMO{Epl3ae?!5IOSRm7!em9O#cC=#VcMXkkbK(G!!qg_mMk
zqVQZ~PEfdTVQQ4*>a%Fj%w@30S?3$yD9arVnPMh0Iot2|p=yN5wt8;k*YqIPohA~z
z!xa#b5(FB&Umd*1V*%b~o!=^Nv?=U6KTr)Vj9buDLM|)_weN)w>4=ubkz92FQR1jU
z0pKGelL-I^x|K<oTZQKKVd-;q^MTvWj%AWD-LW;raS&JL)E0Z3VCM{EL!H=>#(~A-
ztr+$OO=!~^ha)PQ2w||gw(f;g<a(<?y&XrA<9@3J&3p4P$Y3=e-JJXk_9eKuzIO7&
z(ftd%M~D0Sdb_J#9r<w3Wnh=+hiPvWQ94Op-_?`=hX(^btV@`pk_U?zXw{Sj5&)<s
zgcgBG+0tp-WW_=Rh3c}%i94W&iwDsON{|-|-$(reEjP$6PPWAa-W{$wnD4>VkQa2w
zy4{#=M8n153tpQIi2&KGIczr8w{vGd>Mx_FAiOg@KY&Gmx@;d!D$2$mYJi-$VRuJX
zQZuNN@fa)$9rhS@PokQYD->o}a~RoJ^8C%{*>tvDb|RgO_*k}i+zR*p;0KJIc;Ypu
z2^%!GctfClU54_)ZzF8@r~eraS3WZGib<q24TV311&4w!`e0i|z!y(T@2&gBM!<Ya
z@bLI+&OqX}K;Sk5=pis*U?Tzpb|BgVP-WV;AYh{Y)ver%+gk~sDk1vQy$Gwi<}$=C
z^7QMUc>K<@r%xU}xO><9^l<HM!OlDwIEt0#$QqFh3ffjdj27TQPFjDTz&0!kuZ064
zD$^jFMf62^?<7Zd2@RXe!iW#3zCe^~hD5y>PKg>$p*``O)(ylh2^t}|7zq%_cO9F~
zXzo4z{PuN4u6D_`YD_>Qj?Pg>r`^o?xgEsU9Ckg&>-=@H9&n=SkH8PO2(o*3bTHvV
zum{2Sjut)rk1NA9#a2xchNs90@1FQRw*Y@NQ+DyT{j5@6;!2htYEIS)oesrxp>4nX
z@&`=)4Ufx6BNKW;NQup7!YE>=l;8h##i2Xk?|@CH7LA+)?As#?d@SY|d6)Wu|DvFb
zR(8^gd?2o}$BkClM2G!vfETv|x{7eSYC^*Z9{CgS$erMkTcmf@%@d<oiz4--dCOx=
z+HDqaX$atwd=O$50yV9b<OMLtHI0BHY&8;P({a&R+=&*#U3C?#kyNDR<02<8IZ~^1
z=G${^(J(3oZ&B6=#FU5$n&2+HJ8W-8LEsit53+%Ht;FL1)u4cbz#oFEn)-oAOpq~D
zi17Q#meO^(zmNZ<GGrAHju$<TJrdKMy3H)1HcccQr;wJk5#*2$tA<O94h(XmnuWBx
zs>Ansk#JP~F}wX3|1*U-(oWC<TQNBKhfz_0N<umB`L%c58Xal_f`V|NnNJjffP*D!
z;ah*_cR(sTw#7jND<TBAJ*YYShv!vP_6O{`-GBpR$?^dNk)Hvb#-#T=)4wg3h&5qI
z{SclY(t@b0MtDemJWMINP!$mE2WLT*H*G9DdeK-E>gTSxDQy6Pl!d(Bx}{aNPrG}J
zNy8oGa1GU%QCL&VbHKrxg*zm;h~k4(4I*mIA-O&YyMKTX)*s7HuMMDHjsL!?|J%Rq
zSj|jl+fvBwYaXs0ROF34@BumdHn0-guD$xMjzR>WpexKKu}=AK_{UV)bn%V9-S`SK
zJmunQ*nrVgHvXLiQr3{fWPUb?UA>sSv#>8n1)lt?=!m)6jlFCB5PMf7B&wE2Eg7)C
zHJC0Y;uWeXli2>?P<vjWes~2cSfX4vsSzxEq)KCfVdU7UZ?j^`gi+8&Mr7rus*Eqy
zJi<T6pT8F}OPil5c=DI94oX$Lrl9BMPw@O(x1J9oTTTqdeH0`lQpkMk`C%-y8~~$J
zM%Q{Q_JgwqQtLl_<H!F6m)~;b>Cg9WJsm4#xSM;hUs0RnuA4xlcVS4kXBq9+K^s67
z3*A-~04>a=B}%A_79b7x0LxZbAvfVlqq<1LAY}etu(r&PLGhPWEdA)|>UKmm9nFFS
zdOwcWc-TNq1o<f|o1f#Io8Q6iAlNVH%3Lp#!C~~zPxvM8VX;*aveC2!72u#?s8>Kj
zxm%ED=HGbeZa~W1@cr4OY9cU3^q`PaL_)%)bDKZoDfS%dZVyT?uiFt9t7+tKNSDzX
zqjsdUP>8EtB$>j}6;vQmiF<PuCuwo9da{Vii0CC1B4xF|am(d8Z7j5Ne6+u}m`}$2
z9%+~j(;^`739&qBDKcu-i;!r5>jlw71qF^oFiVz?Xc~s~F2F~jP*!XWCqNF%H)UTm
zgY$6VoTlFoGi_77nAQmPIPAf8iwI#MSH4o8-FtYbBax5TJaTl*Q%t2oNv}Wb@cIME
zxKj^B*@rx#jqkXPP!hYj1r`JFFrheH$5P>p*9M5bUvnK8X)Dj%6Z8A@pxrZ3$%Ln8
z55$dbpUw2P`~1siH7CvUU7J5+e+~Z0q0;$*XJQD}THbsf0t8*6DDb&4$<RSfR8vg1
zsGb!m_iNgr%Z=J$hPgzun@R@#rX9;;b38{g?C-<oQJBvFP2JYak`eGz^`Xd@_?yc*
zEMSP7KR4Ij$L4pMnRcyO9^2WQAL*?Q%<(%kM-pYMvYHrn>ZL>=?BkB2&0Q*L-Z&JD
z=6mf^ik4fMIdW(+-*$91=3x!^VPu;9FMRG0clYI1b{9i>MfHr@X6_<BzjgCp*x#~G
zOM}v}XS*bhFclnV2M1Ci0+?%SDKTcHiSl_V1Cg{YLzhDxP^Ixz*RlP|Xr&VyRzcCi
zyjdEwiHCy8TI(LR^Ho#-g6n8**!v>Upl2o<LAjppYfsfmb|b)L*U(Zl6|oKPP~GdZ
z*@%6`$1^c+ILlt;m$lI0(G!M$x0gEuy=DMakW+q@JC04qBa4qjUFec5_`P`#2Hcdt
z8u+4)f3)b2>y81GBBmg$*n-Q7%BvEJKXi_LF9erpniZ3SOJGL{)5QB4hUHyciSusK
z3p{h<UMPQSK86B*YxhU-yc;%$|A9FDz`oh(@zK7XLVF?>@Pg6mtWI${6O0CxbhRwM
zm?V=R)5ZoC7s}U)G%iw|Jo`1abKZPA+b+_oa=l0gF3uSKWX8w)S&L1*Ezw45)aeWi
z+T}iCQ_l+x&7Z<HS(aogzH8<B(4#JF->QC5YjN+!AGQQM>2A}Efq?pFs*vwH!M|UD
z9<9K-_al3NNLB$VO;s}-yS9prNx<i{wVfCL?2R-s)Z2~5<-TZTz(A6$Cg!UN(gL*I
zny#jwPer25-8r<J!1AdD;C!(07d?ZDJ7_yJXz}L6d0TX{*k`y-)YEO)nMy9!Y;vII
zQ-6|<_<S>MX7psf`|s=7{XQV6(}F?g-K^MmJfE(gCwQ+tg;`4Nd`&2+h4;m=O2;22
zUS*r#+Z<q@15SEG`gz>}_gE_BVV#LnO$cfa(p}g(`8L{{5q=K|q_G0t45A(jP6d=3
zV_;TA5n>wK+P|UK>IVt_4|JsX>ZTp30_?_5tan}aFk}U7_?KBQI&=b5KozL15fb*{
zI()D*KibhA%@5?P4OMEypMXr^-4K`oufozRWT~Jtw$!V@+yTV`4dn1dL`g7~=75(i
z6DQO#^<ifUegG4SD?ZRqKD0VC7;kq)(kblwnX9G~UaU4s_*9o$x4Yy3lM~TO1?^<L
zt4g3>IGn5@y6VZqy&=BZ7S_YI9au=9yAc>Y_1y3+z1=1+q~nF4Pgi27&<T5r3+@%e
z@#fcZG(yH-)k3yMI|is#GA}lr=2CUDpZy5@JSH8M{`Hw6YJN!}yD;q)ct7NQ+-CU!
zx-Mo5lx><Lu|=HNJS8SlCgetRi9YZlQMOIa!%KFe>R_bcWXiasIv5WWonNBgFVsbB
zSJxUJQ8>(`#f2$gj+JtIR_tFl#>Q;WWMRurVqZgRmnJ^A%?lA!M3@x{iw$<#m?(*Y
zD?$$XP_1Q2NpV@BwD8~W@I(mT$hUc;6$f*}6OnnT$LHuCkWbaqQSMT^Q%p&i4*%#V
zCI44PpUj^hG;O6ks?vLPPZ_2mnMlWd`vbTWAS#Vw<q^1ToMmM5aQ*08(r(mV76F+f
zq7VG=o3cCH(Kj8<eQvMp9K=S`e<a(2{me)e@0=sMI|u(S4f}IIy7bIEL*{zR?x30g
zepA!#7{->}x#D$D*hD*kd1)gpWIu1z;VL&}TL+jBF6~*Eovsa)OW9Nm#nUh$2lxRp
zA;MQ7=MUJ`ma`(X9c8tfF;devBr6RaXw5PN5x$_6*(emRI5xtE$+a83^??b~lf)7Q
z{7Y0Zzl@m43qi^*8lFPM(*+#DkucPmUWYvnc#k%~VZYq6A!IOYj@Q4HYvo#RqB?f4
zih5<AC$YoC=G=zuz6h@rf}O7%vPFGrhS`n=(sx`)>n^X8A8lC=*!xA;i6i{2SQ|bs
zE!KCrp+K+$D1adN{}2vqr7s8rcDGW@sBoZ7t(sX#OtsUTny3wSc4QFooAb{3_N+|{
zHTUC0$Pay@gKxz|kbSuEj5XIIw8BbwN7gjfzMl(w!}*Xm6lgC)%9oku@n1JnGF#Sk
zhu?>__6qZ1^RUPOBG%)<_7Hra(3`4IXY$YFfG6PHHapdv(<T3m1wE#X`4ZzET9l(W
zj^<r}vN`_UvH^CNn3q}UHFbLw^MVz0!nib*&ej|u202gmXlsfPuVaRq<*8&?NZ(v(
zj)f?+B<<$ym+KzWG-u73QmDPFMDt0@$SlsI`IMWJLm>xtd`H5p$zfZ{K4ckgAMqg>
z2l`V+1f2={!$m-_pVmBmd+o+#NbhwdoXm5i&j{wq?U?E$HVF@>Jjyzg!zg1#X)7UC
zOM&)~FPsT&{G}%A>9a0A=yk>Zr1PEu-h-SRG9x*^C*$YAc(2KxvO8VrYODxdV#zc6
z3FP?>>8*9g8U*?nR!(khe_uta8GBuV(}Z`oO{%T<ndT7~4y0Ps#5QC%=>Vy|VFw}A
z=Yd!*?yisZ_5}TIC#3oge#e$n2jtK-){nI1P_fXmp(s2R(Fx)?Oe!JMA{gu+-P-ro
zva%3(MB2^Z52vn`_H%O7+tC}#WfG}$(i4scfUk!_p=eh!p{v?OMGqK?!{^emOS?=E
ztd4y<0?7`yr_`@cs!mm5k)Z7cD!{XGryO!t2EE}zDqHq@!f6!JVK-X0w>J|7V8CMg
z-R@M_NO0MojRujsgo5$*?(k{DWn0Op2H|9^ABkV17>GZm<A@Q5LAx&LmS@_xMTpol
z7A_TU>0*i$QEN((qLtf0p}-9r2r3~cSgw1yRKlhk!cFhuU1F<<7jx5z;o-S#x#U8B
zzMZ?a1=E)2UFv6Q+jwTXj)YTfI<Il6`#Mpn{K!vUv!w{d`z~Vb{bBeR4@n2>`=WlQ
z?9k2~5ZsE~2sEN&OC#E`kvbwD@&X8jAY}+C5tavcdPute?mN$}mtt+j{z@TSpyhRb
zEa4>9fqfP=F@zS-Ph@k2;m}ciE*Q)L+^!fC;jmq0P9V!D$q}+mmfW&2+fKFwK9|iM
z#D3k$0o9d{x>dz7{MH1sRd##qci2o%8=x1@U=k>oFgcOlcqU(kuq#_ur_W)JrDfMR
z-wAZu6^ci?+U+*$%zmuYbK1PbOipBUu~&_~c*4o#kjHB`hx=G`%*}7n64i+VJ%CY|
z|AJ+c4iy5`oZZx-j#u|L&C)S{`p#Dw@ub0GSg92=gU-+nPv&;()QI77WL&|+NVX9_
zf<Bz+b3)o#pTUMW>O5dDzJSfpP_Saqib^8Z1#$uK?}AzY5p70*6%2}3L6C!<$0M<L
zaj;w{wzfYLL?LSY=WM$*@6fX#5%y!Uw1${@k2f4{n*x66tnKRmMXdbRd>1>AKXtnt
zo~`MX9bNt5=pgb}&e|_x>|3*{zV8FF%gkW=bu6~S9CF|qKSQeFImsgxX}4mqt|-3*
z6H|l&HH-?&NJk+<kg30Ea+-kzmY}rCc3M6p*&SW`yIp%{4?l6*6PiDW9k284ZK>gS
zB7((5cAlH`1FB%J9yzse@}mLe<U%}h*XKL?gYC<w`l^ut)5j_RConDz|K5y-aV?;_
z2+}w1;HY`P_IrGxn_<@hJjc+m+a}T}kh>;rn_K#OuM}1Ih|0^y_wB)b<~xc<cVXj6
zs$_)p39k&*&f#q?93gqYNh#D7`<TOyLUTiYu#{#iEF#Ko6Dg{56O!EW@KB4y4r-uw
zB%8uQG*}0MrG|<=qb<aP!K|)ey9prKcF!)~tRI<0Y(<^LJ`&?{(BWu_&@0Tr#E{nv
zY~fZ$JEY1YJI_Ro0SmiIa(hfUd<5l(NHri*0!TvXCgw1{`#rnc-jtQ!I@(`M?AZde
zvTqc)&LsOc%x?`<Dl_%^po#f~qo+0ZZUOyuU0Ok8BSo*8PTC`BY^1llGn<I`Jjm$O
zSWUzt0*<1f11ijtq2>m{)=Yve#8l$%=28tx4eFYorkB{Jg^xDDly8shRGdp=9f?}n
zX1C=W_PP1y%pqT@yXIoi87Gi`OrE#fp@jmr$^+M9D2|iU(cr?XlKvk2n-XEew(-M_
zZ(DOE_KrXv&7<ndu>*RBJ#a(ZMCce~Dk#ppt8T|85;C^d(OQr~28ccY@!Q~zkY{{>
z=(@#?)<!FJY#~Q&2%)}NBWt|`vM!NGu|1Dc87y^gnTOV7!snm~B(@!-DI?@l=zUAo
zY-31E$1AouzZuW?!lkin3{HUVPT7>6l9A0S(BRN00YeQ(w-kzM7M7iC)J)p-az0-4
zdpfY(+RbbS+)us17Ed<yhT>iqY6H4=4}5_SU|!~=i@;iFpSvPLMVc4~LgO6jWw@l?
zhIhyR)`kmKWWB9!8{oZY#j!8L&6@$?n46iJ5Gz>2*ntfR4g6C$mZ2jEPh>HyR3bQw
z@;H{3LdjTji53Z_^@nD!g=(<HoYRx+3)@^qHXp?vK#`$crCi2kq!Qk6#;)2TeVIr&
z<#KoCZ3&kx)pe+AvMrosJF!)<9gBZZC`JqQJ=w0pu3*{iNxH(RV$j>}QEYM3?1_fl
zZd4UG+r06f?#ZrFJO^{r^r0TaJ}WcQ*=M|Ph$)^Wuqcgd*tr|dFTkmbIu=5Jlc?YY
zlBlYpB(LqNCb&ke6iGg7HGmg|C(KB763@VFzDTegDLN}675WRZNuC6dA@X6dqo*Ra
zU<uL1<}MV%WHmXhHjq25V-bk6*zNa_vzg}p0PCvi&b4+8rLrn>nx072t7>j9*wNui
zl~QdT{rMd0Vy}i`!}<<(U^;HNlExmm2-y0{`L<9`dz+VOxD^&=kCw5cg6fGzd!ycg
z4(BhwiGm<u*GGZ1ACz8ScO;?o$2yzU)-+Sw_C{5p_OP9Y2(L(8;r%^}lv>|b$k+`=
z6dOZc*(0^t?Z!Q<X*?($=qN^t#c=5w$ABVN{ILR8u~{mn6uOg42B|%;7=>ZY%#cW0
zZ<)*5&=tdRP*eP+RIaniyzPe8+m-PykZZNbWS;|BWv}K%;II0#fkH9tl$oPEFgoS*
z1jFv2-->F<94L;tVyavUb=}gHh|E>ONb47M_)Z&N(cM0Z1dA09Qc3WFya!WZIpVfE
zIwptPy9P%mDt-~-3ZA5x|A*}Nv8J^Xd!52*Li!If+1zbWFklN9j@AlAB+{Xw5P-JQ
zG|d;p+i$(!R=`fE@U|%<12KqMVXw(mBmTB>G?pq(&G=KHt@lE-p4zK>jBJT{+w8V6
z!|WUk=?qcn6M=j=Svc_EY<nQIV=OawWUAA837UwDQQn;obsa1f5_`CL@n|AiNI9Fl
z^eMdCY3aebSpy2yMJwrrq9SI>1GxjJ3P)aKDgbvOwxlEt`G}VN^HOPG2Le;1lYkGl
z+TWz<a@{N?W0g{^P{`Qe=jU5m`z5Ca=FpN=VL}C32b+kZ2+O;$RNM9`C!NM#nID_p
z*?Z&Z%Nz0zo0h`XJWL+Nrb%twpK-u@klVtUv>j6l8U(T9*q|@ell5zId2nj7|8+N*
z)pOlG&mry@vU}vP>iv!uPilLg=yiq6WL{2|A1l&ayNEjZ<9844_G)35iS59oQTUb&
zHsXx*;kt9O$_>Sbf8ENm5+){pP%@B|HGs&|&hHl_2Ui>%;*2KeZJ2*6&i7!W3@F2s
zsAPvTLd2+9{lKIDe`!}58`pK6@4av4&CGkV?+b_XxC}WQ4u>2LC5oa*4JnBfDbkWf
zZMH1SBWWy+EG{M~$*!Hm@YWq!9Jp@lE=UVEK>EXoV!LjO0tVXrFx)0h>c$O%0x62N
zK-~VQ-P%TAs^7WqjYvwAWTzs?d3y7fd+#~-+;h+JottmOCUoKUcivaYaCYp-?1Ayh
z&|tYlka8xF6>zdn^V1$!_K@6Q63kpD$a)^7Z9cKBNkIv}(-5X0O=CTQprt4kxe${+
zW0|(r1%i|te0Dh7Igl;4NTYdNbER@IWxEjh&eo(y*a88k-Ib4bbxkxm^!8kPe@n_A
zYge6GKzF2q3g8e5nzP*OQ3LSw23?u%jJ^Y<Sks+kJ8yE^e0yB)xm|%$S96a`IK9Sb
zAhSbrx6&0Mf8L8gA;nvC{m}38m4t7s1&(vdgYWT`qJBA7%0h$OJ<NVw@imd$h0meT
z0Uruw7n8GdfP^T_31lZ%VdugEPbQfgk`(KidJ;-xV3WDaT;aBDx)(+-5;1qbxdO2L
zbpd|k-SYlBzZa%+S`iPkdvjg+j%@S}q8xJ%q=Y0#mL1l<bu9w29>gRT!1vn*K*Pq;
zxGw9ktKKBbGx=~wmb9#ksW0r!?Qn8QY_MwB7HjTq?TqL)TU*;*#d(|Y(%1D=TCAP8
z=X__2-PN2UBKu*55V366SQ6W7C47@KM~*o3vL9g1onX_IN#qm2PYucv$|6u$$>WCv
z0RRixP_+WvzlP_}ZU;`IOE??=AjbI<>{vF}-r7`*M)Nv^SWN1j7y#)hp!H8`@sj(Y
zf#FAL{M(0xweZorq0?qY#(Hfk+_nx#?P%MjI`U7i_O>8T7$RBmp~8;M-<!%fozY|h
z3WpXa%~|)Wj*z!|VYuC?2RquMEkhcRt~7@|kRD8@-7eji3I{yCaG2mZ5YDepe`(p}
z(L+EJqoA$<BP8tUCUQk|da)YXJeknYrJbE{Shzg}fb~Jrgwmsc6|#An!Y;1?+)~ay
zV&50Td=$Il?UgcA3IXK|$e7S`!M0Fa34astd5E|Z>>y{^_H;57@Oj{>>%<xiNs>iz
zOAL?%!ZUNBNK!~4fT$l+A0=UdG+3V+>CZUb&H(EB#mY`>Z+O&*#KXuL@&&>!D3sma
z@1w(^68!GAc&x_>yLQy@1cW01*L}`|Hk^R0{R{CnJI@x`cgQ|1l!M4eYPjk5kczDc
zG~NNU9EV2rMRoY#80zF{%&lsuQfH~=$Qw~rCnD>ePUM_<Jl3HTf_LoZr(mEcp@H(h
zZ+_a=&j8-k;`}4^hij)!9yy%t=pESG*_K0vI~c^EILTQkS&7y;Fbe@#kldwNNbpiP
zEB%>X8Y42DSt`C%UZHc*>?LSri$kG|Nv*aSMl?LBt-}HNtimV#sk^N;60!qhVYDT>
zV^^g^WTNU+e$=ZJ;krbH#8Y9r2A2n<40mdUOmo0zOB6K3O2kF*!I4BMm5vq1T%lec
zDh(Xy4@TkU<RTTRsLob@#EA6rnP8Y7KIknO+YynytKJrGMGR?eZ=VBbQBd16T$u~x
zd~h~6b-S8!L#Xz(=r*Tt4ju6W@uuhzX}43++RF%s;unvqYp#@m2w&4b0~tNc#ww!_
z-U!oyUz*~arD{UxcBHtV4i)VjNJ#-*0}6`O0oS+-%U#f;Gx!gQMMIJyH!N1SdaiEk
zhxy0P>we*Hetx$LeEQ^fnS?ys$>v`#c(4>T+`R1wU~Kf86b9LC$S(96jQjw)o+L=c
z?8eJTJ=pR(v#QxnHk3zA0u+8jH6#*wwCuw~w9%)sVQGkMaH^Q=J{YDOwx3MAoV5pX
zz0#KwxTnt*D#iljOlboDL=t}GoWfDXE!`ZE-W1a0y#v`iFhu(DLFq*)?SqgH#L0~U
z)VW9kV7p(&q8|*TGVqZ?K3#9+A6|c5ya~IVr$SZHP>&Gi#z;3nDrgE=&BW$-y2&n_
z=Y-N63~Bap;Z<U`r|haT*c5Pm1<#q|AF@t7C(4qQ81|H$tzhU-*OH@lB~{0w!eNRu
zJOCtDsynoUq@=8`+rwOZO@Uo9<g(2KyW+ydKa3zyL5P=xE7Ytxc6trebVTd;byN;u
z0r(DXjZX|wi*FmB7+4Qa1VYE>2~Xr}AB!T}C0>RMzwf}SEl^+L>muBg+^1=?=pjA<
zl-!+VJP@t767v|E&m`vm=QBxpQM{v=XMFA7gu%9pSr)lnyk&%i24$HxYt5#3vA&2z
zdc(54_Md>YvWwq8a!|&TcmmG}0~>WWeDZ|78OLS_k^}TYf*czKz0xdK$;MEF50(me
zaS-Xi<e*6oiH7}NfE1#@GXZ3qTmpp{LRzLck>P><2ifiAPYjG|iXK!7*}hqyP1Qn(
zwz(*j$-z9toIUF3DDExjfIfpH-E|I4KpReq_Uk_qzXxCR$ZM2Y-SGV*;Q?QhaoR)M
zfdH5m`6>9Xw3tv@N`>%`C31IzeW@k1daO1;nnn9M%rgADc9Ca2c$davY~Sl1$~9`d
z&I{dyo{c6j$tz*m7>2rv)C~F-amA=Eh^UBw9&^XqS`o3*t&kxKSV2%2W3-YrwhBMb
zr}Or%bhznX@^&Mx*}|zFabKdlkj^KQJ;`=eBqEs(^j};b63tj%-$4j%hE18_b|C~c
z-#|G4HCTj#3}vx95DdXVU}I%t83V#GPp4uL&A~!EB*{eM(9q$?B8KdVsNCDomSy|k
z!S<pnwOjS?3W-c6FZ8Z_uiM+5O1Q*3StAr2@bRL<hwx1&KiU@y8%Z6Jg5tW9f5gV5
z9O*#~bR*`X8t6*nO>%}e1S))9Rs%Mle!RtI+p!Z`tzGkXw+DclDE_!{%BD9?i8pO&
z)Y%%}tEdS6o8Fbcl5p!8$v<KKzbq}jh)rXp5=0cuB=L3~zX=W)D|7vmd8RiEhZ#6=
zGl0R>?T9mb0a4{@??4=$J~gW4T}$E%u-x0kL(q77OR6o21qg*ulnS^&;_bWzJje=D
zuc3|~>c7kRcPoA-lo$fFu?!?KQ?nEL4WX}*GD9N+j)7*_z`SW|+klJt{`(e~qGC@N
z!I_abGBW{{m_}|$^lb7>vXPT~11AyKT>@SK;9Vl_IoKP`Wr5NSOB^yWAqg~K^Fxot
zq@KW^{{pW?Srh1&io1z^UEIvhm4MD<)<O_*xJ~U;T3OiOzrFTxQyPNfrz*f(0uj5i
zXCFeCAFc7Vm-*WituL-olAfxry|VU4u(=%L*Vka*BTR(`?nj<I#I!fY2ig-Jru5wz
zi34K<sbZ?qfGNgq8xA(`v6=N@-;IcN@RbaE15eA5MDcWi!Q2Y2<Nf`6Pv19dxCct1
z$l;j>a^7c!sMq06@Wqf9289C40eo%{d|RH~0@UNZdmp)Y=H;Q%<SD;8^T4%TF9=QN
zUa#s>#@$hm4rK*~4PX@9dXo5u@VlSK_#XoQK%jwtWSAC22n0tG3onU}7*ZSM2uM|T
z9r;DhBPnbLv9Z{OU4?0o1V710P0I0|M6qv0ZSRcmZ~P(rw|0NfrXX(5+Z3bdPs}=-
z;+aS#5BR)jC(!!_bvWC^l?7dC5gNk&Wv<+4epFZELP=#{NaNj@3<%cv^u@TBBk9F0
zfYnO*@31P60rO`+Q}|E*HVWZR8!@E65$&hZ&;LelbPjkL&w}=+kC(c90<?$z-vZ}1
zNJy}2t!9_Dk3eacK|o}7!8C=1%nqO34fzGMaVjp0{*n&SNyCKvL0WPU5KY?&3LK)7
zG<p;biE?8Io0BO-boxd<3!Z>yeBj{EFL9382+SD(%Mys>+kcKjJ0fh6z0$>(VbVq-
zDD2=!Bj(RO2OuO7A~0H<;EDlbIk!LeEcVlDUPlJX1&VzjARo0Z!A?jb{Il<RF_K=C
z3#Me49tdk?O}vcBi6h4|2pPco7i)6^4NkES1VI1?|J9#jX?9Fb+f|3sim&m9O03S#
z;u-|lAv-Y0!y(7oGyvaz3*sL%aR&3Kj)_NdmpdP!{2Bfdd}U-?H!<YCiGAW-<P>mz
zr7WV6yel*$7*x^$dkL`xh~$={jHABFI`r?Iuph<b1b_Nz9?beDx4P^$GVccR@7jOB
zK#ci(Gs>f#H}N<Il<$9GeC=NWBei}BmJf{8A%yIEk)JhrV@{GxmmauI()y6&gi*p0
zZ*m_Qh-hDrttEn^z@o5$n66<tHQ^M%{*>6P<+y{t_@dD{i5P6kcY({NncD~>OV|_1
z!|ufz@;$lom9Ne(?oanNb!K4h0Jk6?1mO(I+Rs5~&cFI)K6~n0wgmJgh}a(^NLC4T
zgtsN23kbgU&v3>$e)-qIc%F3UaX49oqujp&FgfCZchRqkcnkg#^;(`}O^fN|wjzLO
zwuGoJMeL@jz3?;ka=^%&(?|+g^oah~*bhL+Qt#1qTy3pn78WJ&FY3+nFj+zdsIf6G
zaCs+D!l1Jw=o}2$oYVm>;^VEkiJc$-njHvF)$Dpt$!+ucz`7mj{@m{TlqXt5&)^$F
zQj3Y{iZE3>Z@+iE#nI6r0%bT!NO|Sj;hx0(M*>j|^Hb?+`6Zo?o`Hsoy2PoL-0oM_
zegbeDOl!ie#4xZwfINB+G+tm&vR{EbdgiGomv(Ek7FqeI)JMos$PY*+5Sqq=j1eSS
z8-5<5zdT8+(`F3L4P%PR2Lsy%$($jLU{dwkzFS}^qxGMDXno5Pf}t>-N&JV&u1<(!
ztR4RDhm)rw0mv5#cPE01ZamcLb$Hsw77(E$I09vgNr(iA;u$-iexxzv<M5L!RQ`ZA
zIEtsaJPlg-PwYRd>skgD;gQaur>We>_2W99<!ba;OOsdvnvn(jY1Zb2?;3kN)L%&M
zNi|0!xwgGc$bUQv5onF&I#HCo;!>U1U(p+#p5cyQG@u^ZF`$b=_ZQIwPd1#`F;vKF
zKbQ%LwZFrrbpk;0G~d1lg6se-o&#T=&VVn;CWP@MIV80sntGUD9WqgPE5ax;6BvAH
z%JneKLP`iXhZin$Q^~qLiO9Jw&A*bJx6wxWdwOS|E3SLT9l*~8gQ>$?ljI^9b{;Jx
zvhGNG29<U=EbEDo-y3S%|CCqPH<BlM;b!vaLJ7n!>aaX%x<{bst*RH&eFKG4NpAax
zcZub1rN<g@4tf67(+SEbg<A@4t8~17V%tJk^c2>)d;?{=^WXtj?y=6kTv!1D64nSB
zcWk%BN00{(V%&E`G46u^Z>NzOhVjj^C14g{3T)tbA_?}ErW7zObEMTueg|n9!hm?1
z=!fYcRbHan*GPUTBW=-)U4QE_6(u-MJ&xpg*Ob3^G#(GOb~{}W#CG_7jtQY0nS(1X
zcAyl=@7d*Z4;3DDVq8UJ&m1|XBY&#c;t4}IT&W|~P@&_oZvy~qZpN4NtB0!5p{Z=U
zox6QKQBrtpzl*<4-^{beizlZ?ri7k-;IGrqv<!I4NT#+s+`qvc7>kqaW0B|SyXP|w
z-aVi3<6H6>IlIh0wt4Y<|K|NWT>Z3(#590Gr%d~I^Z6*@Bvm3T8c$NPr1Ctp2>|b|
zjhGL|0wRP1;KoG9zu`~ti`cU#SX%`}_xOIC+q^O6EE1yK5ABK@^}az>qK`@<$J`@-
zGBDkSDq}XUb9WnXk!>DWu8RDLeMcY6M-@aYm8J`LX#(ZC%z67R-ut+;6|`4cl5(RC
z*x$(;yL8y5<aQi(0(voWUZIoWRd8>b6BEk^?L#G~7%#+91*AcW;E>Ubuu`vkU)l|9
z1~HO|HW%8GuBd)+G8a+;nzrLW5;ijxjS%bu{)Bi?_Pw8VS8`x5>N?Fr1fxP}!cZJc
zp>4%NvOm>tj)E-bM>*qoHL>>QQIHr0@|&B62l=x!KFA5@+J*soh0fZXUe|_mjY0F-
z?XLAvGY2y0bgrM0eRvgpNXl^>X4y)sY&HxG)Cmk>rWy99w&vl?Ff1DwO0)HM8p`sW
z2ij>3bYv_Mhg-z&F$em!txs<l|NHl+12#GSX($xx4Z7TP9)030fBgg0&3*&5%+zbg
z+eo$ygxW~ECshhE#grdVHb@1b&d>>3Yki1FL2i<1tiY~L4a+Yq31oU#cT;ezlrHo@
z+8vPKk!vwY96<!d7x{T^8&O;#?gS7+0eeyePsLQf2BAAU;Y9&wkH~a~4ut{qzO;yd
z_ws1ZnC|G0c_X2a&lL^1_0DOx-n>n-1<JW5Bh;g-h7;+vni`10NUQL_3Wg!CysFn{
zM~sFOFxWPS+J!tVhc334QRUw2K#fJOL&>)CN3op4?;H!2f3p(u#zWmvr<Qyusu&4p
zB3%Bpa>?&1#vD(j_hf;_;77I-rZ)ckC8V?hKd2KJOEALqb(gl4BQ5wn$3Hwr|IF)n
zVXN!Pbe;K+XhQ!0Pm1TM*DzbnXVD|@FUq~v6%18#f5$rJu#0_a9V0fA1G1bh#uHk2
z)jGDZ0RI!~*v>Ni6YE%o-FL(~_V6Ctx2$6?OR7HW*v~YzVjTzIenNo^l;tDHlb7UM
z=or-m*}q%o1w**6b*!*)$W!xr8*AmySjToY3O|W?US+K!VI6zK{o<f?>}3P?f3lAK
zEUf0O;{aS@2iP9?(w5lcY#C_4=aEmg$_(sV&$2Fj_Om|x3?UYtj!O77*j`qH^_;F<
z!2jlOWgTZ0@L5ADrGdIcbX>$(-tEaHHh}97;GI?ZtTEhI1;uJ?9_?X!7MC7huAjfK
zYUIv#8U1~ILp}X{r9NYCZKZyG!I(Q+uPvOd6^yBcvqkOZi%SE>feY0IW9)48Tx}jt
zJAg+Y!J|(gP-7Oyb-a=ts2-`EI6Ygf<9G@^ud++{0#4(p)#{}>J|{3Z3;2RQm(k@K
z8r+Z0(Ln5!jlcD&J)0jjvAD20vABG`X7m^PjGe~%J9`>$*{W?fJ!Ol#j-fTnk`&ZN
z1LP^<cNj;j_<0zexs1<63@`Q7B<mG<RT;!($7;(f^~D9FR4fe}tE&%JFRw0Ms4rl&
zuat^qT=0vv>TX2e%ud8GpOvAAEqAf2@}~$EsiIF8*hPFkhMt@B8AZ?jzl^u}J&#!I
zS>42(8{b#J8?R!FsWk=yF=%=aWv<}wIh<+mkRgkz&EqUF{jGdMQ$_=i61`S7-8YBc
zJ&fmH#a+wte)9^GS!wdo8|ht_aZD3v8OPKfde<EIaR#3UG0o}PjV+py?A~|+QDbYa
zqPDHKZ1Z~!wCW0e>zF)Mb_Rdxt?MIFm2VtFpd($mig}}<WyGUPIPS&I3dWYi&l1k9
zfR-d)F5RGMFIql<9^6hK6t<KIMsC;Dt5=Kj)zu3ZtB(~i0Y|&;CMB$U9)aMfnsURu
zub^G6uU;??*H&uFS8C@Bn$pHS)%n_n$z0U5BNyr`=67?853gRWF4qj4fE=kUtl+N8
z3+HOf#_ENdF*h}199*g`m>18O7Zi*QGqPwt%(~a8Ua8hERnJ_i8L}Z&V`A)Hqq@3N
zyRf>tw6nK&<?M2OX?3NzQolqk?makx;rfNf_)ZVpifQjILanu(vFp!3bZ+(Ui#SOx
zHw8gEs0fJaj4rT<4m?*60Ox(!EChfi9Ky;Nf#p7iI<X0sWGUG2)9|z!tQB}3?JUbW
z-~-J;0OVOWR-zs-P_JCI`dJw(%{EvC2Z69M1g0B?AQ=JfbA^quaR{J&V6aJ`$xOj=
zdjPC9i>Z1Lma%&=o#(*#M=>pqW9hgLxilx)1MC#5Vl(m_`w@(fHrTdcx`f&VT?vRi
zZn#=uPGsNYet--Ff#VbA5!5t@!3y(jc8$Hx-eBKhufZsnfb%}(xV%vB>qFsG`s^<c
zy3Q|Guhh;i&Yy8r&t6`YNAkOJU%zX$e(BuCGXvH)+pW(*>vM<oIc9y1Tc3OElhyh8
zs{P1?+G<susm`A{R~0Af;!xc_S3f^rbsSv+3oR}vhc48WLo0Q<t-sVaL7)33CiYsN
m`>ap6Q=nO0zYZE%8rM4`-++CCvG0D;Puo29_isG;(*FTDZ<t~L

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Italic.ttf b/source/fonts/KaTeX_Main-Italic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..d124495d7b68caa27fb15435bf0004bfe058e5a6
GIT binary patch
literal 43904
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
R?7N@z(l(F%{Told^nZjocWnRw

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Italic.woff b/source/fonts/KaTeX_Main-Italic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..e623236bc44485389e5a1d77937699967818bbca
GIT binary patch
literal 24880
zcmZsCbCf4Nu=a0k+qP}n-mz`&*!GTXTRXPx*|BZgci!*bKfm;OI$f2glFmt=lS)$U
zrXVg300R6ZLq-6?e|e?<fA{}i5*JsM`{AMfl;QpdlPjeb1r-Kn003z6M^^cPfmpdF
zr?IV}0{{Tx{i7EJ0DzI>qtlX&U0nzP0O*q+4$Tj^fu#}5%pA;Z0RYfm0068M0Dwtd
zL0!KwH+257HH7`)K>i;P&22o)007vZb`>K5fY`~ItkQZ5Q$v%V`ZazyEI(ieyW%CX
z_)-4oqJLz<ACQ7413y^Uy14(m!;cK4^@Eqk9zshSd*dG-%zyp(`VYyOj_$UG?mz7U
zRsG06TmT_Z88E4xp{*$Zpp*C07aRZp!cLmTH_O4^*#!X5@BHB^{9t`(%0l14$@Iq-
z+TzE~_Xm*)(I4aPYsLm91_ppV>3fOe{a4#==24a&KqRBihTdOL@o%rE+!(TuQ#=q9
z5C}vNAV8udd<EeDY&@THV~8SOw|mULVKkL7{fQ~_-~kP85HSFt|JOn+0Q4vS=@ftx
zzzJ~sc?t#6`A_kmy^+p1XFx!5KtOqvB?1VD2tu%#cdx<d=%7C+HYVm43}dGU%sxa>
zTL~j0GiB%ZOx4YHAW`Hg-T(s_c<2|WS>9E)Y-NBnDkdfn*8sA^Pn~q}Op?M%sG;9p
z`cg6?2gs~!;-GxH$yeaTA&Le&$VFgSbm)y@azdbNnA}ZmjjXKfqDl)<TDWUjNlUoU
z5c=C*RNi0DU(cP+S8Wn}ZF}awUe5EOlB*Z9_bY(a*=L#b7XJN)GA5s8+2Yb$v$5uj
z9*G+G@~5@wr@iP$%IZT;Dtrk>A9G|JRr`xqd{LONwA^%Q)yICY3gaOk?IV%HwU~vs
zSYdoa^FlGWe{Y+-@+v8yq&{)bdUye~g)6A*-b8j-)?tF&*8(+(*aV}<-2G%=UUy{I
zhk?DtC+8jN6Xmle>9Iv35(8^)=ndOrf_-uRkfpXIU-uMIo=+g1?&@-c^p4U^_q-kM
zWEPZyD%*z*EAy#u@fSa=zXyZV5Ohyz#_qvP%}e2$?G5(*IeEakfa8Qm3-;aVjk{=C
zhLgi=74F!Qg3Xp7?HbmZUfOSBC%ol<$IHOL%-;YDT%2&McNFA+De#pRmcYLeEC@J`
ztS@iUV9H<uaSCxpaY%8b&fk!!kSLLh1%?HJ1>qj`2y60h`Y{uOf!<_iv`2AZcwkXr
z74i4`_xCr5oT7mu*jb}_xT&P*{8;bg@Z=CLmejHG5gK$qG%_@^V76a?7QwgQ!}snt
z#P{`g&-3@wx9+#w$MRR{6UUYP#dey&@|Vt+^X<&5!0}hstMl7TIYb1)9{%9Q40>76
zOCWFW=rCY;dK8p2Z59m>6d95n6ObL07?l~8`bS?-QBp%xRaQq>Sz1dxMJQHCPe@5h
zQ%p@xS42fdTS8r7yLWbUW$@qRM*sYHM&IyKY~NPj+}P^S;?(BA!o>Q>@{9l>BPAy(
zD=jaug%Byzbo4NlO7vs|a3WbTTC(XOsBE+lBakSj4w(B|^{-dw1##3AZ&G>T*n}YT
zM~!;Nj5V4>Wk_&Y$OKc2je#~TC~2A@c~62_=7H^<o};lwmIscnMqhi=Ou+=#P)qW{
z=gX^7pXbCe#lYyUUW5<}J{GfPE!JjdhP(;%>d?9TlS{B9s$oBj=)k$tQJ;zCG03qS
zlP>$TP>eSC^hi;c6Gicen!ID%@#>B9+Kj}U?c0`Xh~~y>J;Jh0c$+m?Iw3XjMMhL9
z>Bx@8$m%}nS?t_erh5+_M8*OPm<$^TBv;T}Ic6>MMtn^r%uw|7L&hYN#-JcZ7s^V|
zt1&cV%%tZvpu=Jr<N1(RqV#wXE;7T^6Y^Id^&6>*tX$4#o+P@}m1j|f2M4!?6o&rl
zYC<dRTUX3c#L`S2pjcX0tGw0x&H~5U4Gv~Yi{ZMY8qx4#92K+gxJme{Qtz>RN3xYs
zs@i*6^9z{n0QSN-DkWVUO~ub!s)75>1U~4eU{9`>#8WymEOPf7PGnz&;Veizs)0R=
zggS$RS?O_fQym30+3Y)Rx_!C<&)v1T)M?5~ML#R%bBJcL%Q_Pt*6IY=;Zi#tHw*Cq
zO3>`vtGjc+Je*~Q`nrak@!>3OP5J^6Qn(<5r{!>zC<8KUP#za+saA(j!uisGX$F6s
z0<Nb>Q*+>we7oi9O78Nzxth_Wr<V{jPt?Z{{ZvYuq*A+`Qz*fLdt6(vtVz@*;qFeK
zc1zep!&(B}?HZ!?DOXS6+Hp2w4y&ObN(V#fSrRCDC=&w`-Jj@~Zp#dA_4{$j=;$7t
z*(#S11r^G1Dau$KB%x1zXXg?o<5oKc>FL<yQ^(bIe@43Ame&T6C~786dZKCCnR3#J
zJGtZojqc(E-ido^EMv=ZldQvaYN|SK2{IH~0mTC0Bakp@Y+jeLsy>piEj4htRQ-YB
zXM_EYR_$K#6m}aE4<Po2q`LS+W*ZaD;22tU1CohnLy`%#l~H9XrG?@n%ChXJ;1P0n
zZafQup~qiJ2T5Z>6uP2F979y;agJ(tnD6S~(qs8eN}iKs?HbZ|M+F21u=PO%_%V~W
z`!doxb5FjYIj02bf$%&^T-P`<e%K%C+i{Br32l&n=m-2Ty&JkHFIvxL(bTxqoh?3l
z$|(EcPt@a)jms&i3&y6R6t_+vGa4f75Ez%3(C6mPOWIlipK7w{WUP>1Y$4>GcS5zq
zA!Uya%S{*~1qoY1TpLg+dExIq&NS{BNScOxQ&lE2Ve~V-z$NAXY*q!IJ!+ek2c0SL
zp0F6sq{lrSF-EW$n*B*~glfA{21sGeRt4e7SXp;4f|ml{<rRq+EK@~-NS-`URlioM
zTjTkttw?TcN>#2x=!-tMM+6NhdYHols)$%Q9@x=ld4*X`5|bU9t+-7tdI<}L?G%yN
zym40d`brG6Lx~7zjD8=VEOW^HlS1PijXq%R=Bn$(DIwpRxv!*$S82;HDs%XUjXBv=
zm!LWc#=28I=lXu~bTn~+!qtMNHbJ3xM&17FN{9&qriyP`NQ+t(Xc0$kg|S^n2f0{J
zD6wdHk%^UYK)(<*^IQF~{*_nX3Yp|Uvis7(pm3%S^KIMU+m;KmxA#x{gj{Q98aqYz
z)ycpsw5~XVulM*D-lUGRVNMNTTg?TnU`Xj6Nqw%j)CRLu0X3DR2_T^6Gl}It1CRyJ
zt?Vv$TLXBSM{)7@vO8m5FoyNf|71+Z?7bM1hBsu+n4pt}h|D7(ts}VL&*=j@G)Ii?
zy;<PB%Ri-X&X}S<r7R<0E9US)@XnYnKLo+KN2N3b4<Q`EZ7Ua;6CPa!4I87|t^ypA
zCxp(~3j#KyCk1S#M{}_zq(=-ri?iAvfg>jEO>u4t=@E&6_0jD|2osm}smhT*U>+b)
zuuF%ANYb?v!17he@&nK~${GLXo7`;mIS^ACk&qbcAAk>M<HF*?j)CD|tz@xFF)~{O
zU}m;)VR8}DDzP(0ZCYZmfPj#IP{d8`Hb(UU_5b*at7ZKwNSO6~`6Nap&XE)1Y>4(4
z5<jFU5eX+rP)R9LM4O{SgM+!XzL%cgATrnD<azu{s2Bh@P11?~oojmmM1p1GdE<>4
z0Rfgc`!(O&U+YW}z^f47J;3)pUmW1KKzHD9t^c`F=>K<l0uFvW!Dx^(P+Cwk&?+!~
zuvTzLaCUGr@H7Z=hziI%Xng1sm`T`XxB_?!1Pz2{L|Q~EBzk0F<U5o>RBtqNv^Vq(
zj3vw`tZ-~r9BG^*+;O}td~*CNf)64_Vo2gL5^qv!GInxF3S5doN>EB+N?*zvDkG{p
zYC9TbnnBujx*B>j`a6acMi<5lrcP!(<_Z=qmMd0IHgvW!b_4clj%ZF3E^)3iZeea=
z9(JA@UT$7J-UQxBK6XAUzAC;wep>!O{z(B~0V9DlL1Muap<hB5!WzO`B1NJGqDNxr
zVxnUHV*TQz;;|Bp5~30s5<i}{`&w2PR2uH88o6g`IF7ZrsJOWJm6xg6p|Z8vrLvk8
zUAgo-eeyqLH>s}nMJI+~Z7)l=_11N87Ir-iSYyVO7a!w$K{$4AUYjE(5Ck&~Sa*X-
zK&}V)dK$+t_+OXPY%dZP8X4-}EsiafmBiCAhdGx5$2nfWNURZvZ?&Y6l*)0QiBg#H
zx8gJ#(CXT|^9K;M^708MGWxlL0)HSqL5V)h?s!H;JX{ncQW?b^Whpf^KV?r>+T@W9
zTVYE$c8Dq4BPq$OnaKx<!<4fzaR*NvIb#T}b8koU@3X@RhA6Y6k3KtVh!MP^J>Ymx
z&FlJ6e^EDYrk|#Z&1aMhjsGLIlY3M8vzu&jGz(3p_dvL)qG~GoDatBmeX3!W^dY~&
z@pV>9>3myD1qGubtY=lam##Ig5KHX-XJ&^Zp40=$bQYM}Es{B&vU3%C2y^{Jkv>YP
zElGEjj*@wNC)ypi^|x315W)Dq!ccDIeCTmTPT;mSgBN;by($aFMBGV@Xcp2K)a67P
zGMl}fU)qK2%c>bw`Ri~9NO~RW(&OqP>_G75CFkDt!(g>oJIL0l(gUj2)rBcCQEaiI
z0Y$e}C1?n2!Kq}2`f$=(CHc~Cb%BSKM+!Z!&+?HR&#8g)=N!Jjo(`5HSCUOh(Xw*w
zhAEbljpkZ6@Wn=GTlQw2Kn#XoDUqcbgTvK3wPmI5?6FPW3RG0I&=N*Bl_5A9^(Hv?
z<^FxPJ3Gkqwp^fo>NKWI7G`fy#|z2hP4DHF^UGVDPFa=}5pFy~m`lFkU&_0Il{6Bu
z8i8l-!e+Aay6zWcM{CXb%EXYscYo~pAPeEwUnU4@Rd=@koV@Ldq>U0K#^=6Z{$+c!
z@%^TB+;!vk_q_?Lzj8#TWx{aTrPy#{-{)z-&ALLi=X>cxFgkQ*Jh&m+2@3W-S@J8E
z7~`1Z<&Le%=g6zf_M$SQ1al*!NsvM`Vm3OL6c>#j<F>$4Lu<$Hr=EvX)0Y4r9@aF$
zbe9X-zL`s;VDvnTfFRJ|@!MM)v#zA!aciU)5tj}Tr8UX(;I#)^1Lj6DrT*2P$Wy&X
z_4SS!>lq;UOM(eke~@J%P^?;tK9^;|sY4ak1U;DJXhzm4GW~QX(g-)zmWdv`sLBMY
zDcZ9S>?9Dm-(>%o!wxy3oJiOa`u%Ot-MSASf4y`Co(A6d@Wh1{=?~As^I-DhCQ*cK
zXa1N4`ISdaafpldqH71J_TyX4n71K+byKAiCI>ugcyyQaXk%6aky>cz7zZ5OB*eP=
z{V-2BsxnmKE%R1Pv4iyQKlp7IC<WKHJT{MQMWzzZ#^-r4W0}(iT^R!143+Sj*k+N<
z4`$~3xv8b<TPkw2r7+p06%9cw3b_MLf8#RGQC$(eu90R-TejY?=>n_0P(1M&Tni=~
zqokd%Sx!NhR!qfFb<Z-oz(~hrQ&!*xWvfnQ_hlE8|K>Sz3s=N0A+02<kxsb4(Gp;a
ztC3lUBNANfotbAiM6`X8Q6`X4*Y@-mw_`|#!$kLimFRzhsfwyPrRzfkX>P3&lrbe*
z9`%C7m9yL*j^qmXbtn40P0e&(PR$5>e&FbTzr;Y)Y&zdwoF)fF@tBoP6l*kE)LVei
zdO`*NiCQO4i*qfvrZ*-`XFmcT?02ALWR_`dpei8@1Y+XgS1D{A1zQZ{QE*d$0ittq
zynudC#W~=OJ3*(QQs^i8asxMa{73Nzp%_}tl9FjT>lTw~U`QikeiF$t`X%>scHG)o
zbHd&Vy58<$u_>a>n;uuD4Ysk9lkX~c0CmzfzGT1Ln@PP2Uds1mFMe~u-exWK0@>7C
z7HB~k@*PJ%wzSh`X=Jc(%02#{G)b~38IKBEo&6BB*nq~iMCx<##`DL+<jSZ`bGP{#
z?a<!vsvC~UvWY1#_EQ71l5+8!jb(29JS)z5vT9d?RCd-Vfktd}r@c`Tmx)QJw3q;r
zBe|2_5`-IdJaHP~O@m+XcJMag$GT!^9B5CJx=wTo)R7)M6h)ZQ&c+E1H^;`s8<iV<
zZgQDPy4y>6;luzE^@ox&%m<SAb;nTeo)1b6(bDZpzz9_9a@dXzc=0i1xR@*^DLq>C
zn9Z^*l>D%NeepNnniIvgheIvY(wv{wYnjZv$Jl%7+#elI?=J#=4_8!~h6BEj2>nm*
zPWOX&Da~KI=)2mmJt$Y2qO0=bXxDHOxBDMM1jLj`B4P#vosLy2JsjZ@V4@}5U{@AS
zK+gn4s2k53m{(CyDW+2FLnN1cFAQB?enfiyUdB*c=|;CE+h3~-C_o6lAa0{T?kOl1
z1uUNK9&W;kP-{c=qtLzCAb@O0Po2G!h=KgDr)%9cCZ?R3cIHW0QHR3AV+R9wbMjJc
z-$@YDRaMv;7T6MK@+fNsw0{&84(qflTmv4QXeZhsx$o~uATw0UII?r5Vqk6{M-+w`
zt3LxP>*jrE8923@Lb{(+tZdne56sO%Yn?w<nw~%^`gHs>!eT2$j<7}*ZT%>0TUuLo
z1D)gTUUuQZCW|+~aRR)wrzr)$$|M|W?PA)eE-Ujs3YEc5N|!XbzS~(8&gHqg<VW<K
z8J&my*1b4$Vldp`|7&y~c0$q@couUu>o5;i7j@?r6O)Ia?1LW&H-)Jkx`eTx>4*jv
z!q~LW$GU7O=V=WsgbbS*<CBcZ4|r$t0TxE3x6hFf<i6Y;^xw|!3MES3XI!|DllvKr
zC{*0IdeK}Td1krOSGWBxjT{!Wr%4`25Z33b>r^%sq83)-ucXmoH&Wfs`)=*16MF#0
z!Q6DOPjERRm^*|u8tKyEFOU1QWj@z#lzzfqK-@hiLjdHAEVK|>%3p?Yv0`%uic-IN
zxlXc<e$sV^#HMi3GTUKg5vZyj!#~zre=kyap+81rt{H(c2R|Pe_y4*;e-iV@e4%ks
zE=!>>MU=K36|j9hNbKU_9>_X>(nVQ92P^Ob@fV~87twe9O2Ab4Qp=y`1Z#!bBF#~J
zu?Q!aRo~r|V@2xhh<FKU^VEXW^SW0+=)=LmEZ+&K8&hjW>on`lB8V!vG$G2sk{a63
zU_Ug+HnQWZ<3b3S7Hgf_oq^8>x8VN}2qgafHHo`Ksh5-wSe=wDOt*A`)&uT&5R0%R
zydxBnlOo<`Rr^^fwdewfO%vz8qsk?BF3wxJ<;lk+;{FWJ@~8_W9^FAgM=!b0qG*Ao
zK%tx)UuC@Vcz%GAh1b~ganxV7ftvdn?Jy1>*gTW=Nwf_#F=5k}B8P^0UrYdhioLty
zxOCCLviv&_;<ekSCfns}6Z<}am~ZO347wE^=24jX=it-a^+55Mg=Tlae5u7w@0H%1
zXnP2><$JJ@z5MZTs*5yyXP>R<e!L1p0{2+FP5p=2tLin3!2akA8b5OJYhAm<i1B+l
z07{=!AW-Y1K9(PTK_BUfKCKvZ&)$C&&V6E*It`9^Cr-=@<*?A-FhF;Mx8oA(5Ae%N
z@tw*5mIOFoEUFhbfEZX9`H?aLI4h)%6ae*c83imE&K1#!_N1#Y6fbN<AZRMp0AE8n
z3_2NS(~1!p!XgHic#u^|S*w!yavpl<Pl%Hq#H|z))3frDP~?9(N7$bL#RLcgLSDSN
zHs+!_xS6f4ji;U*D16zQ@&be!rUi0#8shAM1d^r!!<lH$1LTk(As~Z6DyUZwfQ!zN
z@VO_fp*ivNkNysn+Jm1~l$@=_s5{4054;}8Z!+N~$&8%6Wv8xkx4vHEWcl}HzpCR)
zq|451@n?+d%+9zmV{ZEWzWlf?%pO`jy{*@3ikl!MI`cpkunOFeh)m9Iop_?hhW)Cq
zXWZ&N6}w_;Q$G&F37~<UHB9<m70b{?3qaWjaH7Q`92=MA*zEn|M-|VZ>>Q#~+<r~V
zvSwUs>Ar88j8>BBjKsxfCE0)kLKM-Gfzr5UHz-S2v=%B_0H0W}44;K-pH{_gk~U@B
zU5L4GBgx!XW0N+hhdVS9DaH1SlS{phI8}YG{58G4I9M(1U%jQ_?*;?m8$@nCy~3d?
z*+s=U(rBeI&KnnF?~#jL9q(4LCKj2PBHLLAvZ-d)h&8n3U*@sWjK}JN_!L6;4EqDw
zv$Vw6T6}dl{qpmvGGZ!hVqHM<l~j`ZN}-+LKv9Tfh!Tw9yju?L2YvL!!`{tQsi^-l
zfbFk+V>)0F4(^_InfrIxmflm_CU%Z`>>Yr?-N^MFvm(>RYaYU6!h(6VQkN?Zi_a9B
zbg0g07kV!(bK=g%6$sS{JpxW(hZ%ICV!#SWjdB2{&NE{mL?wd_?h9H$X~IRipq#N&
zvTE(96c8$>e1tf5%4)))RjVq+COK(du9vx5&8nMgi*+emUh?%N&zSD!Qqx2AyjoBc
z_qUxG74^W*5g|ORF=RIs_0Q#VLE@c>cBPw&ql}G_YFSw0+&0VqUflVvMxbNRau?;R
zy3__(j3;?OS_+iQYtrib=YBc$BbWKFx6Nrsz03&Jz~^nBXgESnjd11+Aqu$K`nCzo
zfd+g<-KdQQc_Wby=!1o}`Y2JlItK;wZ&CClHhkSBMc|uK^xz>Sq?78yNpea&I??G>
z{z*bhu^KEfUkmt+SdMImNvumQ9-@TAZc50m1}d4A4*vp86vRkSyeA{Z)y>F@5kvXU
zQRR+62Qv8r@|Uu?FTEKXx-K?cWd$0Pm^XnnRyd66CKi1to{S1D!~HEmas>KcJZbL=
zZo}8VFKlqj{meDEZ%;Eou?c^!<jPWvE3A*1<|r5CG~;bM-N?(evM3OOYGwcm@P$1+
zn!OeMJ_ry~h1efNKzhf}kx>0ztNxJsr&LgwXjeL)-3oSFT#<xgWaCFCbjBIm3u&Ow
zS17fCS<0@>JmE?}f&GHsn0Pf_dX}wAvS+lL;r{e(S!_&xPArnpf=X1Q*f-8PkC6dd
z;FGpHCwW(3c6krE$qTscXP4$YC8B9LZT}u7Ri)z%#!daqx^?ZkpYgGikDsn1UWzf3
z#m6TzD9wC0lC^TcC&Nej%=T4wb`qr0<HK{X)Ch^$V@ljgeqr-DeUJ1X^zNYvWKq%-
zlQU&3!n}t%4ZN!oI~<({{88~|DV-yFK;VD^=jlcUl|mb|ZGRw)i_nC<{g-g_5f}tg
zPF54R=#RbaZhDt6yMoUJmYtu+;znfG&25xZ0PNG19ZS?dddS~~yQ1E8rH0d_m26GI
z`6LB7;kCtGmsc;8^Mpizi_q_CP%-bkj~;8cr~mPuXs{iTjY*(O9kwVu;0FJzU@{|f
zrOm7RA7MMs+smC02^|Iu633Oe^=h<HimRttV;tTzsxiGNNSi07(YE66yZV$W_|>~F
zGrst(zwEq9SX~^Kco!cBhaPB^hxxnV=ilPZk}G$@x4WXgobmjPtOBGLhtD7i+mP*T
z5FH#u!6kgL=xu`}1r7qi;k1*ay2gkNj&@X$wYX=Y-6B5YLeRm%r7<@1CHjwQTnqPn
z(!R(*U;XEwOnmJ}H1lNs@WFrGRKz?ke=)z(@{%Bsn3C?`fx0(U2(av@_EVQJm<>%4
z7OQ6MS@=MS$igG7yKD!5m&s@7AbN<12j!Jc$+3OCD{i%Hj&1~D0j>?zbL2`TR}9&c
zt!&MTbjWd32{z?Op--e7)4o`&twv+iBR1YNgVGu<i>IfA8Kc!s%U8K3Ez)N@BNs$O
zpxeTz5rct_8oIk~6Nln>iaL5?(Ck74OO}bqtAO-rEb#G!1m@=ut}-SmnOpm72%>L?
zYJ9^bPi={eR1cU8YDV9d5>eK3QH6}0Za5vDY@TW13I<0V&<cyQ7hiWhX2j5R%({L9
z$Gd>Z8R^QMQRs<XP$GYdkq4I2P8;@EqcJU)=mq|Ug{dACXuF>cl0s2mgeHF)D(;`X
zFqC1USr*B6B<4Y&AIo2|6vJQi7JRKzy9wp^T6VGZof@QerrB3^A}fz4IGx=3%R#&w
z$lgg&e$jq}lNe*+P3dg;i^&RR>?M|ly9N&zrY*nXEU+)G;nK5YZ6gk6AxvvBA_R^@
z-<d*PMacUL@&xmE2v=+9#SB%%WNERXp&w&_(KAk)U~trvfrMa>3;mQ>5K@2d?=+F4
z7-A4d`>pi9tN@YBf2iKS;`kB7ZS!rrsn<YfU9A{I$faIvQZZ#lf~m!rw6<ED^V#Og
zN)k(Ak8ZN48$>q-R=rJ2tzkUG9az+7SqgajR`e<NlonYP7M=%)m>v>$Er@A<JbdO-
z@d-^tRzc50DKecKYNnZRdR!eMdM_E@gWq9K)x*ia{LPF?K-Om%%*h)@Is62_JF{d>
z)C!lTBOua<l%#5KL|Z7Rr(EtQV@=^`aydUo6{;DcML<=`cK_7;E9807pFDtWYs+=(
z_y7}G8_pF6k1Ui3T0NGTC_8oo$H)$X+J0&r`BX-|g(V*1g~!u~2S0>L$MmSdLKs5B
z!dfv9YQ-uVGZa5HU_Y}jJdKxSWqEU8pb05m&?`xgG|Ry0=}ONhwh-7k+*v(8nadQz
z#e|H1$MhbiOOHR&o%Y1#@z?`{^b6?ggj7IU48@~ycYS>_w~qpaQov8}bzxRB?CZC=
zHuY_c$1~l6Zz@9`a~f7bVq}XXek~73eLvPQ4$I~LEyy5ML%P2IHyQEhTc)>zKO(1)
z+7~vxx73INVypH&i*bQBUu?$N!naj7gIbz)OE5=y6k<<fK-sG#4r6Q?yQHG)_Ao{u
zRW@-CnZE0RJo8(E85RoO4{Q6{y3grK|4u)Fd6)SP=cZ8F7XnYTbPmC7@~|t3*cB6`
z>_YxIEfgsc6L^wJiG1!{XGAsM7`FD-rBtI>Wyz(A68+hlq~*^}N-)u6BKl@NpQi$s
zOLwBCZr{nvT=GI?X{u{1>$pf;v~fB(cQ^tzpRbEE0`H<gTGt6(HN6dejH4FuXz7|R
zf#p7?J~AZ2KT&T!+{COyGx9Tu2=Nm1be@82O;w%sXWQ&!A{TQBs^sc@jYZu_3#z@z
zVww86Dq4!-e7#%HFPDGuS=k6?x+S|le{Wyr>zb`~B8rWDDM1i*+?)rRHe$(LS(e;4
zDpK(NUbZH0k{h0ySnj_VWDkYe`-F*)9nW>0Jf0|UuXR0J06?2^CT9rcB-%rJdzt#(
z<I4JTE4u9riu^0ZF02^B5D$$Qs(;%W?_l(V?LMXKW|#Ab3%}If-F#2e*u;V~Ioa#<
zH2a?R&pOyPv9oSaX3#EB{$2lD1@r(5dxeZ%X3D~|4pE)hGO+4eKIM7p<x4HmnzEK=
zcU0`TeBefmU?{~V5@I4eT#CTC8*y4mu+<V*ZswFqe+s2P@-Ocoepy{&yMrZY(@SRV
z9iOQAqn%Ghv_=evM=J+*$;-~p@=;>u4?3UR(?7|2Mx-eV){X@Rg!5gEl9liw;@l=y
zHqWPnXympRAMzNso{z~}93@@m3gmcJto@XMt$BXES-+d#XwOLz3Jm)4FV*IeUKQLg
z<lN28&u^vozQQ9J9~V5gHmEc_nKU#K#*zC|y6u!aYV;KMH~Xm}-8sU4e#;V6nr!1^
z<rypJv+xpu<n8M1NVuTIq3LgGCbG`!a*p1xosM{kYEMTc2L}hs<85!I=Vn?hhBcg8
z49?C9S!zPaWgXQU#9<!USdvWRrG5QuJio#Sm6Qys#i~rvj#rPBKVcq;(PR+`QnI3|
zOR62<VcbL&vUrAr%ofuQyl@gR(=qP>_bW*ZM9Pb_p==>76Y(+;Q#pl=`(-gm|3;}I
zGWCRnUmv{BD5cjW7A=*UEDD8>Jq1=MW@)&s#9=@#QDg&}7AYoQq+}!_XTZ-|mqKNO
zx`TBkFvCBV%6GpA@+JbRLnQuA^oE`S=I+Aia#*-3Am(r4Li80kX{I-<OE^Z7D7$&+
zvkDIJqDti%yO3i>fWZe~=QHa!o+QBM9IrX=PDT_$JpV>7S&y+IS5keIrVzE~>P*Lk
z0p>#LrpiOzSJAcL{-eF|)@JZkLJh|odDsh&E(1K|Sxq)ML!+b4TjN(R1^-)6;Y-$t
zq1%H00Le^WlQH_q_lUodg8f6~S${Zfw1HMrnu<ITgE7+)tB*j}fX0q16fWX|Fbw`2
z1>*NzqsuNWeX{(u6pso-<-q_^sMJC9S#fp*2|U?aK)Hp>h$%!X+_!Q`sL)#)c|5s(
zwLyc^?~o2LwKsTK2q-*D%O3cauYl*9-^N_t-^#WrBcTMHkH6PIwLK6&N2fs2^6~w~
zbywViIurtH?}<qSsS{9j(Qb7F9+_{Q23>PC4s=583qg=UuVTW&^SI4B8q-R(xINj}
zwD2l0g7P}&E775=<{C%iV8~9EFl}Qd+ORGd#(D|$(0`?8<YbWN>T7uJ%!}sN?8lEK
z8{5k%nn^(YQl80@MOC>N70D6rSC>A8$Z?1~yF(;1td*^^ISliUhbKY)>R4>LuTFl1
zQ2p*7JaDEEK~CJK$c<vQ*>H1jMUD~pHklGIHnL6$DO9VHoaq9@Q}VW+!r($B!V_(l
z&O&ngFLiJxEDzrT(7?`BK&WRooYuB@=|lyfnds2Zf6xDlU&g0e{)HYHO%_u0e1|F&
z(AT`jr-rtN2PDGG)ph#otQ8rOhs2M%Ug0~?=`LUh&zk4Sy2t%BFwR(Ni+E%p>a{##
zujw|6=u&&omp(hnDgFzHsPoKuIj8k&XQR%8Bf#hM*o2Mub($tDO!!^COxRWbje)Rm
zfzeT)EY~0MtgtVdF0ik7hpI2JA9Qp%zJ|JDI>@hx`h*)3SS?j84b5FV2M)R#I9hnv
z0|h74w0H8-Jp=}j%Vcrrc`cnezz1@{ZGISZ^5w;l%g2@#4!1m!yz2y+<wPTR%)6BC
zD#o5oalqC1&}Bdro_qajP0q_M>uyg4HP}2-08N1dR(?1Uk@!hAEQKWSw_o0Wa5X<o
zhx#(LQ5xT%nik0gW>cA&u^(JV1KVx6)HEs~o6DXm*^#o?4s)v_4&u`Zcie<6N#Ej%
z$A!qPDxvyJwLvgx8Ef+eL+odzjCudj;kbdia1acI`O1J40<<xWF=7qfs~F-NwWsKw
zI!5|(ziQqZlG53U)4Ukt2OEIFt}UXD49ZDk%NPhs!1T(pvp;ZB$Pq!AcuK?^A}P9y
ziNPAJD^U^3rWV|rG2ZwapU`mwo~e#r8aR4u{PW+YIIwnv@R;W{a^`-p@w9=<>wFuF
z1OmggcA7O?)T=6T*55$<;pG?TZCOV_0nbj_7^fATl>^chkG=_`V%0EA^3lbp@pLh6
ztX>P`IOvxRfC^dka_{_&le<b7C_|+sqHM*EA0%cuAi+j9(PM`Gg;Ug$Ux5F5Fag}%
zTF=aiMkZJVi^<%THx~gd@&<V@q6+P9q<%}Kj-SAEL=_arG-R}$7dN-!jvGzPcYU3R
zy_U5Met~@A0X+d#j2=}vy6bTY9aMfYeB9_Z<UOhu%Fhwu?LAfvh|&>i;(}M4`I7l>
zC_qnAwJqOBEXa#Gnjzt#5GN;cVON>|Y_%m7$G{$5GB2m4+=fLE92rY@3wIRA?XSdW
z5V=43{M$~rubCn&+E^v3c&P$Dm$!w7o4HwqCc_cRZCt=r-}B9i6n!^01`FFsRp7y*
ztUAE6kEi!EMFWQ(P3!??e(2`@Pv`rgF2b`84>Xl-w~NhzMH*JgDTj|i5>gj3AJU?r
z11Y*you#74I$ZS|f&1o!M<MD<eRe859_^5Vo;7@kxHu}BjPPR{ovZNVo6o9iTg&lN
zsvc<Wqu#@7W}?Q`xh=@ilyE~+jgZN>Ty=$ioqyBsi#Yh4O^v8lLltNnJOAS==D}{`
z@R2DOxh%9ICxe)w6<dn{58mZZy@##m&htxqk2g7muBSPPs~*?KyVr$En%#xuRi_u1
z>I=Ax6QPz7t}|zmjeThV7+6itm2r<;1t8n`0_ccK<`{&wzg-Ki)#nBu4oSpxtVp0O
zxypRdYgz^P>2i~esq`!``KocOv2{;!o@M5uGh2Ah!i<u94ug^bqU9jV0Z8?Jnv|aG
z;VR@d$2^A$wY=&?%YsI1X3+jkk7uymTixPm%VeZ^Y?~9L6jdq)1Vi<;m|;AL;W$v;
zp$|HKs~9rWZ~HMz8e9SVyb0xIe_PPkwcwm%f>-=xT%l7R3tQ{ZjG;F=<sVAQ)csSh
zhXS;fvt*p`x|1+%b?9}i+I23ZgE5Gku7k{AUHuhw>#RJofmC0DQSNWvcY->2j`Mnr
z9j(i?wE!JxRER{QO_S(O1C0TGcU~wv*)Ex}2}=<m^`vrA|LlV%^5=AKxC{lv+J!#k
zxt}9kPz5P8ssm+T+yZj!8^F=YXmxGkIitk=Ng~H4(01BkWxQm9J?tc!0+jv*$jw``
zs%tLwT-fO;esUTwR8+`ce!0@RDNE^)_ybYqL#plAUpN`%-ueN?GD^x_TwVRhP9l^y
zMhp`K2j8M-ROgGsy&GR=QVIj0M}LAP=trJ4*-0{ZCQmXY54OmLGWBavJ4xw>OwV4>
zwB=jq-o)>M;gzcC$bS_oIozz6;4pc-rNthT(-iuWs_mZ)Q>^KT_4&oLH(SFUJ@TEX
zWZ&R!+%_#ML_@d2GD*0_-eV_HDVS7vr=ux~kNy)Qwb$5`6i7Q<Ke?!O!G|E#bd;V2
zV%G1;1{~D}&#~Bp?Yq48w<QO8Jzs2b@u*ay!@MS40|7h`d{cdR03KX2LlmpSiCwt5
zwf|%xJ9@DKD5&ocQ$;^D+%)1ePSCM$2Z1T>t8$9Ze$hiUd`@RG_E?7<sqMO$7)DT|
zeW=*yB!pj6riEsK)TfwRLqD$Uu_oRmPc$~BL9-EeGA5>{gIwiHhC6)W6egm$7$UK#
zJejIQjawRiUgX2n7iMA}$%}xALsZR$@!x%j81J;vj!*3N{=OZo2CEm(j^7_?^b+s@
zy!)#TFhWKvk18cRyt=ilBge*g9b<7~(AwlE;vkvxLNzpm=Umb$juVnIw+nHQK;@vA
zAEQmCEi%BiB~Ih#-KUiyT_q6qV=(q++7j)IIoBmeS%eWV2&mCi=IOb)sqyLJ)S2iG
zoxPEB>a7iTX%y2$M9nb{6tx?a{Y0Xf+uK}kbrzwnaLFd5&)8mL062;WO^lJ#>b~Vk
zxtzWNi!Fn@gNJ~DW(w!*`#Sl8`B#`?O(pYmKS?wEudR7`0UtHY`G^@tvpH65Ey$}a
zNKjqUx43`GPBnY>FJ9?$1bpsp`uKPNt!(4PqLaT>L-G67z1+JqE!Vjdafiit)lD4R
z^}1Hv;M^!>^od9|x%HIM4s$?UAZQ(s;^j3wn*~nQYZN2333!0QasA}y$}?x7qq_+$
z2Q2YdX?~q%`K_?E6`mG{=&igkn%M=%v9ESn_aT|&Z}g4QSIIyD9LPdi@5ucqJx*sR
zV>@qn4gU5jsARue;_nAuWJ3RZD2k-Yey0?>mSj#E-68B>P$2gpkw95)Xg=RjVJIdG
zP^OrNH8ya(MCw3jtu<9x?czadk%Caoh^yM+yxmFhdlZ~-z`H${v~{x}w>^<HHTo5c
zp9GPy@=fC<{?^`Yfh_d%QN5yOJYij8RAs&>@MV=KohQr&g|jf@Ogb%J3FuM+j%S)h
zD-ec=BrCmjZgcg4b-c&$FTq(of}}&RnJOKuP+ud_YmNLxXO@{|fUYc}8RPjr2hD{D
zf?sQz--aI#yf;zrzhfoJoO^jt)l?UN&B{q(<}yIpAs@bSzp!L}Ie9-15@2#sO9;z~
z8U$LFT$SPYb$^2-HxzVUPr~c0DO$<{lLE!c69da5Jq#fFc^oVg`DO^(U(oN9bdUaN
z_tJ+*xy=lsxLoWr{Qw}g8g0{dZ<Ov<COYPnwolxBMZr9Z=hSBI(n%F>*>#<2^kg)3
z6qYQ`=*Bgs*H7~$(dKeF8QNUT&j%b|alN%bJac|sH0`yD9Ia12E>2(EImizkEK8kq
zA>eCxTwLr%|8?1!Qt<OIe}Dc{GqH5|d2WBtQmIY|Xf{jDZFdnp<Z8ltxfKZB<PY<$
zQ~y`m*J0_RyV<zGD;BttQ4=S$?n6=B6*3PK`39M_<PJMu+#N%TxI<FumAXTPJ|nA&
zeW<kxfNWn3M-WG5>gj<eajmn%AU4p8!y?TTb98iLCQ8%kTxkFPn87iRG-RmnW^sI#
zW$(bd8u9CMT?IopXQpqvs_~I7&4S9r#97DomA%+}&3EehJ!tmw-mP#bmf~Zfur-*f
zqjtCT`QF!=#4<tRn93%mJC3leh04qwGo9zfbQyf5n~`4u90_1-wN@sNFEUd5XXZ#6
z`eKw;Fh1^C8z@s14BkIU6SL7>={^+i>Sto)Op5V*+Yzg}tAK`}M})bI)nzPMYxeP!
zZv=oCy-N04nkL|GW#r)3s)a+~!H!}xQKDgGE2G}T6>bSlj9?4T=?3*eMf-J0Kek&9
z<MYY-0;}F)@N>|rP9<^Pv^yc(Bp=kQo9>hhx%3M`m!s}LtbB{|t)j?Elz@-s^K#m3
z`Wdw#7f<0_**qnk0ztnjt*|-Rk2hT=DJtX%W7<rd?}o)p9Zby#Phmv-Sv;9T->-q}
zuczAZkjC0<(uE)6?Kej!2QnU0(&ja<XXjo`jrGe(GRFGCb8N_>a(xOd=<9X5wmyj;
zWV<I;7m@_GCzOLePGC%qMq~WoOJpycNxz?Lvz^UZZH521r8QBuMFyG;yI|KP@M9{T
zwLRAP;|TcyQ2tpg8RPgt<W|?{riAP86?Ztpw94yUN_|FLEUmBt|JM$8=l7x4bT02O
zOB~OUR$`%C9R|AO_{3UN%@CUKUrj=mRsE^Ul2ng|J3H`@C`AJm8^F}umDc#=1N+kf
z1-~JRt>us<FG>As9NHtD1jxOCoQa9^Y22kOwM^7&zkhnXNrc$+@Nxnv8}FpqR1!=m
z_=ne^bctJ|^Qw{L=GL_TdSk3S`rR?MD)yS~7o*g0f!^w@nyq`}ZaS9zh_VHd><!PB
zZzdcz9(7qitm%AMtZWcT(?Int@<<U4p}9Sx$9V4f3DwOx1f#O2^3n_;F_;wZwm@9o
zfmn>q1bb44@_Ob!VSK9=q^E`0@MEl*r*Ncgvw6pvTpkZ^4}Gr&Jvy`m$9h^W66ip$
zM|8Drp+@y*JZ(~=%bbz9Vs7}Sc&C?vLqS^8JKe_3L&hQEjRMr6HOH2`AfE(!hBj$i
zO$s)TTLaQ`7z+HY-IG$QU&Ns3S;0q?zg2s?H9TFOgqh!Ju(Zu~o$o{Pt&OqgWT}90
z$&YwzPx9{G-Dr_N-6z5?qvz}F+dJT6Xmu4w<#~*eY(CjUe<c)+Moh9iU&_W%Hcc9F
z+MpSG;YWt0xD;qBqo#>}hhCFA?q%uc0*@#W5lBePt;q!~=RPh+h}jBs^*LY^`IBH!
z5ug@Da;M{iy%^UoSa<p5m<MyeIUJU273%Fm<xAGdRWo8m4fEEoBNHDOT(9{%Zi0V8
zbU}hXK{U}mGIxHL%07)kf3d#wGru(Rl8Md}JGxnkrcikxs68P>`7c-Z(7z+TNYo*}
zrYE)83z(8TCx3L(?`9(Ed<(=92bK3<$apv5k&54=Gq1LezZ{*VehCt*o`Ti$q9#J7
zh;W9IK$A@!@JZ<%et`9c;CAGS<-Ub%rr|=GF%-KlR0)pBm5sVte?EA9!XtYnlFmK1
zLitK>PWHnix-_(8pPMf>`TpVqT61?;o?bnzj~Av-50{`t$sRI)oXUEmF*O<!<jU&+
zyMHcdCWO68X5Qt%_Y>@2zRLIo$0ke#GqHg3j&ZE=B8{*=(;|Q3<IbQ@J}17FZZ+~L
z@n?t+%+DZG_Vk5<f?!h!M$apMlbdXpLrXK@)az7P@ZoK^BWc=YtSYl_YkwPzUl)v@
zt`Nh{NpLRlzN|kg1xXLYWo}cZC4Fn%Q<?Bpv`3nu9|1bhPAp&YsJIVoj^c%?8&5M@
z#5xcfLWgO5x9L>*QA-+C=-uw$`C%M8MN2LN*a*?jro{#k*rTX-ymbRxYf8X&==rrT
zNAUpo;k~8VQ!_EWA#{mWY2)p_^uI(0Zn;o81yO0nY{K_Kl|NiS=9BOq{&ps0AB(jU
z)KPt8FRD)}Wr+-*u%a&R5PJRSAbM%4B+LwYyHzJs)q}@Rk0&sA_hS&X^r*~ILnjK3
z&}lMIr9;-(iG7g+y!ULnJw3eja1nHp$m04~f%|;IAV-}Nvsi)Kakrv^eaBs1aE(hO
z*YdtVg(LP=+g`W*r-d{S$L89JD8_{(1BV*_l;_TG&#QgQw_MZD%Z|l^+E3|O*nbl_
zJU}zdX%_{^;h31a9U_%E)WWML8H<Z?xn`=;=-;#Ux8R_vWBiqhzmAQ;Uh$#kzys$;
zwavV%!4v=e<f*Y>0_ie^C9-gH@byXOzYe9s$e*Nd*TLRd&z~D#6r*oE$4F9PH?r*H
z6&ZP4h8QS)U|A7)u_c(W(QoCwpLIX<TKT$%2&Xg_^pa*3OBa8$+!K2nV!q{wFaww2
zvx>Odjilyz`VBbwa`XF{Lj<^<OT?;1D@64q8Vx=Tk-aCfMuEO9Ms(9ac6lHSVmkMk
zmqYcCIV;D5OY>0C5B%Ze%A(5?`*;_BQG3B8OR5$RVX2uAkG<KJ2HfBNtP0ax_?#Yd
zqA30l@YZ#DxgLcTJTgN%6wFaS$*=^p6c+Uy@TRRp^72M`d>uTH`(ZeG#mhd;cV`w5
zOJ{OATp0D932wQSxCQ9N>nmnz?-4K7zt9p`#fL4CadQhd%@xfm7V_Kw`~4S{h?_AN
zt6iBG?@qqLohT^s074Mdia=JjSQqk1@OI!{t@M%I(p7w3oP{@xV$S77@hqG!p=YuP
zeGGqSYM6@{?Nx4SC|!CpP8P;O`yoalWBj=%#!ACP!M#M(S<WFcL)iC_f>eZQXHH1g
zoenz;5d5x{Lm-3gOpqY(L_n6Ed&G0cgzI9HBlr*V%Nn4Gpd=Q7qRTGQ$qHn0z#$}#
z4}{f*;8SL-mzLU>(%c$xX4>mQH_BZ>d_Kw~$)Jz*Pe%QUv;iVqbk#)~7emy$XEo(7
zZv<8Tz4=f^@7{*&Up;(kQxql<k!PvrJ5utsgomaGG6QJ=H3S<R4R@RSb}%3!kn*$l
z@ouP7^a`-UkVZDC?!_#4Xh=8J?9%NxRpCgpCC@KssE^WNkzgm;Uvw!J3P`^jA=m6;
zrn}jzXd-c?&fc)@w2|5Gh;~8-HNw3EBc+A4Tzx-85J*e@YLGPc<WK?wfs~pXA$*j6
zgI3K)V1+`mYXqjaPwnb|Wy<OtokrFG1E5`AF+t;d;Jvj33EEb%HDqX=i{w1==u^OI
zqXc6}oa+^&L<58@eLoMwFZt^!|1oTekM!|~a=G~USFCRu15Lqm7_q2rZHnyJ&h*xA
zEkOWS>+`Tlw`0C^8-r!4!qkDY_!sQtT1IO}$K855&ZQ0Am@-vNg1Cb5Qcs47di_ED
zz(}g_IID0mYX;G%HJLgor4FJFRG8W58g3<U{G!!LmAa5sUSaJ&SkxuQjSQlR-JwO|
zDwb&^3Oaiey`jMSt?@dCZffK03mVH(DEzS@yD)A;F?scNHBp2Ah?j<q6Q4uW_QIrm
z*u~GQuIu)1dhQ{2KcMMMrSG7wY~Ut;36<Ostn!L=3w~WT<^Ao{(hKDIc8dtyM#v1z
zZRrMk_RI70(_^O=gyns<tmgv84|}*Ku<l^-mTH-o%k52C>*6P@PF&yq>Op!7%5?i~
ziTK)NdLhi@JP=C~a~)A-;_mHmMRjcXjjH2HTL!#?<NS(FMx2ntl*>tVwM0{#{Yy`!
z?{>xD+z(YWGl9k61;<IYf1kuyJdjEd{ZQ(<rO&!kFBuq1uj3I+x#v+0b@wxn{rIiZ
z0?$dK5e_OBwK|eo2&O^`^4CX%LGGkar0{5N&y^A^c0qej6J;hMrpN=KqhhdF?BQDV
zbsX*&Zid*%91ain;E)qO%f`B^Kyclp;Io}WwiD+LMxV0VJ!#9H(X$Dfyol(Z7f%Pl
z9=_rgP#1&m*w-b|rYtEjT-GS_MT6y3i9l7gxSq2LApv8ZGj;nXZTo;);Ok8pV)Hkg
zaA2EAzvXCpkXY#Sc*s^wIrxFbVdwfu_x?RFuRL`-TV;gYEPVOY{R|Nl7<snTdzM|v
zNl1xKS?Zz}s1KIdo?A8TM;1|Nk4pTb^Vt>d#3;0W>|iE3GrY_R_9xzy=vHY}H&=F;
z`c1Dt#s8SpSq4Px4nEY-_wGM3w72{GAn#O!olnLxr68BstK<Do6F}2=R=k&|Xt_Uq
zZGeln#m(&%AXsD(b2oL!v6+5H6d+UGV#UhR?@Fa9*ykaM#eqdW&@2&e?R@#df7$f&
zN2We!h7hr@X{-n+<z!;oUXviOkf4BZFqE2$NYh;o=@_Z9b^J2j{rR)>i2prsP}<r{
zK3jv<T;W=d`-R1Spw&9I^C1LfFo(7puj)-&#r3F(uXfkztGC*3&@WgZs$@1DLjrMi
zLprP5mZpASB6!FvEF%2Gex0ZD@Z(jVdWPei-oB@QVL!;Uj~M6Z`A#>}X%VgSYGdcm
zFp8470+Zc-${zfonN|B4l9gPp%)#E;1^uetws!QnH9ZySKs~Xqbujby!3P+d6Qiu~
zR`97*Ll<g%grk`ob@y9nFqjB)vSjN;Uia6OzmCf+*Mpy1G&{L8d{Xj5?;s^{WCh}*
zc(2cJpu5&ZEZVBr90##Kc&6i)uJ}*D?xN)rxI;tUdm&~Uod;qm0Z)V5bL{Kb?YJWM
zX^7A)cWWVx+EJjm{qkYzf=SINiw{*%OJ(Cp95D9hzWaB>D-dtle1l7=v=_%yS-fl?
z8QliTf`dX+vLZd|U5N|#*w8<ZQx@8ULcXb#jrGU3!A!b6vBPaszSGT@rkp_Y3tE-+
zoDXd$%9VxJKQDj!V%hsTTDbQi`-z~KBFqJW&yTBIeMsT=MIfi-6rzC~jhW|cDtBtk
znlUE6&}sEZ*Dj~~q**R~t#TRMzG_&=R+TOXRS7eBu9uOc7Nr*3XUELzr7VAo7jC^U
ze4FuKwR<&~?HPGo`2CKQ(3P#)6c$Xi)yd}7o_4!BKJCiKom95_=J|k)!jn2p6E_O@
z{#@6#{Q$f3_zCWm83DLQTbUXFQdL!|(k${K)`B`YNOtgR;?A(c<y?{@BAvmax&jhN
z|FN!KZ!;oAgTQ^^gR|?~<@qcJWXJOimqA)mYpJ{Eb77h`@C!0vS7h<(G0Y$!kd0p|
z&nlXd*F|^kFwjU_NoTH9^@PMPk3z1J6|gvT=!-Ef+8;02cLy@46E~nFRH=3hF*Wk?
zC1W@2z3QmBN*BJmtc+N#CDUoo(VZD)$g^e&N+icC<vc_UF|#1*#$YHL=IV?MC#5x?
zgTby~0T*KMb9ikJrb$u1s*;^iE6)=-O_tZJSXbPF%pemoqY<;{d)+%^s+f+?_0q>|
zS?$^f@-pNlp5)s7VnWg7rrqKZxx7?D-_lj`G;2AJ6^-JYJ0YcdZl?ZI_L<#ZYo|!1
z5m@Lw^f`RAqmKDp5$YZ!!Wm|aSzSYWnU!tF9vWHTw+XB_>kc#QA5Rzl6A?lj)NK9t
zG~c2waj1Y)`l4~KZ1eou^vW&_7V%?1KI@oceAS`A(g0@?ovg`m8Pj?}Cfhqu<4yx!
z#&RKia^`;Mo92Ed`8t=mNlSCYUDy$O2b=lSdz|mAFBw%D^H1_|iHCTr;8bGvf<Rge
zRZ1mhB|xIf{sXMZcp$L@rI-P?B%caq;aj%J0;aO<jO0B~&u^Q^<3?a)_MRh^Ny%~h
zS~A+6xNGkGXziINv#fAgl7<$dGIt%W?wT2(11S{t>**>d-R@sxn+dOpKMa?6>?vOr
zF?Df^%hcJ`{{(3umft$<#z+GQW&p5sH)e?>)h4hJ7^XC&PITHkO(zouaNtIg5ehL=
z7!;|vsydaXGolh~q*Zy(grTQWx@drd-{12g++k?OyWU4wV`d^fx^R3nY)Y<^-ep1v
zs%nqNNwX5IzhzoWxN-q&r@j2c*Yk=M4w2J6?*V$X3Vz}gc^@*+GFt5%u;Eeh3R0NF
zl+B&Ky(Tk!=2YCDIwWQ;WG?NTnW_&LAmTTdL(4-&jrrYvoPj-2CVQO|?mA=L{Rq9V
zvRiHr|9q_!3&+ZS*!PASpylT=b0T-l6vgM6Vnp0T7+%bEm=teAcy%^9<O2rs-#ZHC
zjDClDju#%7ozYUrqTj($$JDT!-r?}gB9d{sY*DZ`xBdcr%WK5E>_zYB=m~iEQ5-mz
zuF>hw5kwaEZ<(S#2EN!g^Mm9}lCQrk{rQe#n&w_}Pt6}1sqy*b<-nWsN&D@w_{tey
zV%Soz3gX#YZ`kay#pe|3g;*q3_1x%ZnKOA<R~LO{!bpd(b81qJmKsAa)fpzIVmU`z
z$23+ccs3(EV|C6O^4(a$-}pU7mHbtUOogrFZ`L1clksJp6mrQ@#3@8bG&N!37xa*o
zA5B&*9uabV#@_;cei*&4W84c0eTEU4ZlXz^hn1x}wK|BOiEx)}jaM3qHe`1hVBckc
z(CYiI-g9yFU}s@sJQ}e>pw$nPhx=OXQU5mYCvqIsN`Gs47vy9_4GYgq3jo=g@Ath8
z#)u{#)h<%pM%%B^M0j{2St_J+`HT}wc^Z>_-%pHW(u&M(NQ$RQhHEK|$sz@-$TIda
z!?sgvDT{JQmT)|(ZDRtQjYp^-YEFe?m0YnAabkHHD=L-j@I)aYQG%04Z95lJ(}YHf
ziD;DLN*bQn<+9m^R#Qi#05aB3rEW6}BGx|(yqg8yjiCE(4h=+zS%`<IM0%!`M}TsV
zYXZIBg`l_ibG{QMs8;R5^bs<`Ho37qOz-aI-#VioAl4noyVk;Tc1K~$1ikbbGjtoM
zo~+x<d&9ThvGsjdZ+(ZJ1dQ=Ibi8vU5eZR)T{|YE)x-v<uhF-Nx=MHq!(BS+8bi<$
zVGiL+uR~8f`pDJwS~6R0H7l_S-(DA~Oa)@*2Q@J~TM(#l*PD2(TL^obX%v8Mi#uU_
z-M8)D^<YooOU2T0M$AlGw#o@xmW<i=rLopL=;#k?rjrd5>`Y~-YzjjfpGXzTqoC|k
z-|I{odNNO~9b`WyvgN1ZBSX3t965?fG^B;OFoh(7eJ1PG3n5H>C#;*ZlQ^+pllxeD
zbmy^gk0>~DJ+QhbD&A;GH(A1Xd#me~&P4K$yj4wQRGef+G-*ad{w}BRP;h8YwTyxl
zJxPe%<qzTfxq$X}_Lx|em$3wasRqAMS>+odIkT>FkB-)GkRamC2pE>6u*5lY0iBH}
zQ`M<PrP^zM*5AJP@AK`!yw8ZeQw_`pX5I<MV%en_A)%QAtykma`}18LrarYT!|6{i
zHAY&o#1xaI(9ElG_Ptq^Kl(9hnFX4TFNrxM=mD5R8RpPIRo<-_b+_j_s{`G1<HMB#
zPg(X_`So8tHqbJ@viV_y|8d~(-jmPV<M_+RWq+<bl+Dei(s3_Kby8Z4#BGe<K6h#5
z;?H@~#g$b2HNR1BMTgE`njDRLSXpS!Ur>2r+O0*x;JH@NWv+cY45F|U=KVIuu(Yhh
zeN?9KbO6`8E^oUn{ll9@6)xxU`Ljn3!F860tEUfChpL9Co#-+;i(^~zO(IV!R**#S
zBszx#TWL1CoNiUA*x<IfAn>xV;C8&28&OoSTRbf_U3Jy0PomMHA|?3qG2J=f?v1Dr
z4lu7MOLIGD)G&G~^d@sEJsmc^e%?wQ>a(2`5^6ihU1f-#lun+K08U5_L`sC0=}H(I
z>fijWZtGoL`PtL0YWh$=p;dgh$m=ZP@521fprdF{r!!>|0rYykTSN?m)_7@iV#{>$
z9!U#x6JzyaI_^4#hGy`Lh((H<-yDbqI@E0-+}nZC-6q=Ks==2A6&ATmGUY3C`=!vi
zh2iu}UemRbq3>Jn&YUDkinTA9*b~wzUv~?S8O-;z=972kP>hSa6Va8oW+LO7&SI*z
z@r{kI1al>NN66H1WJNl2Oex?ex6PXf8-u?h;>_1{bR82~!xHPI6bgt?M#+PKF1R1K
z9_()KN@KTEN-?0}8S1+c1^Xoy&}=+j9V*B9eu=(&=uPH8AJnN{=5xT*++pJ-ZC}Jp
z72H^Dp_l{^px8N08n3Cvq7+yZPnBbdO?z!t&WG^4nbDO-IaQ4~!xkkr){faPe81MW
z8<M>)%!cUC{2lx;n3sL%M#mt$e_gfPsM>&uDe-T!Ao)R2d`*KM3PEH&*nVv&pyDkQ
z?oM{TW9{3sv{US0jg=W+&}jFXjCMP$#WugQQte}28yCCs)U7}3cIxU)C0;FsoXliQ
zv(#ca5iVBZ(+6s$f~Drt;aEYJwfJNq9?MyFy{x4zEjMyvWHB4d;QhIXtcMzruy68x
z_D*r6av<8Uos1RBRioh{N77QJIiB!sThruFHk=wCTO6sSN}Cw!De^elgRb5TclX8x
zeE~&-Zoslsl5Z%Ca3LYRMGaAsm)$}F=Qx#w=+%HAXy~~Ib+~$Zd&^axwu^MXJhRaI
z?13o8^@1|Gl442G0ALBN>y=k-y0&)d9z_8esg6Y)4mR^7;^C1|C3No)Gc-lUA=8PE
zhGk}lK^zS$SIcFGTjdfS!EaZ@`ZYebJEd9~^$<V=Me;*G<c|+!!<fOPBt@BT7!r}4
zL}DTlZV!jv|6U#h3BNv%KZ}l|cXf;m82yEMx7zx)-l!6&GQJ+5d~U9U<Kj!}1BHxZ
zy>5zk4BLK0FpbC2vEgdGT8-6i0|ugJK@SdyW~nfx!OBqA6Lweg#59UU>j9*&si()8
z6shG(^-&xiQrW~vA-uv}{VJxeq1d4?3y1mcq@q`;#zGVujrROf$ce`6Xe5YgxjT@I
zebro}=8xPrl8*0d#u&v_1%T4VA1k)YBf)CZ!Hl=h2_MhJXx!F~;l<gZk*WEe&4>tb
zyEykB@i*|Vpq;4RsdCUnsC)zUx-B~WW~X6%C^1v1*4$vj<n$&w>V-)I!DaW2c~*E}
z%Ea0i%nE)-X*3?mHWJBPb!kr|=l9<WqV?Qi#Zikj9M0<6f@;>Md<8>P`ixg@WGcs=
z+B@X=yA}%jPA%0V{W$$bf{c~@k>j;W`VcX1oK7byxlmV@ei`2F9`sbloB^Xh!gtb>
zo-maW;XP!e8^Iz1Z`z_@o{i%eG4Ow3B)YxGl<(TQ(Wk!)>G_UX%Osn%nM$RgiQZOS
z=D*_9fIIAcC5o$Q*C+Z5I6xPHX&an!Zqe{t$_u;qPi#MZWtHyISS}_LOy_ARmnD&c
z0qB8dV}-m9QwltYrjw;9*B>uN7;Q`~Ew<jd&8%J<bDa~!nARN{lfz$SsSG>(%!K8e
znKI2Zp04t_wm5gnXCIw97-licl=)sdn0pL9;xhU~C$u<9RLKqT-gQ0qIfYb7medE4
z%sandM+T7$a$U5yyI;e-u-#eJxyQVS`G>zmo#sq14rKK9fe>R}zx&AZog7AIP90v|
z-I<$dP4Jd-K_e@fqRaSlNEC5aw`R$0?Dxx<yBHrB*yGYx*Sv%W;(%TYy1qdOsyPoY
zl&kG>t00o*aa~Id$LKU6^=dI0B2qZ4%33{MtL;xK#?bK4WFh6mhM1~{4JGB$X-b>A
z+RBDl7(!Q9%QbSw>};cysq)-;+LY`)+Luf%JW<PzXhgO0i{ad?ZWcL3#Hm|UQK&Vl
z{h?#q6U5$Ckb%iqR!8g!-x0dfB0AXJ6X;JncADE=%y6?pf@b7=v9ryMC{}n^5{b#O
z^x$o_7qo({0f-E5Nq2QS&2JgYBw=D+d2nZT(133p|MEk-Ev`?X<HNOjrR=|qDd!F0
zge9l_&uI0d0$^r8%3-g@mgnkTrOZ**!>OnD4$rDsFdIbGlVaIMu^KfbsZ@GJb6(1S
z_ya~NLpIJGd7xU5wd^owvJ;{PiIr=+k|ADfb(=NEXd3XvAAruCLo1zSm8abJ_nUZ^
z#T$Hk2jEX6A#j9hQ1{ba`IBX3P1lHMKn%yvp)=*-p<;T}_v;22u~;wA9cV7x-7DYS
z_!E3IWP$X}Q&6ne>u!}D{DfYwG+im}U`qX&C&vnYybLCp+7XFJ&R8m^s(vy7fJ2XS
z<ZL)hiCB&63qz{mR)+k-oKBgoD{?q9lgXHxVW+%s$o4$mKZ8Luz4F$_wU7~Uc%7eQ
zwet}oXVQErqH2LRltQ`4+-v5mI>u(Gnb9cNi%4cM<4`G-_B1PR@_GCx^m}9hFG5s2
z-D&ZfazI|Pz_~a057B=U{3GN07>{C99?B#mVLPO$fP<?FSdwy46ubnP9U(w{i4%pc
zz0YW1U9wqpGN+nqI39OmEfvBW?B}C#Pci{lc^Ux9hV^^!!jTD;5GfuTQ9)$<d?-wm
za6~4<A$W#!U~7Mc{5E<3J%)af=cfrhikaC<tnT3un-X|<Mb>3S=ie7Ku&f|?9qGtq
zy4mlH9OWw_>KbU9npj1lQ1@3ARB_ksSK+l};9S<Xx!U&EIN$Lfd-Rcq?!R_v?bL~K
zWvsooS{g1|JRt^latTilBwu+`YT*>Q%mwYGf=;{~x59x|zn66YUb~$>d28jt#c5IK
z1YUFrmnys(hk32(m&{Tz8j&NZ+G4?<-O;I#oX-x{7cDy4Y%&egOP;JtjQ5Dbs@}|H
z!?u)Y>XK~7iF?n^#6&6+8{MTv#%!5rtCOzJJB5%`w8PY*6U|4*@FCa3CyrVZ`Dx!c
zwBw;tyhyNeZSS~plkZQVIZRK6hwZ3is)o!`CK$Hyf+49yojc{&ZfG<_GNwxPp_UBb
z^x@NNLrdjp7pt8D8@+&bbr!*ROQ7Gf#Os^|G~o^FI2vKNYZk@gVwghQ-kNCCz}>ka
zgRdVdBE|aeUx)eQ?{)bFfA)J{c0pLIyDWn}n@5kn*bEU_>MipQG2DM|4j9C1qi*^Y
zUxZgr@))x`NXFs8wsb+=<2;(Hx692LUiTR3r!%s6a7|^vHN*xMRVth4?l{ZETV**s
zJSNss!birn$Y?Cg7gN$8KhcCkuTrdql9_B&tfp|&Z?(&H4U_S@D^^h^_JNTP$N4f!
zE{daxF%AD9IDI#q%1w!Nlv_po?OQLB&msqfI{d3>HagVc)qa#?k)Va(w2=Ijv`o~i
zgl64{F7GB5jY)5lnd+v)+WX)-C-JvY6|Uo>WG5ze&OZ@+ml7jW=U>O-9}WvzHBWVm
zVS={D3j2WUVe%iSWjGN{I^@>kM8n^XD!c^#!$gZ@b!FblyF~02xg`@Dg}1FwjJ#}p
zVtBJWQPsYu@<hDxT{4PxkRJmZetz{c1>S^b(}V|>`!WyxLR?PruVmxTcOu)FdHO2N
z{C8fJl_#SwYv$pd{$G+u)8sIU-mTs;iXt=OGi{quMr=Il2k^7B@plTPGWqDKqoST9
z6n>86Ay7AM%KI3yI1cJA@vR70`bF{m%i&HrrV+wF1W9<O>|oM_g!rCgsS5uFrrej3
zZs#1Y@B5>?nW%-|)Lzu7;nHS#{ID%CJ%X|GFrmvcb(Mb&M5&DKZ5p!93r2Qa4eEK;
z$k44nAwP}`wDTq%=p$rq_7CFWKp2VrDZLNh@og#myLUn7?w<Je8azMQ|HAdqW}9V1
zKtAhe1n#Ay7~1z@i0?J(-Ol0-3*g#3S{Ab6iHAXFsdx-YbO?cahD;+8HezP1RFs+D
zpuzW9xgm{lPu2?+{<WT|%e9P`{;Rs2kL!|`8X@Nsjb^5vOpYXn7)eBP74b}SBn$5K
zcTfc7(81tYB7<EH#5cl8?_+n{_c`Ew%rmK2R98?0M+BP&v)w{QCa3*&kWS+~J32I~
zrIwhpBSLbyIx%YXG1F?K5*qoPaz5g=Z9J;j<y=O^r^jPnK501oSylW`XqT`fBS^iO
zk7@iH=(KmI!BVl-W}p16hu=_;q}h2uwX*IshQgYP$xrtVNk;Dw`K*-D6m|Dr$`nOj
z*^vO3aOV*rKOX)^lp$|{&@b9?V;C)S*?x$pv~hxT{h!!p+D{zjF#le|A~xg@!S9zO
z!p7QhCNbvgb?pXuIw6CLy#k15Y=TKi@GN1qKs&vDJD(??Kpn(>A%^hyUHfM)+}S^~
zTHNg5)$gaMY}*&}8{g<QQ>1bt?;hG2r{q1MLNTMzkiVY1FZnY4E@dXWWBzbi<?SS;
zm;OKkOQ6RUnTUSx`{BnoLDqbf2L7euCg)!b2fK4o59&u;#VfHYEg~<EKeF-NbOsE^
zUoyhva8#yy_JQer?KQmdWB9juwLbX;zDbX<ji1^0De%2#@U0C@L{EiY-;X-Fg7jb7
z-5yGW5FLN{P8?g?a3~OMi*|HMx2g0J>85?Xg`kj)vsSiwd;aa(b$sK%-pl6?=gsy+
zBzoe|#bN7NLLPdEZxxE!R5Vip1Z`W|U5;+k)Z<IXA9?t`ADf$4zT~h&7k^>L`-yH~
z%VHYcZTcaDcZ{J_+3sMs?+|$>%>OZvpRkahUjHljk;FX)xKY0=C4-$`1{PI7nx=YP
z6()Nf;rJfk<&X-z7^+6`$9|G`yLDWN`dGEnv3{eM(Ee0%)waZLrqGO`Dulf5x<Ly>
z2fr%z$}QFx4HhRfl_PirH$WLcC|~+u+`^KMO``G+v{-bf3bXLnzfST0{9PZ6I}gM>
zzB`Gc6?o5Yk&mNcbOt>OyuW;QqGl7|J>Y-7mDvy4uJyVU?F7(XV%@Y$AP+LYg1-Hl
z=6fiVe)d0TXz6p8V`C9c;BJSC01S!Gjq!Qe{FFzpo?2Y-9~At~8yKfSb`{m3j5m?|
z?a#rlGBYKIuo`|G%Q)f^67dL8@w3li@K_Pvj1~@HnpgO;(sR#3JiTElIq;K`4RIxw
zI4YtF)qnXnEtpA*F`aLQ83AKWH^`3>zGa#!?@$Q;1a+)rDm>ZPcKL!He)nI3YgU$5
zWTwy}FV-kx{)yGYhk-_+L{=pidl6-0MUm)-_y>InRo%MA8%6-kH0x2me+GY;!aMbQ
z$bACh#8<FWwP2@xNr19fY7GejD)<1llx#z}ttrEEcy9Cf%k_RF%lq*&&tSLgEN@44
z7n|2Vy74z`+b)kXPUAQ)V>$5t-5XzFclLTb26JVJ{mng{<Zs*#lCf>E#|dUB=JoR-
z|9@du)*Ck!g?;b!cpZBdkL~d!o;9;%W|Ai3Ocp|#jiyPOiqeHtE$IR+OHntmsHGLE
z#3~j+dFTrdy!8bhDyoVXgj5M$sRUF)2=OP1L=jTp+-uL$CM6>!N^I-e_dCbu+;h*I
z@A#P}2raF+-<aJF2&nzsiWz)CAh#-_YuB>nogyoLM<K$e5l=a?aL7sR4WB)UUk7FS
z^y=xei|)4Ga)t;I(3W_-AC|pj{U4DQxnKPR?OywmcQ7-tzu}NTj8dZMz*+#K^*>;l
zEWY<4D4yn)S5+`GqStsu7g&DfF3f8N--a+qxLKw1%K7pPz5z_1*y!#8FADi>s99>Z
zBlDn%cJRONu{u%EgItt2Wxtd@oz_^<r9G=FB(&2+V!0HT#tdGf6F@jQm#-{5MibAJ
zDt75)NF5js^LhkSx8yb|)72%-8gzV)$`+@qfWedXJvEmTOC=ohG}g-+A!YA?b7+6e
zQsDh0{kb<(wEbCF;mS&=Cs&!izWzI5+_03llJfg}0ru!ukntJrGWR~%qqnYHJ~ypU
zU(~KQ9^F7vM>iw<ov)6sVh1;JaCTt|PHLn%#!CJ>9PiT@Tv=Y|G;S|a21D#8lhDtp
z{<8nJL~GBd*36g~(B0uUQM1SLx~LUq&kO)e$OME^Bw+EhUvOV;K|ZG`;OME1r<`+I
z+FOPb(SwW6sj8A8qBvEKYrWnOQdd>98wu9axn6uu;!!~R>G$TPgn9f5kEGOmPuemo
zg(rGtOb*~SmK~vxDv<>Vq9%GrNt-Oit(dT9d_=|d+MDnQS~1~_Pt>c*Pb&sq{}DpK
zg>nCVy8{9l2U)xWdU-U1m``XW(-^iR{ubn;1w+Q#FC42hqi>-pw6r*ag{?$Hlj}jE
z7}U8*<#b0a56MYYpA*q&6BJCC+*~B5=*G_Zx>F3BeVH)JDN2qJ)s4d96<t-k#bdqr
zuy|BVV)iLjM)0SGrHCr1b$4i_zLrA#FL$ZRZ<NRSK|r&5<ETR`N-+#eqHeOW&^(jC
z19h^QWNKB=0l9LaJXA>#3F|8BP0m5Mh5uswGQ!Pq3veH^Y|$^srNr&QD$HxQUu|n^
zo9{hfsuO}Lg3+!m5zy&i8@(3zV(&9*zsOX<%7oP07X*of*Dk`;<fZ7g?a5?3Uz220
zAvhWl7ckksPe8oAYuK#LKOPBB)Xz(RD>mo%(Zsa*72%Uk7K?Jv{^Lfybm8kTLi<)C
zsi?5$xHYj<><giAWWZwd{-48dDYEkR>fqt!sU@rypZVT>D>tHf5ilxZ_#-6JdPeR(
zt|E8qdd9J>>lyEFsAojnYutTahw-Bij(?bq@3)56yw3Pp0NjT*cbN`O-i6hK2u@(i
zADn*S4U194IO%^tm(VGQ*&VJhla&x!+z=Qe&NOKBLl`MTI}yU3-fngL6#gDrE@VQO
z*QMzKxI<ox*}a44(vAa1sunRMad^27H+4*R(0_05!hJ8Yy@I}(T#5ziafr4${Jq=?
z3&&mL(i@{zevPvHw9?0Zet~Al>UK{(W4ky$kxlc2*TXy9Fi*mG%CXY*LQ1yOCwEp1
z5>u4%T`3u$X7wQV&?S6?&Aq|ZW-5ef_9|gi`7jkm719IGHds$JdKx|oteszgLaU~!
zgM!yS^AJ3!%<vH)L{z!}x=xSsk}huoS|k*bJE-}`;*#_LkeIsxb4W29C%NKGo;@}o
z$hKR!l}s9O#X@>AGwDMqYzd|J|3FIt(B`a@6fhsve4uY_ez*(&LyK;VXZX9Ypb#E)
zoasjO-+Q=$zu{g5+p=1qwq?X9<Xc%Zuic-6b{@!g*6RKm1CNcivaksu(bWLDoiU&E
z>oB@{Fg9CF_t+jKJ5fE2_$eYANJ7M`Lre;uz!sv^=<Z(7<C>=7OwHJn&=mgMSyu>o
z+XrS<v0>|`VMJuh2&?7gu$pcve9Wu#W{m+=$VxF8DMHMOCBdqH7f*n_(gi&d(xRp$
z^OzTfex4_yibp*j$+~FAR9z&+JUS1)qu7_W4e#R_Lr)qtOHxwDERuC3C*ghI4M*ic
zTfE}V7l}@yCe;h79N&VKCbXr;ExNk_vH5V*Gjs5B0{wY{e*EiDeY5L4dY%8FGU0rB
zQn*gIiRk)o*gwzx2VO6NX8-_r+ND&{P7^^Cy<5sgH-I)FB$^mUp1`!*ZsCQ3#0qKB
zv_PPQpf6--2X>&{ZFYwip8W~q5BT60_$hvY-{6CZXJ>~%6-BU<?wq-E@40vGojXJ{
zV@;7o>90v24YtUk9|mX0wq^_-qZbx8I7>O}lfmQk-1=^?O}We~gD0&*_OroL^wfT2
z@MCi9*9Pavw%>x;%09&EgZ7eOi>B$D!5Nyc9vD1EZ>(nqXKB`YZ}2#+T3-ydX*To3
z;K|Ip%$C7Zv^f6N;Kwv=zce^U6Ly2vD5O4JP(+fB$tOjO=BQ2cn9EecSfYYP9{!Bh
zNl>hH1FTxml#m3N1?3^BYwRMIw=sLP2-Lt1*IZTXaq57l2P;|&`xlWs_7$6J&$Du=
zv{WdUyb@a%u{;h~t1U&)7I{_=+OG4fvbV?@J`Y&6%{!t8wg#woLA_50v;i#Pk{Wzh
z>>q4!30y~foVwU(W1)CgVy@u`0XC93!XbnX-PMVx=-_{6EsRpt!a&u+=vc6_TVfS<
z<+E_<<sVpXu-bz~q)QR%^m&NOqh%n4aRl2l%puY%^%;`n546?-N<e!eie(ru&-Ip>
zQb+tug}w}sz=7v3%-=VvyIrUJ9WGSDvqD2XTwD<jZl6vtpJScYXBB?__u`HEIW<~*
zMCZD{JUkBJDT#*Bjy_FNnE}2XNG|UXqfIdM^c}h>w@J%5kS6ttN9<ZaM?gbpM%q5r
zNUM<KDmK2(fIHed)A0yxUB@HGXbU+J`n*@n%@Kwq+c)1TcO<e=zYI|g^clMN9^#wG
zt}?>4$0}`Wtk5@(u8BfC6)IxHU`uM%hb)G#SaV(GxQNJWi1benLjJ}Vfz7Q9heNl=
zm4Cv|T{Ph8{B5s<u{ni^r;^kz?+m5#*^Y=sG!Pw@v^3k~J#np>UB}t=Wt{G{!Xq{0
zkzf#@D?|{(>MZDph$&yNR=vr#`XWe`o2f#cUF%3UB{Q~+54h~|!>(XD5YB4VZN^o_
z@s;XVip97c$-au+Say?$i(56M>s~qj8{xg4(4P^(aijov+HK9*E(38C$MNr(n%3A`
zRIL&FZnUNLC^~j(-!J}3n8cJ&F5QUdaO>LoC?3bs%!LcT<m7X5PEHOQ*?ip-=D*zi
zl%U}u2OTfD803*p0fiJ%ObLDhlu|}HK`IDQNfp)9P)i;4G|)&B&9u-;8|`$^Nf+Jp
z(2Ggm&({c1`WYa`AVUl@!YE^mGeMk5rb%Ei!z^>mv%n%tEVDwARn}N%gH5*BW`|w&
z*yn&llxRHgDIUoYUA*FxTrnh1@})ourAUf-k`nPtKuV=d$|WcjJo3y7?|ksen}noN
zs-)U?leSGWZe|TfV#eu}x;;r<I7fy`-DI*|b{8?jM#err{yT}f4!Fi#2VLW?lde<x
zjB*^MZ=9WEly^}%N5@Lrv9+YFuiK}N@@-yT+vgW)Px8$6B(Lq?vv8kj{hF|>Y1f3S
u^$jU<R22XK0RRF2{{RmF000310002YJ)+M50002S`7%!c0002dw|tn8n$D8|

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Italic.woff2 b/source/fonts/KaTeX_Main-Italic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..944e9740bdf61ca4f437f48f44133253c7caf052
GIT binary patch
literal 21032
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Regular.eot b/source/fonts/KaTeX_Main-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..dc60c090c7a31a74ffa16acea85ddb4e715ccc5f
GIT binary patch
literal 68228
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Regular.ttf b/source/fonts/KaTeX_Main-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..da5797ffcce7d6bcf6155a5744398fc92ed15cc4
GIT binary patch
literal 67996
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
GyZ%3WHxvT^

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Regular.woff b/source/fonts/KaTeX_Main-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..37db672e821041b2232c741848d4a37052fda363
GIT binary patch
literal 37620
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
n00962|Nj6F0000100000%sryd00000#`!W&00000(YJh?u4?m9

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Main-Regular.woff2 b/source/fonts/KaTeX_Main-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..4882042489387f004bbfd83fa1aaa68d3655cc48
GIT binary patch
literal 31220
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-BoldItalic.eot b/source/fonts/KaTeX_Math-BoldItalic.eot
new file mode 100644
index 0000000000000000000000000000000000000000..52c8b8c6b4089c75de5f6f82635154be2188afcb
GIT binary patch
literal 39990
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-BoldItalic.ttf b/source/fonts/KaTeX_Math-BoldItalic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..a8b527c7ef6b56119ef869c96947eb0f3228c20f
GIT binary patch
literal 39744
zcmce<2b^4Ic{h6A)6bdSXQ%D-nVq(~Gu!KEtE5%0yINV=)k?P9WVv9=U<}v>Y=!a>
zIw65TAcU3?Eg=na;iFwhC`oQULP+N(H-+SWBoJat-~V~f%<f8-ZNA*!?^?F!%$)bk
zob&YO|2)qtfeC`(5?(1t!o`J!BYV&O^TFR1gkQ+w)7bvQz4e9G%7+AjUBdgdjl0(`
z8lQdbM+8B-h|j*g@!$i=?w?mmg5Y@o=g;4I@wU7F)c>ddA_&TyAlTl1+xq=jC%Ex_
zF}&)x-SzOTr=R|nfFO83DhQAM#rbpVXSIV9xL$Y${|%kT2io_gL45ZB-e=F>{lF#t
zU!C8<`#-^d@3`xpjrFHKdgmkfz3<`t@87+C=^}el+<|k;c%Qtme)qYDVtwxrgg3oT
z5VVh7yyyN0va7%Q4MBM41lIi7#rw`(eASQde;00vu79gQ&yN3Mul=Cyv}@wugl_5Y
z@QLuP-+1I#I<MFM{#sG~g7`<Ek1mMxDgMDV;vZcr3Mb?TalTLf0{<rKob~@(`6ssu
zuf=urk0>OBn(z>go?@4+Pee)l9YMjV%Xk%p*IBRZFNA*9`5nISm4fg?xA2eu#NXh5
z2X37|E2M<v53fndYa_x5+}ocd1>udS@JsBABDf_a@#{Yo>U0I$i~s!;9D7uFuXIkR
zN@s+!)GrK6AI57*D2rF{`j9Xp{jpGH*Mx-lkWiBTPkjC(p)5a$bDzO~^TMF`9lV|s
z2Bq^j_i15Te7O*ml6d`~FeT3mlhP-Jy!d{hC@I36_%MzQp(-+=D4xM_NhpaULQ_oP
zY2PhW*;|D$`@gRJNIZ$-lR{M1g|PTl{I^Reh%49rUQFN`58nHPQT84oApRPThlQ{-
zjn_Bh_xItoETrkV#5du-eoq*eHiRK5FI1#m!W2D=^b%oSe2<V6uL*JSYq-~Ygj>Y_
z!1upJh~augG;!<^vg{e5Ph7_L)rBH^H+~oQhwF;s7lpLAL&)QNh~L+T@p@KBvkwU=
z@#8`U&ldu%!s0)GHouSG`F9-uKK}a@{`-p1kp6(LUt)iadwK$VsDKY=i6dMhNGf7n
zMg-yO_yiJ#_p;E!YZ3gDA#F*aS2!WO6nuM&^bYA4q+gQWE4^R(p!93fSEX-Be=Pm0
z^lv}BcI_Ijpp`p>b*y~zwv``{J|tbi%0J>OpT*L@zV=7gzIg5TuD$b_Uw!6Ro_XIh
z?|tSy&-~&u?|$YNo_WhNuYcz9GZ&w^+igiMzVv7LhpBk7_ChYT*GVo;;H0Gho8KmH
z9(4{BRnraAW_LJUZjaaJ4+KNuu1GW%PgpCulc{tjo68r9J*9G`TI=oWuQvt;hlWQw
z-|%01J%Y>TwqH8B{muWzaZ9KqTf))h`ITgH={E)E!KIdZ_{4H+AlfRftlgTtd~~@b
z=GH%}gQ*)EnKRK;swJ$ngxSp8CqSXuwV7&*Ra(ilTdOUxl02JiJ$;}h=TCg1$jsUK
zjrl{X%c)E%dU-k7I&fe))oQLpldTat8d+IMUa=OfpKTTKQTtu8)ko+1XywxfmXo-N
z%j?OOd0=@BpCsv=Nk>C;G_)37TUl9&wpe*(CDRfPET3ChskWp_az5FTbL+SvW%j^w
zOUcZ%)XWTSf2GCNsx7&a!F?sqUQy1>B<YOx<MjWQxHiAhl1eFjKAXIpyo~R@(x>F`
zSO=Ha4n)@vtt@9&aJG4P8K<K3Q0-r?wv<Xsn=O9=Mw639#oNqG1|-hRthdB7x3<^@
ze!r!Zsx7UOq?@$OZv3V!oWT;@W^-+YmaNV3o75|x&}_o&{7fmeNo=EXJ@HNJTUZ&l
zFpDQ%OU_@;tP>+RrGzL^vz3hECOdc8l5&~#IqN5E&vSVzi>q+)=A&)D$WAhonfZjx
zl;)RH(M)Qkl&ZEIl`En+-#WWKS8X{fcz|TGWuM(m&xM1`%u35a?+)Re1MjLW7rw^L
zNs<HwHgMZ5=j>YY@>;Ux1ktK3cV+3w@)h~)+)B3PIG4FpZFwq72bY%)TOUSK_}s@o
z_g1b5uGyo@S6r^y7F(ZbxymG@5Z#$8cKV+K|7)=zI3eW@EMFnX1+iu>gT3^#rBnu&
zb&jLfdAbC$PiI%~B#XHJ#WgVTI#xXo1Fr~zF9Q<KwuGrqFvhqv_$tB`L7YFb+;U}R
zlJhMagwo7F-e!_(`1wz}-Ar%_Gc%Xhu6WgQ>m}uA8f5b0*?i?{D^R(@=rssB(`%@5
zMWWYm<%&$NU6m^ey+$fmRC<k8u4wcct6b6PHD0-5&}&a6S!=Ods;v?~xVPFW^Mm`U
ztwcp=Im-Wqd+f$NCh*-!+#|iFaF6tw#y!$&2KPv>S==MN=5UYnn#VoTYXSF2uSMJ=
zy;ds839bUw3P|H#OU{BnYsAlWytXPNZ?#IRT5eULNxcx_MM&FCRVlMRk|8tpf-4|O
z)mGmodswj5Te_mK!2B}I5HX>DJ7u1Gx?V{R^80OI9h-lyM#E6t^!Dg;A^0h7vFD~T
zBUkDyfF~Nj^W%nZddV6DdwrzZ8m!bp6V=wxi!Fr^ZeaN^SRw>-$y#!elozDjb@}pQ
zW)a3>8D<@35gI+jSiq0pAAyw#LP78^U(zyW%jYiFGRfq`WqjA@*6C!;`i_>2@5HKP
zYmM~1d2soYVp2**KPl#=$jS`aKpoZ;zlUGUEI|9f&FfVOde6$1u@`68&SqND?D|=l
zA#rv+isQ8v=<bcztmBqom@^COBhd_gVFAyD7yc{wzMK3AZiI}b3<Ch#D-bA{_8aa5
z-?)y8bNnXoe|Q?Qa$COzi5MdqB=PG?zD<M71V}T^KW^zz@MLl!vq(Qi+?wDdqX%eH
zR5-F+OHRNy(jB)y#FuT6T+QL#E}Yu*z80gND_m=tHfL~;)z)PD4rV*7StIv+<0E!h
zIaSFdYecmL80LwU+LapfLjk8ZKL$6qK5lM)%vX0Vy>88pN^7LtIdk2Y&Qw~X<;##E
z5|+zQ%jf(s*iviN@cXlzTqJ-U>XL9}pcOSJiFJ>2FdDGoo08gj-WM0e#hVGne?|I;
zZe(93G9%H{Hh!m8+V?n5#OM%pfu27_l&4#4KgZ@HFXE8{mU6<|Ll1qm)&O*I=kt8N
z3pSVeeXT*P*<EQ3<7J7cHV?Wc7vR=9blOuPacnJtta~e;K;VdjeK=rru)p#N#y>fL
z1OCZDS~HJRhiDBQ9HupNaD>*-!BJYX0|&=w4ILb(HFU5{Yv^Ew*39DI1g)WiRa!#_
zCut2G+(K&>aBzy&(7|b1LkDZLh7Q(g%?u9C&>A|}pfz-Gme$b0xk_tnlgzi$o7NOQ
zzKtJE<LEq>Cw$z*o7*d`@y*qD&>Oz`PJTqI@8U<a^zKS)Vsq&Qdc&9A!;fg`MSes}
z@2#{ZH<#W=Z}`&t`4KIBfFIG)msCD!$YLjWnkl#Rb1f-*;8MrsR0RRS_*V`gP+@O?
zWwyfai&q47=99fqQ7F;Tr_;Jq7j^5nqJ~v|tk3+m{<QQo0#E~I%$eU7n)t)tNy6Nf
zEPL`G!ptX^uSjR-uH@<6Z|ScTnB07F1F;sCAevtJbXIrkqP_H+?Aoha^6TL^=B_Ab
zuS+<%$J+M4$A!m*0bxM=J><1tX1{aoC)b8Vpe5qxuKf`2zlir$dXH7sx{u@BXW19<
z`PAmR&+>KrI;;$~{~Tii`;7R6<d%LSe_eTp`k4CvYM1m|^?x_MX}-byk?q~~3ywRS
z6E4Bka_{pLy<zXyd>8#e|3?G%z*m9;A%9p8f3fRW*VV}1MbF0uVt*K~#J`(3oA`eB
z1Kn4XPp5XLOX(kEzLx!P_QSc|x%cHCDa49z>sc<@OMhJccI8XeU#bn&{<-(bKE3ZN
z{SVZI`i1(_jh`Qg418vAU?@BE$j~#xYa`B)yGFh_dU8x2`|kK76XL|zCofG!roK5n
zHob59%rqfMBF8kof@hTkP0&BB%1jXZ$_-D$Q)qZH^|zg^*TulI|4?VpYT>=tYT}=X
zUlx4A$fqSdKij?3svTHv+HqJ}5|Ntr3wxsUR$%wF->x)mOt2Y(kNG6cUk;`7g9F1u
z!thX|9t`+3RnXMmwR=QSWTNJ^dnE0uBpKiK*>y#dPDl=q!%!U0d{i>%ULk<eB7T3T
za8y{gemaf}P-VKhA&6pSNy9~q39GUp3PO(VB`%1%cwcAHb?3{%o|R@76AmAo7#|+!
zFBiHaVZTRLg`I5H#H}{cxYH@ts1FYf*CPyv<E$PEMp>v43}{Z4N#`?ZHAAcDVQ_MA
zAYT|vX{tYjb@XsrftIkEILXp37OD^CclZricSX})g?;&}lI9E;euGtO<+5Ftb&vN{
zE_=ooG7OD{Y%!Y)_)#v?>(&iJ(Ng~1ks0<4*;Lq(qqm*cy&kV7%A(2!*{Gz;HtFgY
zu6}{p6}R6IMUT&GFs9t0h@-=@B+91WtAH{hdmu5JX6&)Y85<)tk%Th-cNF+bL)al4
z67Fr9I+#~w_~tfqQv!G-tJ=B({<2lDI=iGBqAZK65);Lo2r73A3};m)Y;+cHTTvE4
z=a3-m-L*J3IW{tcpXx976bp+PQwx@dhazksUC0+eMbI(9+LTMHS|&|&<nNtKQ_HNg
zhz<0z49MKT6~jZ)0ItSc&EJ@2Q*3zXeQaTVS<xiiwEVYU>g#&7tNJoYmqb;U)C0Mo
zC;7w);~#%ulj(fFxNqXjnMC)IBevD7ZD3rv>yA{4ojqqCm^Gy-m4%sC6eUx32PF{%
zjogt<9Pfs#GG|}Bl*`QQSD9?H&i>tqhh4gabDovd)xVkdGxq9NW1;9+8u1XVnJ|3q
zhthHJbHZ-nb4#rP6vv6v!UFgbW0EZGj`9!Gtq)eLWjTTP!Q_hq@lv_~Sr=A8ZK1Lx
zNRqNDC`wh?6SXv==f=f+nJB8Of~w}PyP$cKwOH|-wMAvm%1YB5=?PAj^KMOxmRUXE
z7fA<dtdJib8YC7#)WHPeRKQPcgF--O@UNu|bOI_<ApOV34Pq^4-;Q8Yl#D<?CmYZg
zEg6w_o-9Q@F_}f3!Qqoer986gQuLCfNuf8cR|e0%Gnc81{MlRm742lXR+U8Ya}N3H
zHA%tcifnkD`v)TiJ6)Q|-&@kWbLoI1=M9}4b}6E)%f`V+yX^DRqeqUfKJZ3^xdzfH
z7!24J(u1Fe9^{1yVcF7xBm<({)`Bn$V@LWGRg@%g6?EdlAB3M`0_@?&)(I~2fa&YK
z)iS;^J29Nmw9t*hUJtd!9kju}nJxJSnF<+6^mF6GrTlua{vY2r?s(L}nER`5>F)j9
zpLJyUjZ5?Tkpl~h1Gffu4|{`+h|^}?D8%~h>qau5{nDRwDQr`Ae{pWk#@N-ryZU#c
zXlCqzp)<8%su(a%mr-Egw+SC>`aH0!3~0JC%2Z>GnY!F2&m?en5g71AL6q_D1;KzQ
z80tkq)iqVW0Q6NeWNiaP64(kiAvUJ#<_W<xb0!SP_={Z6a3w6vM(2w*uP&P~F5cVD
zp1S48p+-+WUmwYbXY5+MJUrkX9>~D3z#l@)Qn1G=37{peoW77#SP(9vu-_pFGzln~
zb1u&ru%yF)DVgLIU*Te^mTL29oW1`kR;fxhU6ge3fHNei!H|LosxqXVS{chVJfVmw
zn?8>z&qzwp>yXs2t=?lR+jcE?AL=ibA+nlj232V^788wU-_vGe{|pneFs+JBiA$1<
zmp@YsT@7>vMtXI|zUyL4GYU{d#gwo9yQHh8YKyw#n#{@{EsL_zUp%8YBn4iPX|JB1
zmgTmE+T>>s__;2;wQ1x0Ji!dTBj!Ul@&QOP7zo1yKYcv|O)$_{6$~S1fPn+gcj0!<
z(Kl>fRyM#n_xh=oLxaU)F53gX*<OTilgu*pei!4WpPVysg<GOFXJLj4P$rjXo$B~t
zFrGV@>v`7P<e9iLbm|c6PGoBCiU;n}BO5zlFWlfK!WMfy->tc1nT?G}Hu&QH!~>=C
zeviUE$n&wwnfB~<DomCxU1F+pr$-YZfLH%h(L`N$N4-%^VGl=lxLuN{m_ExrySOLe
zd>Xm-FVZpiid%#?Hq9E-<N_qG!=|dBYG8<P(PRSrye_Z}LDS?_{F)4(0K>E-=(@BD
z?@*P%oflfq4SsoZeNh5iqD(lre`(i_>A^-7kaSnb<uFv?7Pf3dTtv1XWQ9MrG%8=H
z(UWo84jN~<Y43&~rm$$6n}8ycULhc&s{{TZ8MkR>=_po*@WGIj2^o?sXEFm!(bRE6
zR$<d;AG`b!7`w1=?K8oeaiF18VfEE5w;>&l^xX9e#iB>KxPG)?bJ?e+6bhN@$$N^c
z%#TP3epC9osKj(pfjb|$bgw>P{QCDC%wCt_?%9_AP-P_~Kb*IpI&|QkT=3YTUe`!{
zD}1u-A-?S6s3JYlbPpB%x-75<Zacgn>zmxkBdjtt$y`@q3&?B0&?0DZI&83kn!aj>
z=Hzs+C5sb$4LOg_Mb|AW>)=KN0`XGe(*1XxT|a&D#PLh@!jtKGVI|`tb-6x#A`*h;
zoWf=1V*YV9-3hOzpb~VRn9^RrJq)*N&()J*-$0pZ5-i|N7c{m<S-!@-@iR3YL5kAf
zACJG~E%7)Hz+}m=1@0*1&-y~`lk<y}s%(<MEJf}toZZwRw&N{tVLNVm?gj@Yie8vS
znTaoXkl|k*oH=!{wf(W>#M-tKp_QdmSTD*~uWlOE%@gF~P!<y>!PC0X@%EIwv}0XW
zfwz}e1X<3>;2FF<P7=emPLySE$q6pig}&qI{6p~dU7MWY{-@C)yrnpxJEtnAIx+*x
zNj2Vu!1a`DnyTz?Jdn5}>^Bgz3=GUKp5o$MiGH^$=Q35L(IJVdn@OZjq8s5o6Rjuj
z#QG2|(-xQEu!Rz`-Ou3p#)P%cqyq?QI*D61oVFy0(nX4H6oizDlBEcdKYEqnagje+
zD{zi-Lxlv@I$vb%rydgq=L?ZSfu5T2tj@_GI#w)5>fLt2JmW){4qA|L@D4)2+D}g8
z5kH{XB*hl1PE0fRiHYh^DY@UnN*UGJo#_ttIeIc(F7c%klTOelFm$Q=l=yK|Q|tll
zM?Yot1*hHcjVs<_Ll?8rSf43riLQdi{#Jyqw1@=$wBwn704-iATx_~;Js}Eu9Rc9d
z6oOBw&HaRFXwX|Istu+(yQIpLRf<sKcElH>6MPX&@5c7iJnjqPhh8bX>?QYKxN9Xd
zcxkb4X}suwu5#KSsDP=|kT}8{w!`F5P;<(#pBWMb3Q)*$4oj*FcJ=x6Z=Ai5=EJ@+
zd>y_E;f-ZjzpL6*g{j{DgzOR7)t|8A$3>%RL!zxPxFAjSE@w|ia+-pFWYwEjU)2>K
z422Qk+*Dt;QmpHgKa*u|R1+>$h9T7pkv&o96}aSg!kp{ux7jCJOwu)<<bYvELM160
zTpv<X!xPAzKD`z6Z0hIrDcGi#zwr$si%F*HbL+&LP2P%M25-lOyP7WK6O_nG@*o2$
z&}J?50Z7QAE^bqBjly|l1xZv6NmMh@S;7?^GQY94po~PQ>B5hV3!`1Rdg1nru0=LA
zy`92#RDHXR1xqPdp=6c>U^9fg!HPbVxGxgcMX1{J^!#FW!TY)?-SE3%-Pman5#nF8
zBgBsWw-Zx~DoBJZ3lREvK$E~n`6@i=4Y8m61<>b$@L<zZro{FnXty{HFSRNBaguUr
zRc4ZuT{3kQ)D>0@%?5?wfJzi+ummEras62ir^G?7_2WnPEiFus3^w|U`L3YL2}tDv
zyTgvqp-xd42r)G5gZ6XN(2mML8E=4u)eBN>xf}!;+kF&tgb<fbC<hbbM;Jtr$AAsy
z4(N0{>f`84dS608^xQq*ou7vkTY$hT9yOV?9u6Ju{iLKgFTGTBaC+DKH$9U(aBlZ$
zZzs4@Uww65vIjg)ab$?i?wAXzpsD6?9~gsU@oS>O{LBl|w^^Y|(zE|5r_&G5A@Eal
zCOIjF?{J2DB~5Jmq@d`R*s~vy?3$gi0!v9(e|+^n6jcQX2OMfkrg^-vCfwb0j{qo>
z_JU`}fdFi>EQ%O{cm_QN&yXR2W7;MHhBQy21;nv!=Q`-ukwZJ@rY8n#g=|;AX#=a)
z*hxaau4fe)@iwQBv?7oo_7&0v%I7U}#f^G9QYa%-rEID!;ySUHLHj$LA*G-gu+5r=
zZ+;W1d1N{1V2?e<q*KgkCc}0Klu#wzeK4`l8>J*mGlMhAJ4D50+U=VB!2<_(OwD;M
z<COC6kKddh?63Zcy#mmJ2vg$^;T6<tvq53cz8}U&XNjMCop|j(Db%zwE<ywd6Bq<u
z(~B6~FZ2kzEOaG^;F^0!4!r<r#L_AOjhiPp#A2N&62j<W0!7e(K>f^*dnhYbj=5<N
zcrfi708zNbXa~kbRkr-pyO`t1)aM?0@XdZLJoKhJKY4Ix-|6&3Dz$It!qkyU)UJ76
z^Gct3`JN+Z&#mU-vx^@&Hp_mxbflD>zW?DJdsoV1uiCo@?SK}(v7g(<y}}(9zA*q1
z?PL^5z`vrTi5mnfbx=MY`K)##pM=10QiFzf*1|3!G@=DO0`dyN?2hRP7{{@P2FpDe
z<GLt_lzXTFJqPGvB@kMM5;fM***03r0ad;hzA&R|7RYDi<W|gSLIYLlPyfavYV$`c
zGp|nFx)xQDomKi273iuJSO)o`e)bdX;NEg<@3C+_6!19QzK-dXP08s7Qi}YPnR{k-
zj2{mx?4GW1r;|V=kCzOe=#lNTM(ktkL-#Vp9t+P7hr%u&e8}LnDJ~lopn0pp+ne^e
zQBl{jK=d||(|&`=I@4ta7{p|nu4)@_G8{O9^ys=3Wl_9^ZxA435Th5k27=YTrnvnY
zVAy+>1fbYUt9w?Pll{FyMW|GY`Jzn=mva`#PBs!6JjiV&0UXx}A4MS)l1U_k&`;!M
zNZ&XM5T#m~9E35=aXn%OrE!CK@oC+(oBr_w`&=?JOTAD2!Zul*{f6rH+kJ=ZYUIG~
zvwL^<_!{s@Ls``mRBJI!+g<Fjv#Wm_?sMqr?xe|>-D~PvI-XiR8mgv6{d%eX&LJ~w
zNEsLV=KkYLyMJ}>;BrYdlT{ty>abI3oZGlpzxr#jfCIEPWeH*}p;Q2whyLCRnLmR*
z(f2olgltEdVkY6i_A^mE$zZ<Qfk9o66jhOcSeb$%naYN-r3WxQs;aFb!$w+-G=c=a
zO1VJa=0yz4k&AD1uHL!?nRWY;B4r6tLAdwA?YH8V)>e<~**QNmHqzHy$PH)g&&9$?
zSFADuU?=Oioi-D1C`Rm@&U8>Kz_A$(+1>L+jSV(XV`aiiNbm3+^vBXF%RPSW4>Bj~
zImvS{UA3z=f44Ufamb#8CaID)s3@Ui)t&pC%ayl#$7TSwZv}_v^Bcal&lIQ1jcR79
zTl2{B!jjfVrM<R}+I66G#om|e3)*-02c1x6Z>p$1rX}K{nhlz$X=sW&SF@?|ou2Ut
zN54k{P$~ZSCcz>5r|zWsXrk#xM9Z{bXr4NsnJ|rf=WDRr8^V*#&@F)No#6Zg#G;Y{
zFXY`t1U;5H&%>M%LWTBgq?D3;0obIK2SG!r!~y12slxI63!#?ng+(fK1ekDg_2B-|
z;lAEP%tU&?)^!3+$mm0HEGrLy9LO)XgH}EO<>Wkpo`QwbYzVB~#7MZp5ztP5xb|8h
zQYbiF9~y)h@O-|^#5-(;xMyK#zfBxgUT^kKYk`+7JCeu79nqwQC|k5?8k3_5xle&{
zJa-_Qn{u<b8Jk|T?TMJ0uYcjZw`499pg}uCEjT19hKqeov#DWaW^SZUbq%=1l;}P_
z7KtCd&nd=KUqp2P6a&L9-lwUGD{Sr<b0>Ey&SFF}oNhV1JDlhWFE-{)W&_sIAfV+>
z(3?y=LXsrO=x;tOyt8SRP~R9tfI{A=2X&DYr6fr0*+msx=L(lyf)pUIffDmT)Z$<F
z=0ZWnQheja^~;(sxPpQp)TWp)H#0d7J<P@;ZVFcqv%LnG#w&nCYhG9K!5PsXO4WEq
z3pNd>l2**)Wb_#?g@8$jS~&y>{q1CS>duIvsEdotFf#7>-qA=k5={V&(rf^L#e&bT
zsBD(a$;efiBP|<D)Ps@GVrkx$)eZI<6<HZ*q8M8AHTC{SQQt$-l*#_w4D&M8)}1)2
zxMU!{vZOvRJggDSA^xFZ0zNQAXCszQ8T!>9PQEFfL8jBmz9_&XUHKR3ZrI3^!rE`_
zi#k!#>wp6ht6C}o77#_i0<vsTpNBhPe8|tEE(KJ+eToM>Am@=oOLJ4>2mw+NzfBiT
zvXewkEAW{Tw*~&2xCkdL2Mu82IKfqd2Wkwo24yXCw>`!LGdS+6sch$iZx)eUZHD+r
zNMmP%K%9_A)%ypACFvEPA5mnd&+B!9uA(N{5@`x9uZu3#)Qoao?0(ZZ!@Yjm<u$+Y
zCB%$Y;cqj)`quaT9@p9jz22e4-8;t$R1y?5{l>6TzIvOya<2n|3i?igz7K-FOTx*f
zEstPAm}(0;RnDR0h`~_J1MiSwaqxvBwtoHrKMR0{Fc%KYhGb!W4z{IafwHP1EXhkm
zTVM<1!r>+SFeC&p@X|VJs4yC^`30#hv=oC8eMvMy^h_G@CinJ(`3|AQ%kJHg1!sUt
zsEXmO2Y`WJJtN7^NCb5bXSaQ*Smg1zzk2JDe5#EYl=20?e`(L#SuG4<1-K!8oXA5Y
z^y!)`J^OA+))-Qvy&suj!<`s>69Qn;U*2=!o_qcr9{?ZlW9oqklh=MI{|0FHQsGq7
zyvPJO1PjoKSi4XXQLs#qS8YIBWjTuu1cr<s);h#LX)j>t;-xbjukwQ_FBM*L&)r8J
z8k;{KE*A?_Eb5?Eq~Q`0mv+1)4RD1Ak;wAe*q}v23Z6j2Au_zQ0LGmvo&kW_y_;*=
zc(%0$87dJv6!c>a4y_U>$7SRXa?~q4V3R)odnz;V?20Ol{oKzfqHeeYl8uRlLN+HG
zhN`+t8(nK5L_)G$2z$DsePg$)YBtMD64~IX%$n6Y5VZAlMW2|NHAf>dP?$_`S9H9C
zl|lHge&g!zs|?QxkN0`$&%dvTh;;!>qmf`x=2$nN8PNjGMfqFbk@lSYwMq>prBkKg
z%>|<Njqj*`c;}spM|N(<VDhl*p9RleBiz^Y7J{(i4?2*m-hL90uh4;E65BB|zzo~*
zHja$P05R}20?f;Gr#T`{2-|CfSH1MoJ$JvhXXv(4;O=695Vi)~qZPMOWucHqn*f<*
zU=Fe+_uv^<khGQo^*J|4>bX<3f?zA80!zVJN?W_zH6|_-U>$^ka}UO!-XV+%)f??N
zjF-R%T?DfQSAFWg0={idRDqvKh%r#$mppy9MQ#ftEK+P^qMXmM1I40VaPj_*eE8^L
zPXs`(ZnKT#ZL0LGJ$tP1N_P3y^0^Iv7+_9!k^v<<SFiUfx@JeVQwSeB<WX%LVRMK-
zHXZWop8yk8I}{Ht0-WS|F*|&i9qj3Wt=Ynd`5_P<S^PsLe&AO-Dk*xI*GDCbZ=WA%
zzz0iCD;u)xSrPob3;bOb&NbbKrcv~*Kq)gp%B0${bd<~%;mN2g5}=Gs3g{^!DPAsz
z-V)k~6%1hV<~fd>QlG@CaI9zWe0K2mg@UQYu2aozc&MeL*P}th$QRq}-lm|0MW_AV
z2DEld_W;GA)^q}}769iNxBsbkMk1_QK|vK+fHQDz&xX&-`$Ovep6vcP@K7iHtKJd4
zBOH(vGpZ*qFt=wUdC3_ETYv}c8)}LlH*~_InLY5<58i$|MJ`A(Lj?a=MTo^W{N@KF
z+3<Tw!O+zc)WoYl^>`*TkI8Nh`Lr<~w6sY%(0D<3Nz*LCT}U8R$L{3>NkpnHAT&b3
zT~MeSq#Yq4yW}}#j%;A&IqOiFrvRz5s!aI3j|t<WeYIRB7D2GOz~(i}nNZyhFlDkZ
zm>+;DO-Y=5od~F{Ry=!XM?eA9K!X!yjZ;cp{HVuy6oBQ`|9SPFp!ZDEBFS=~^wr=K
z3wyO{{$Nfvy)bjLB8e!pg`s!`@axCZhvLUpyU|X8qN~BmV9(WmBMcKhp&L+qEK>{C
z{zvEyC~dfl_c&A}>f)bM+=o0{j5GP_Utj%eCY$T4vK_7lB8VI?f9)sYY4$}l9W4lt
zHq9{fu#R}2sF{ER&LM6DJcjsR6bnn}kl_UEMX-si{G>uC9D<r?vj{_kA3}cES^qps
zc{sUadU&v}me0haUN?ZB25XRywtC+>c{L0OFNjbAKp_tiv)y85xfOynRUeED$-1WU
zvdI)182<jz4b!tRU+deEMdTgm3dOs#GV=z)$f6b9qXa;^?7Use>~K%t9UQZJ>S34P
zpNjWp%uu&}^k6Ex>z*!m3bCOp8Z=(^x`676*RrY<Ks%W($M158(Lf)&t*&_b(|e9g
zq+(i7eJQ796|`g`<`;z~I>nq`s5KBy28L||*xS0!14dqf?p=b!S^Y|!lu6`R+#K-C
z=_X6KRE~}GR<r47$Z5wIWtpV1-8x7W;~Fc$jlyj6_6=^-VTdUsZs*HB#F#MOL^q<X
zmFIr%;3-iW>X(`BFzq_Cqa+#JvCHX|65U3%dgP4k*>SWy+gr73?uf{ml~llObNcmT
zdjnqgpL`KUjDxu-Cde-7Wsfk~zq~)>Uz<P5R;G(KPxCIn?wd~qdXmF?5xW$x{e(Ts
zz5sA=q&ZkZj>LA8`k{XdsisvxgS=7TOnr4A3=>ER(PE=vhO>(3b`vOs&!Rpd9@lYK
zl_Afw^=y{+Vba-$`i}pyJFgZ8HTdyzI^5ljLTgWc#*bc+Q?F{e^tgSOetdb)(j^De
zauKI1Rfz|Cg6Oo1jh~B0_fNT`Ai(II9lbdVUQY@Kgf};XVMKCH@Xf|FmSM6ofoQCQ
zos<MclQjhohKQMZ4#0ba6Vxi$3pkpdQ6)H<bN@MuAqCH~n0IGV7XmPnYB8UR`@JB}
zB%36Bx}!{udN)Hjdo!7kIPb|KS)H3Nu2#W!-9DT|#i{GLGV&(oaYs;l{h1VO?NwoU
zW8*rBdG=GXE1vF-ys(y`iJHsJ7lo2AD)cq0E?6K5qN4zER3yr@xavT3kX#Uj5!KG+
z3ww(xl`2tO)-8D;^I-)xu-|oP#-?(haYIvc9k35r5lqiVZh3T;%g3+Wa-Ru1r_X<r
zgw-KU>}U4g$@k<Xz+0v6{+?n`X2q5K^rMG6(z0)l>hT2=kzaE&*66d#!`%hRHt_YX
zXf!?xkzp?MelnqXZCJc0{;sehe5vUiLB8*SG@%M-P}G1a%4RPF3ef9$G_(kUaUM2<
z%MzM;dH6s{D1U1GBw)~fv`<(FK)-bvI?r$&GlYvTeqr-@ugO2(j{zlcE*~ouM#A}g
z&#=!#tcf@>#1XV9v7HxicR0?5JN=D>?;u>{Oc+EOOBzcdOn^{udQ)ZruEuoC*O3AH
zN?NyhT#8ps#U>^w&7x}H6!SR`OxWUTvDTaF>h97M)l>pH^^d6R=Lj4?&30*#1-tFt
zqnVQ7>uvTz|BvM2Ov-w1>;CM!+f@(5BBFMB$3cx@&@)|+g_B*NuV{<9O4)Q4PR}aH
zitOcAdS3xlQmhoyb!q|-&^aH2A00=R@YSY$F^mVPRlqRvq;~MHg1Ra0;=JWZ+bYdn
zY8$j6Hz1vadFV$=lI4A?bPX8T_P#HE5#`K%aK#$(ZfZ)iE`G7=ex^$R)Nb7$rVR)d
zTH4i|>hCQTGpV58<q*c%xCILlODUYR)C!41+x0j_>JJ1jN%OcjQXwSdejp^^f1%U#
z1f#^01>_jgUmx9&Ja4#NLY!!mM)F9<$ft+XX}jH5UwH6R%2~^FB_y9Q(Z~jL=CCn)
z^>ij4&P80ht;du@jcj)+jCfK%zTfXV_aqv^Q1^sySI$29n%-J}yp(lC(tU|YIKr~N
zfYeuIiudkV!tHYFJs;>%OQEh^YBSk@MS-4@kADnye_42W(+iD8gSo_#Xawqm)$g=>
z7B?+E7Eol*Ek4)Rwo{`rQaf<!IEVI9Ztrih6oUdiJ%g3ft{%6JxIajG6TPWjCxoNz
z?%RnMXbv}jeFW73Rw=jRxGS`bK6|*5T-^Cw`<{kjmyMA<Ip2n8tGOlS2>KH)MRTi&
zr@X%ToZZMJ23-^WuAy?qFHMPt9tqf4oF%R^^V$=sd9O#(%W`1F>mGZs>{T=y^Cf!S
zDxxb-x-h1Su1MXN{l(!(IM<z4eymb5D+*!Q{d+)nhp>qL<D)giR36BZxEtLHKsO-m
zfF?Bc0^y(B@Pm%fR_gsmfTgP9DnVO-pj`mFcT9~8RZ7`Zw9C2ZT7=VdFb6qJ3x#eA
zt15BRMDZxq;>i;6T&a-fHTrfVPvFMjl&H_da6H##s$Ja!$Lez;TSsloh^gJqHoa{A
z{e$&Ik)65W<G>-Y-W`mUG%+4d_CEWizKU*&&oZyw=~iQXL?U;jvB*DthWSm`_D==z
z+K;Xcv9Ewem_8St`i+V4ehH~|+x*l7LW5Ke<jWHFTmV)K!h%YQ!fQ8NFvXLo8HxRb
z==W~BK(Ubj7rX+{zQaB;R4eDRk+9EWpLNV;(*~+G%+hpj>N!a}VW<^%dM)wWMqX^R
zfIn2diBp71LdkaYCcC<OQ=#PFmq%;qaMBC-$6XFc>yo59`g`1VO>?P!fNEW(nMmZp
zfY@IbU3blT#q){2cvrkX@yrj3x$Z_R7z?R-a71H|xm^yoU26ElZbbT~qtJ}lmQ=Uv
zzkfv;TBL4{wyw{Bo_7i#+0yko^!zj=ucPb3u+Iim0}fUL{Coj&i1eKbB^}LgdulF*
zu=Qpq)O(RDIcvBfxZz6Pe|qb=TTUE0xM$b!P_<mhbp`CEa3{Ny`cHY}_k5NC(rN|!
zR<vVz)nVRtYLPm~OVHHH9YAv=H_hz<1#qaXAXMM9u;`6I>So5GuV0EaX3{-{O!lA@
z?yjU%$&AM1bN(Kt>OJ1Rpx^LFhMw`G8ZBw|^ti{Z5ARdP&<NoV=^;Jpf3D?Fo_-p5
zvbT4_7wj*b)nnmw4*+V><(%-PQQT6Tv0&QKFyfMDFL6{ix{rjlp<Xqql|1^P<BlX)
z3Z6z`M~dKSKlO_s?+`G>Aa^H_a)=##CV>upN=V>9+vx|)H?kWF-GMSw3)GDZz^knV
zD@_j*NDJH!)JpnUFC{A=q7`qGv%4|g&QCJmb0T!+^Ga_5)Z|4+wG~xM{#>f3K4*%r
zy1_n+pK(3=Db*QE2J%+?Z0yP>OKH{P!i{dr%kccLqtZVkPPw0~Xt$pi_yrYav=cNy
z*&x2Cl+goGx4zUCKU23uEqEq&*Bxu8jvrmxH8VXv+FQ+2S;z$eyr13g=m;Q!YHl{6
zzVP;wsD+YRlTwE^)tk?^&_`D0VP*MS#37u%6QYv^ZrcJbvzApxp4a~Hje%s&=M_EK
zFrS2BVyK+RR=U$3U8(d2GZ#=XGfMrb^y48>bL9O-wC+@N?z;^C(Z+bT%awH*<=&or
zOq`Gd^*}P2X5ywV3&5A@@7lFX_ry;FoC2DHdhfwp*yGNqO5Uzcnu^imwjH$vqmki_
z0k3ng#Fxp@`cgWS^5#xWW<&Kvv?l+^?2819C!Per6KngoJ}#Hwi}>r{%TZx}b5Dma
z3g?T3s}O3cz`YS$0QeAB2sYr2Oq?lumv*43tiPAiWX_JG?C54D_yX+U#ugFx&&mV}
z(beat_rOpv_0qr#Q#l#ey1T^}psH52DarwhoP(a{A!n#;zWfoD$cOl#0QxmSzX19~
z`kOTx7(-eJXl#{g8*pyaMY07Yq`N{6)6j(gr5K%TnFMs0VpfoXyiTDFjqq_7OV-q@
z8xJh+INRj|-nsU$5qM%Xb?L;NrI4M8&R#9DRPOS5^b^PLKH3CCynHl~I`V*5ea)eJ
zC-<supS@(TsocR?+%I<Vni3D<eiz|XPd87Z<Sx5_WFBIMG>GA$NhE8^Zs2eRX1^|y
zQ?{lTz;#qQXjHA(F8Ctvq}CWF96h{e_t@w_z1#zZ?DBhcMOb7z$RlWc26J2-o|4*H
ziKlDFG920`j~wc_Wgefy5L=1~UPIv!{xF^p<8v1ab`T@UZ>Tm;c--*0Y@oM=0HBo4
zA+}k&k!`xCcOBi3{VV%7Mzbszjq!FgmwPGFHO0P~idS>M+!BE?my3gN{|Bln#t(CQ
z$9kPkX*(Qnr;|XpV+S3H2Nx$}?5*uSbq(2CAZ{UWF9RS~PwqX;G0iD458BqT+Y+=1
zt&b=jYicjLvkDOm2+F%TkV%38dTN@LfEAZeLAKhpdSuXZYGP=hTFxgzLAMjwZ=Kb*
zKuXJ$@&5<?H*{cvR<K(XBl6(_Z4;yH*tfxf?*UBn&L6pNsLxTXXsT^~ag#E8W6_;X
z7xiUEie9f#eInAkkn(u_(}_usJgF0;cH8WMw8ONSCfZqlutf=8$Jn(SxEp&Qw==zW
zZ+g1hul&f6JNAYB2sD`x=9@D~7?C~@k8%5gS`so$6ciQVg1Tv63Xre1xgTtlirI7`
z>i5`8VS-Ii!v>EsI<YY~!UzsJ)|$kLj6H=B++4%Pv||jO0KOrROy?!$0Vd;9EP3%{
zCly<E-f7e)dnYRSaCgKJblQ<*bj5RdF$4o_KKVAcYEMee-Q35y@+a&p8qj*iDuv-#
zI1@(CqpH|!`M17J>Lr`Ngi-kV?*U_+74B)8m>830s3g$FQ!;=X6?6>HlMBkNun#<K
zfTcjm^du|?`jIe#vTYTLsTXd#4B$s|YIL|K-yIM70W<~5!(2rMsjyrVF$79l#(m!=
zMKE?^Ww_QbXa|$pN{rtb86E1b#?x^<Xk(>%qIyqJ+vC%F;(=H|?^3(=VhqbwpN$VC
zhTr(Iyseh)O2{J)Pq5?(88lU88_t(&JDI)Y_H>uK0#WpPW766%f$bW0UuLXUIXdPG
zX6uPa578=c?LXM#;^VMKyPJ#Xw-slo&j|8?>dJlSYNV*(B2~RacpnZmscKtq$oNc8
z3=LMxRCNbJtHSUgtKvd3Ndq>PA17%6{9|biH?hc4H@$zEIYq0b2MabsBuWd^r^lAk
znOZNZcJP5i4X;-T)<Ov{svF`-n*0#uMng=)Ve8I(F6?cm0!pSf8q(^$uFIEUT&)V=
zu3cssp#GvOYakuur9KG%>s~7vF0WI{L^3o5Yj)K}J(wAzSV?>%bY@w2UDMUTNR_e=
z&yV&vUdp5LND)brh_O}xGz?AX7q(n-fj1gUC&^Xwps{kpQiAayZ0+oefM6(PXE}#<
z4;|RKFgXV2lS{<>9>iD6Y?)`NT(6)=ZRmb0VzP{NFIZ)PEEotRa`OcCI+IVVu>2gP
zm3ujigAR$IKr-t^6y>mcF;To(Dlt;iZb{Eo%&u2QRNd&YA^VT?Ioipr>EGF7*ZX%m
z>*`>=tSyQG_B()a-?noR;gZ8YwuR_M{Fpj1#G{^s&6mvG6-9~5CJy!R)L%~Y?a;)&
zk~{zCgl(=LvzZaSug!xP`|rXI;l!s45bI7pi!lTV9a6wENpVRqx#sem3t2v&Q@CLP
zY&|?L!7;oO%_s~;ioH-*3m3L*S*MAtO&y8?tQ`z)PQ?xl)qkGL&tx2!=Sqb&bs&`~
z8i50&8SL1l)rng1nte0%KT>bZLH^A978eiKks+uauLG7YJuuu8FP?sLD)3Z5FF($S
zBaP-bakO~f&cU2Fe<FtlJ}ZVNnyd*Q|C9^$LG)e|!WbhA94(g@(auh?g>Djsog^;@
z5FCi26Kj$JFaZ^7s4*J^QPt<Ji#+GMsNT2zyI%Zj2q1JHJ_rFG??>NQrpK#ezMDe<
zok$Z#VS9u>JXFX(*N=1-b0M{0#VyJ0C;$W;#+3euj|_Cn-eIHv_IU1GBU;Pe)t3^L
zh7DyUHB<|>Lw;|0pWQy44LQ4PzP+Vx6nzIpiuq$vQJzaiysl6{me694ROp_>h!k9m
z7yo9+*@%YwlOv|L^y;YJEvtrqfyemH>~W8n4RyQo)9I1??tv6DW9D~sg!$&Zx4Zqm
z#fZDRa@6Hiy&i|t<bJ6PyK)?M<(zO!^F)!57>;BCP~FW`?EQ(_5oYF*ewz6A0%j%g
zFX0OK_X35m*3J@zB?LCAe$v3WWKrL9`j(@I_bwGeJ;hwE7)<fDoi=O*5#I95NWd&#
zwB0x7HxsG0O#w;Ui5c;zmu-GUN8%Ic`>?8uth-T}^8ozxBkYsAj+fIpV{gbT_3w`v
zwJaRDEf99w)s#~jfT1p=d))1{&hXjh;Xb`Q-V^RKyL$ObF=_@gI;~`PWk-9Q7|cMn
zWj|Q*GFQedO?e}Q2044fknEzXr2T=z=gNj-HEW?GQlBjw4NrU|=C4}IR5KT%RhHfi
ziA$jSapBud6OBV`i3;oOcz|GYcs7t78@=e-d7jWyL<lV*9DwXK8q0NEJqfMpS34Me
z|Mu$y4YS}paeko-n}g4}Mp0nC=t7vY=lemZ6t-j8w`Xy_IW^d*l#+>n*I^fqv*Y9y
zI%5;hwf6XAOJ@kz;o&<Oe9lbjcDCF_8<Y2IL9F2R5PpP(_pC@-|MgbPrPY?~Mt#9m
zSJ+Ux+i%~^NP*7E!E?>N%DIG5&7it!j|A1y3{r3<sZGy>T|JLoXVuiA{fJ#`6kWwv
zj3UpO31KHiRuKET{En;lm}AF$&H=YS-5(FdGm>a7^~DguVb2IAq@h1i@bMPxxq#jw
zQ<!F&+38pq5lnE<1R#uY4NZb;hKGlDMx2N7TNxQN1^k8$CK80Eyb4>CSi#=Z=A}BC
z@pZyV=^KFMUH1(<W4Or|tTZv+b^PeTeTxgTI~skJGV1dYKe6Z*c9O=stTsB(6m>4B
z4^fzt+0wO5Hjp9X`iR2wrsDEZaDFL$MjW-SvbwVHH4XNR*AerlYG)7Ub-Nx&+J}0E
zDpX$fL}X2NF7-vDJ|mdThh;q+bvYffGptCqaIN?3p`5M{oE}lFm1d+kEZcqdV6hT5
zbt9mtI{PB>Hbh6&{Y@yRgz^$|2a!lAimP`ICP0)B_W$sieiIOdsJgO!wSChW%?5=6
zGVe&n3YaNVyCS-tFk#vFo*4%ASeQm!W#@Y=jFb^v5eGxuN1<&8qqG-MU<JErKMXf_
zKs@jDaLuDa7hpJR9gHRQ{4k6n!cA?idcg%Dm0Fu^gRgC*LfBeCS7R@}B?d50wEb8i
zD_CLW#b5^yvaa7bA-TD8f?S)>XD8TG>;azpdczNvUvzH-f6W-G0fS`Eeh;zs^;2<p
z=yCKvJ&Apuf<i)A_%vE}gicQ~T28RnIe{JG3Wez&iiB?bFhqU$4nc@V@eP4gQBi~F
z48%iV*Qwz#YP+Ff3NIpb#aE!wipIbW%z%n<K<!Mos|g*c!I#Xd>u;albMjYz@PA_<
z51s1RV+sA$s_)qg2;&($_N`O*e-rR3ZdDk<oXH;SF&4t;%|X<+?Yk$jW~AD#j$&)q
zX2n1m7wxp?p}R6FVrQV4JRfr-FjiHch2Id?(S>#+tF&EhUjse;SuSe+Z>;z8#&^EW
z!{YqR^u*X;gT_!|5j%F_#@<tE$KG-s-puSsvn`y2YpOM>MoY8-Y;e<#c1UjtUgx_p
zSx%OU9GNt`_4V&(wj<34KN@P-Ki})TW&Y$t!z{LPxH&#i8BBRj9y+pfe7?)~K?%JF
zhSx1Q%5pd<pFiJz*CQ&rGwFHtD-y=>_l(|dXTdjB`)>WM(Y;|i`-dZ^67li*SI-X~
zUhV6-w6W*CqRZySxPz@_dL(QfVe&WX2Qdc9V-)Njj%MaB3wzL8Y#WE=&7wtx4<PWq
zY)F`Q>H6kuk2U7^+!G-h^FwF$!rbUkZ!wji?K04ry+__-fQ~6bmw>g=03{!Ng<%uu
zs7_5ikV2jzcGPWi0GzfHlLp9h1*l|!MV$Cv_wKG)2j&QAUzo0p7ed7z6%AX^Wiv&F
zS_Sr2K)>k8?3v9`?sC}O8<{A*65U~?u6AoS(mZO+#{4Sv+KCr{%3(lFdiM2zOxo%Q
zXWi)qct0zx&wUdgV8V^JW<%zuK)(&lZ&ZY1!YkS3W+a2w>@G}KGhw_Jf`1U-ci(Bz
zW>S|BMen0%^`yA(yn!>A^*V27rp;#F3VnzF!K{uV=$fLRQJomkfj-!5j+24|8^Co!
z`>~sSfo|H+0Qoa~11aHn`y1qo+wb9L{t6O|i5tJdyhzXSGk(Yahs#3_*mGF)?ppQX
zhwiy>ZsWuXBBi<J^eFbOs~)QzD-Mt6U22$ekV%FPF_lID&|Z*M)0USdm%25sLZ2zr
zz>X>y`C1@aBw*=64Gk>h2)IO&)RGU^xX~o|A^_Wos+l!A*3oX>DQaaes8=e!pZ<jt
zIt!-=;nDz<DC!_k1O|vvHq+?PbYpv+tNCu}y}u0qDdklap|x7V1{3mof0-GwgvyYP
zBv#fxE_-N4B@9yj!%xGqW<xby_Tpm9bm&*VdiATa&F50tU+VqX-;GI{D=9ieT|%`|
z`gPPwA<E*%(9<X?T^<cHNM5wX*^eBSVbFnI%W!sBqATyk(jP#y9lcJ(%=jKA&$<zq
zE2i>WXi&ws7|Z*x?+5vHeEcCG+K)Az+^-*5>`lv1ptfg^s+i^IcyyFY(bFMgVhJG%
zur|x6cVUVai)aIp8y7U6=UfPbgMi>xmoLrE4qloa3eTA8O*XhfLlSt__TgKcp;!y9
zyyL|AzF04|XxqM4Qn<4#6<qw*xZibqw>-tLdCT*iona!NNz1CBm)F`XZ@cFQu)b}V
z7OZ`qlQ7%h!948FYtS1#C%miaL=^$uyrP16t4+u%OEHtR6&WlNAS*D9c5iWS<{uv3
ze?;1xzHu%5xq@+#PNqUDUvyCjJ0>C0n%yxzRxA`3RZ9l}YXKZZ85#Nl#vsa|S~KYq
zv4+RO)Lu<WgFty2dqlSPDGOPemzVmP-8r+{eb<@82Z2<6;6wL*pm$fTipe@CfE~dD
z8mq59ef4v)O=Z>7g)7qevlwSp#m612iz#8BjeTB?D%EH@DzT@YM7x;w(94)+tCVK}
zxu|yeUm%;{ims*>;;&LZ`~fp1qJhGc|6H<ZpmP#*PGg30MR;4&6^)>?6G|wKQ4|AV
zCkQ2pstxrBp69*Ns}z~JmnhfZduez!HzZ88*U1;3cVY8I)`a*5g!W)h@%YYsq10zU
z{(bE@F3!!DCGQkw^ooN(TH5)AQ>1LL4YCyS)>b><0RgpBB5*^Via>1;?OJ^=-&P$V
z&xxo_OZOhX{XoiY!`KVZ67-u*Cw%*c!lszXj85@E^ZvxY$4W4C=m<xHUN(mzU^TG2
zR#RnD#txyfcSHO=R4eW%lpT(l#_49bJ8e^8V6elF>{UV+8a?WNdlJ&y88=5WpG~pR
zz`6Q{w}{o=?(l9~(1t?2;<OFzhtG`z8u?4e{wd*JjK4hA^!CIsS~H3v4M|vDLcT(*
zA=oyIT*2xR0!KE7^tX)Ajhh(JL^GYmE(WlG+&FDrW|<!V4EWuX#}DkB>+db5y8`G)
z$Id5%1LQHb&=(rBpjtK$cOdVZgHoKvd}9dgAJIX*P-+cm&ts|@TdnViGpWZ86Ib-T
z2sA~wA7UaEF8{SlcOJRhtrqru8ulGgb=TNvd-Ko0@GDaH(uOJ!^r>mL;T>FF(3mqY
zbnHo|!-37*c*dglCLXHX7epw9rkCmWW2QXZh`7{Hsyl(fi^&f_&qTG`hOOLGr8x)9
zb55-RTsOwbZhvoe*$)8n9KxpSW(AR(EC8=pW21Q#x)PPlsEySJ5I}A2Fwq_fVQ*oY
z1MMKSTB6%jQNd#Dk@6Vk-1OOLJ?N1!Zez{L2Eq4Bn3Z)AO3?6&s<4jOu*2{)B|{us
zfte%L6JQ+VsfD(JeBPsV{7;ewogsvn19_fx%@<x0(#YJoZolpHiNl8~`G+S4Q4oog
zspFoE8P`gL6$llAq0Q0==T=)5+RVo^KR1YE6gwADxC<R7v3LQs9Yk~ky(OU=8u#g@
zOB$b0dNg~k&|e4dt?eNKBd<(e>~ca;74^~n{^)!bTRGUnIelVWF;qEX5Bg%ic+p{Z
zww1Xz@z1fIjxvi*6B%a4Jer9)*q1UkErz~XV=NvSidP$sFMowfE7tZAaBQT$n)szJ
zn~8m0!^u#e3CzW`yEM@joH=#BjSXPp;3hh58|;C?OM$_{gm)3V0H1Gx&3zCy_cr0b
zedg>b-uP|B&fTz_sNzY~70t88FlHU8j7R2nORbZ9nS$A%=Udl&;U$);d(W&LJG5(Y
zWT4!WO$B@@Y&}T@KdNxjpUtAnreWo}O{g2`WLurvjj)_c<o3we^67WT1&IfT7l?(h
z7q|{cT?m!J_XP&>HZzjfwVs{{Z~m5t-+p*D;tI#+#=_z5QI}p+5D=<TDHwoCpFPlp
zhU4I3G0`Kj12eC9m4UGz>r*gDF+6S*3Llc0mWT}Q%Y;I%h2})Y?kP+)jt}-HlexKx
zNE|-z2$~SEyV)rWc|kFdoQvM2M;1md)KuH}*oWT`es|aS04xj6xTI*schHb!qYzgS
zWKd7WSAf$E3VVeE&AkZ+Dz5b+#wo?!NfZ=!A^fmv&z-#`+T4p$T>@LgXb2XOi8En#
z$LMgaQpg7U=+(p+rViV>HQ)f_7sseMnY^|u<J&<{2#zcf#IzD`l*OEEyU`>V6eU`0
zz?1*a(=W-C-gNH3-C>&%Fl@Xn%@!ZAiHco~DWcCFWBORhr%oqi`_P%w!R&O+<#4$?
zCr+O=k&YpK)|ZbpckDd6FxefDjYc5Dd(gDhvE45JQbuywor)AmGUu?WBhi06So4OH
zle5voix~FHmP$_NBK%hjJs~g03_w9RBAmuN^vVGsnAnCx*P57I^795`Y}KvEx<V7r
z7A6gYrfD4WLQ+WmE(p&21Z)OGQ10|CtH<{3nV%iThBL7)k4q@9yb0=cph({L!-Wl^
zO9fb7#V-IH=CT@s)goEMi7hZ=7~4zZQ)*bF2_r}}Moh3?qjCe*2OD+vjf1BZ_k`()
zzw-faaH?VJvL`(NY3+VV72l(D-LWGZIXE{vJs6c{L~&+#sp1Pcpc1IDmL`(LOvsa%
zD(0~{tSxY7M)ipvyDd`{e|LT{?A|kg+n>7k4Gyte@9KN`oT!N?JBTlH?|MntdH48O
zV~>9IKTN|jI92jB>SM{c+mM`yH+(VGrb}IsLoMVlgiE0p0K41Yj{bmY;nGqojkv&;
z0OnTDiWn)!X4CXeY`?=!)3hLh@(W-p+7F}CS_EO0q&RO2+&U?WTg>Pz;BA3pBj7^>
zwOq^$BCRX)wm-N9P@4<`{RxCP?IF6{5b$;@ZVkwLOoQZPWGuF1vgmtNWZy$`s5b5H
z?M7B6hYo6rSHpIHM<-3DMA7Ezce<USuohGtJ-4ppZ5kS<kz}d5ZR!?XbnmavxM7e7
z-UB$-P~2~QTg18Z_GZ8r^7uzr=KapY6JGZ~(&nYoRa>VS{susr7pyhQ1~Lnp++yN=
zv{A@?Tr8=!$n|z)D4mQ(XueOeG?w}Rp{O0J2hp(v&<c|1p+JG{TYp#+0TeUwJdI@W
zKTbU$H*144s#@vwrtD05hZ5<jB&4()2*#X}<`~usYN^oWnamYmKTzxP`{KQ@cSUc~
z7t>dd>XQ$oif)^Id2~37zlk9w8i`20OX`*#Vbv8K*7Is^X?$U^ekd5ZT&jk{>%F@U
zN`7y0m;wS($X@#)`%Cr>JpF#*eTXoDc{;H{Fam#c6l`?`4|Rswu(1(FX3;wVY)8jD
z@`hkwIKbcv%yqSG?C|A;Y&QQZ7ZO_8#N__|eM`G=V+*7Co=mQW8R=+egChz!2M1{6
zn}o=6LP(_WaSgyDDR*d$`=++<p*WI0Oti}s1wbAc(1&9GvhH+Dyy5*})@LY&Xr}f(
zK0nyS(mtm<)ZP7f8k_b?O7CP()o@m|1-(0lQP#Q1O7DPOzvOXOda{o=Y^MMCMa4eT
zXPVwFkCD&p%DR2Qw9RGKO%M9Iecrg+5yF%P_U*tXO(Cb`_1N!&BjWV$!<>x)Tyifm
zuS3oK5xAsoFUm6&R2X)n3V`OWI6i}K5s>VG%qk44DpAS`z><Oj3g!dU;I(}G!2a1C
z)Y=pd3VYdJ@+t~;jKPMzAXJA`!&cua<W$9E5~m&a&ln$rKjEY!ppt8@<!bn)L&H#K
zU!HF?ks;sD7QEO`R}YWv)Ly|tudPo=h8Z+b@xtHaz-;!&NmpntnedqXNB!Qt>KpaA
z*RF}o*6d9l*JVsp`MW;iO4yN6vT(@#cDvhY*9~t#?tfFa@vE<`=OUv)zui>R-RKsT
zY5`AJvU~LWrO8JB$)r>f9RYXH^!l{gOwgui_*qnEzC!zRAf3lQ)KgFum*J~-3p34W
zgyw9N&s0-Y1?VG&si`<g%`8z)MR*uRi7VVU4-fVfy5j*atlDn2d($_Qrc<f|l?9==
zU)d&nAY>;NLcY?DcdYZ<r%|j<G0|sD?`~@?tZw%9Vj@Liu7qPq_4kM3V`Jj=eY?~)
zW;eD^@S>Tp)3}Q%l#pARdda}|&2lWL{Nvx+uJ6m0Xiilup>`3*HuXco0A}ORWC2sT
z0T0Xd7yg$|aCU6oKwr5hhskD#fxmMUEd-rNg&vsp#NgpQ59HO&P3^FeLSu-vCzy$9
z0HD-AI<#6Y%<ex4?=@MQ5p7GuyH2}*KORkw`LO-A=kv*{{}PQSyAzeLwzkgV`u(?@
zf8@?xhioiA{IY=m*595w;ugiRLVY}6oU~7hk6wLCX}CLndIht)+Jl_unEhstf#(IG
zj7}!x@JM^8d<~NX2oAkSZ8M&ThiJZ_zzS_MZt;ou*R~gA8m{9g?*Eq?JH45tp@$2h
zZne<kG=`R)?aIGBuv9DPeN{)_=~rYOnMly=dgtxQpmV%r=LLUzxG?Il@q6U+R=CF#
z!bh##-Ij-cW_ua5n|w6A6Rmgf(Ujab;GuO%Mj>9+73_gxbqG-#44#X2h-)9Bd-^2r
zo`(6v#&S2giuVe^k+-*%!{ytr;nnyfhnIFXF@W3XPbXs$%(9<gCn&z+(J8z&kKC<v
zk9$5Y^dK5cFHAA_;*fsO5r1dOW@&yij=gT;0`V(BUuOczYA~qh!@;D}Y4d1-%50%h
zh{Su*2EoL5uw;*VKtxUY5_RRqeAb9XX4K=s^p@HmUocn?qt<KVGslnnV_iYV$N-8P
zrs7Bs`h&5q?!I_P_c>FB-yt*OyrXV(o4)z>NX6kUZMaX%$QiFm<;h=R=)R^|?*A#i
z4l@;f!o&P8<oI+Cj0W2s#VbVz?Z2hNi_bVk-Ah2$wioh%s&vjEe(*1m;BjYovlHa(
z_^y%JR0tDCLLbAnhMeH=Y}p2|E&M@EiKkAaZbI8MBedn`oU*2#4x|Gz%P?_jMD-`I
z1B2b}4!tZSGaLS*7@#AA4SNK$nvHYSl2>y$5`7{02jWw&vKN3oxeS+_R-S#o7DUMt
z;JKvR^nV&S-&=Ocnq^DVu%#b{%r0QY#EGy7ZHod;hx7eiNJNvExIm~&`$~&ql=mG&
z7D?R*gpJeo6j=egE&w@0XCYR=#Q1Kq46tf(C|~F)6p)0*$~j0CLUS@M5HIW?jX?4`
z6(yUy+4j-V*&Evj3+!XlJ1aRm!&Zd;{xBwFpHR5C#j%CNLZuW?#YGnC4J4Otu*&mx
zJv-y54H?qT<BoD7<P?KWe=HI-Uh<%ZKB$}z4FM6UHxh7N{j2bHgN!W|Vgble{@PV>
z4Rq@h&Ns~<WT*=TWU3v|-vxu+GlAOxXJCxS)>~<P5JCeI(P>ic&9gx3o_m6)@V_xq
z=`ZFK6}ynremHpwk3gF#k&GBsXScAIP5Kc{3;BGh#-uEIB2e>|kU=LMJ6--t&9%B~
zHHH1EOTmN`JMy+4D~_;cxTKH$CQOkAYYnsnd-S=KPkma=EiT{hv1ejI!+zV5w^f;}
z;?5-@bZwaZKZt9v_ptD|@KE!C9&E<Sg3J)_VY)Gn9X=j%iKcBI_GeUg3z~u;5-<k-
zhA>?;Hjos;;33G71)C|`*3riTC$F4^FnO2kkSm@a22{A~S3dgir3W9l@7_D_xb^Jr
zopUpz!}Y#GPPo7>IC%Ke#^nj@h52d+K}hokr*v-btvYLiQwi1xaz<egWC@?pKsOI5
z3CF}A-r7vT5zoOb0@5%b0wWa3D4>^u@Ec?YGpNR~U4BFQx_7~&D8U0xJ?F2{-xdTD
z0?1s&<594LeM^{VFP=<=La5bw^scNH9ZKX94-M8(7eN&}=91jbu=p3)lT>eHjo_{^
z!)w!g#a)`Sk9l3;<JkB*na1Wos`_@|AL6``o^TaCE7LZkfPK4Gdpt@|lw80ebvP^h
zmZ^G**q*BvOsYV#jOgKF0i)&qCT>RY#(He_0LBB@J{A}?mHen7M&+;@5zW_RWV2WQ
z35W(vU^{Pm{`nM$FXi*p+{Y8A-1hmDjyvHI)Biv7DGc)X6Y+iQchC<`F%K*<RPiG6
zb38T8)cTf?ceihLYJ9MtqG)X5t5fGUkE1y_fIH^3Qdp!LVmt&nNIP7#0dglOv@$`+
z4gRhwk{tL$_SIM#e@(aC*N-nyZ6Q;HV#R_fS#<8|a_zD;qPAdA(oAgL^xcmQ>cMDG
z-nk&Me%pZFH<=%qSir0ni;aX!%RQ>o6^sRJ*mL)_JF@UyQT%;AsBJn?>SnSd63jxd
z>_+O2C67B%2EWLLuL2uLAk#&3M0p1CTw)T`l^f(Oq$Muy>FMbyrpTc1_8GpjfhF(Q
zW(CnL_x7;7N_$rc(wKJV*3cjm=k^wj`9sH=GY7`9h_pp)W##V+CDzqEE9YYKJ(!p-
zI3u;)8NbiV-ce@ek;TJLWpmhuLp*j;M@PH<ze>BZ-^Q-<e$Tz+<-SPVDK3|y#7z_z
zQOk&$@kknpBaPM>&AwQ^BT+++B}$<v&Dbs6*v^714@prVM$*PX(4u|m0;G+TAV69_
zq-aqj=zCifed!<2yd;3_{JwK9XCzx=2Mq=49`YWZdzSC}&bJ@-rQU`s9G{Auv;3JT
zJHwZf8?}Dgn-d>>i~S46Q5F8S>m>|f7}~l6STLZ-Fi4xk?D0{-SxEB|?g!7$>rnCt
zgAq|7<X8Ohnwp>Rr?m##;Ab{OMtd@zRE5cLBn65`gMnT*vCT#h2EJkIYNl@5b0WjK
zGT;P(;gkrun25SmSQunboe`78=>l?<uf=-(E*a;%n|jXg^_ngAUI}M;uZ((1784?e
zt<J!h8443)Q4zhDbK~2Qip6hpJ41G47de+h1ZJ<thJ(o>mGX52nfTojk!-+75;*b~
zz!60#Qp{N&1&v+-8?6Zjd>=Z2(|MeS7WBK#g2EJ1{d5(W<Z@Nz3SOd<7zd7{=cTTA
zKpQo7^8dNnGzY)3!#qlMH1t;1>`ysg8iVC+{aPkh9y{mmyLvrsjhe5nMxw90r9m~A
z7f}w${^Rv)ESB_SODiLb>pqx#3BUhOe2Bge33{s65Re>TAs&EUX|drLfGCE@gX{(O
zyl^CYFL^ng1_u_>4UU}DBXI|yp46@!yK&MK#J}g*{?F_uKb8|ITjc5%^Z6w?8xBMn
zyKkuY%O#(V(Kri1G$n?6aBvCx+Bao?yw7Jr22Y1YwE4QIOXHvzjr;J0UluM-pV#~o
z!2Oa&3d4ajFNv+>#miAv%d*5N?Cf;80Fvd0N_3emb9lp6HmXx2F1gYk_FQl!_Fb3W
z_|~QcM|WWqzdLakUSJFN9y?&W<lg_E$doXkjJk4WanqbHTndN|3$%0cNYdjSu)2K{
zx6@|iN<%c4JFWT4elk6RE3=z*_pTK#y<#;u>{bUH%U!W^j$k!ZT*$SDeSpoek22!V
zz)MXDtHPscXB2`y2#c`_5s!>w#8LHe!IkXNSZO`+HW*M{n;8d)a}e%osXkT%Jow_m
zG!iKkhX?z6+#I5z*n4j5)TXP;2Xxb9;{-!QTypt0N!eX+-UEjc?lwm=4%)9<N`5qs
zqm4H0qA4~3_ii8gx8(Xlmgt_t9u40*6g_kE5Q)CM6;6kk#cs?+0}=M~v7yvbV9;)M
zB!idt{f_UvD>C<L)#8u#b!f|$ZI;}XnYh<obc)Kgk-u~>!>y%g_}beZ%HvVH!orC#
zsOg_0b}C+&Dj|=GWjr4SoGHl9^VgWq4dF-ct&Sz3#wMRjV&>C;wUZ&b9ON`j3CWB1
zOq3+e$GsLwg^bPRban2{MPRCNtEYZ~EDWDoo3dT_o&^#4xapC?2o`3i&sT@@u?Uj7
zyO6GTgFNj5JPdS9*KTPf6bqpx$0pDwvQzPDaw@G8_sig#Ei#pG_K&X|QD7cq<Yd*b
z^EZ%*#9)8Y*K2bGz!-aiR#$4}wV`O(%i`m)Bgy2nB8m0q-;896NPQS}Kz-s1;i$n<
z+!}u~GY~aiy%~!;-jCUwzXGcpHf>Ih`+9vY7bvOC88|mGfXqH3i;c!Uhlzvw&}9CD
zH{P0C@)%NfNwnLdLuRo$vFlm8*%#O1D}vAw{s-hymGdsp^CPs8v;f@ptHrN@92kuN
zc3B2jd}CvEWo|Z?PLB>i0S%dev!thy|0L>@u^pQ^C_tQ%L$K!TrSDdpg6Opg%t@7_
zu>w5zCV1U+>dEDg1)yK-4>*Sn;%rzJzX!I&1<&m7GD|kSQcBo4b;$Yxp59d0d-wdp
zMKeyFF$NJ!<qI$=Qu^W_5B{{raU$ZJ2cvW%Zqtk(@Qb58p@9B?94S1h)xw~Y(+j&J
z7j@Z#Q`7U+M~U=<O+>FD7yr#W2GN!T;%jvE2cWA<G>4Zd-M@fLixe;lh=f-KVgX4o
z<$6ILwdR$UL;1mMJcG@<Z%81`5GDTvgHNDC1eLaJkVziBro#~eOE`0M%4$k*M`XZ{
zyk(?(Ww&y%n8_RK?~4a~eyfwoxoD-9iaH`2rC?+|E90<~bK~=N*%6#{!(%<+y5KR7
z-_Af{u(D#@ADwncR;SbM4Fn>+CMnX_6HAOuWYeAa%pJG+oY`YbUML3#UCQviRd_il
zJ+Af1pf^_x8Y1K20B9-gG2eh)ZU?g2(lqovP_KX)#N;AFK7=sZX<7g!&KU#9o+C49
z1~Hx3aSq#$8!z9#vM@DSE@V=0x&T7zX?2a<0nt>VInhj&V2OF2))%Nxfs#BkiY8zY
zZ-D6~wFkl8iG2!OW}54mIG@B<Lfm!wv5NR3krWzf(Ys#AUMV;8@H#;fyHg@P@=YkY
z^1M|Hgy4bZN({#P(!QYCHa|3Ow@(hl0=3}@go@TDim3pzEaYsW)6UvfB>9B;iF{3<
z8(I8nrazvEjfd=pO;tRlh}Dx+xLq%An{3`B?0@md`oeuU00olyg?J)9?zHBrtzs2E
zkni6p#fNOh$pP=hX-udjRDk3E034shX~(yOJ3m~wfbiC?8+-&++|ZYBl^^B)!3v2z
zw6*!jP<Q6-fPNb~m76z0{%k0iFu`v_bBCw%j1jV-GiCr!IN3mrM7T_56>_&Avp*cw
z#Fq><#LjC(l*4?IF9DZnVh9OmzmR-LRD&dma@4YUVGbVOo9`Hc5{~kN!pDmkDu2N8
zGo(Hb{p1Zp4Bl(9(R$ZZSPy30QYcnkmBg@`D}-E=FmwDpTq(>h*Hqu<OhctxF5@e;
zHS+_<pa+2%bVs~<$Mt1P(CPASKb2XhcPJEeeE6Rqz6)bmtaRHI%7tQZknmo*d^;DS
zEOf-vLhh6P34GxwW_4kD9>_-N^^k=?v_KbyZBLS0P%S_Y!wo4O?n8qBHcfKn=WHy_
zPESstfyzWOmCM>lC<44{DHS;LK1%p~V)jn3h7;qu3vSY=<pSe`gAR@66hY$*NUKG9
z2x$kzw>gc(GN~ST`LWuaKzLZm&l!EgMb9(IkUeG%Igv|z_;>l?d|B~_qz`^ARy<NR
zksK&qaY{B{4+KF2Td_vmfxy)_eb%v183-=k^U0y~(&j_61I~h7VNo>qM^lHR7Zd)$
z;fVk?pxUh6sr2{wZdUB@5A^q94wqoZC)x1=a>0E;GaOrMpmcCs0&Chg-TeSR2;Hs>
znoC$I!0U+4sRUz&4N4~{Tqo!wonRL6NU-iSXrXx4^B2|y5T^&z`TiZ`Po~HgQZ3W|
z4hZJ^dY8<M7r>W;{OCkj6U9NTF~8dWPwO>t!Z4v}tfhC%Zk%y3w}W_hlfg{zOuk#t
z(S)P%%%u&d91OTp8<mxwjHPz<){Q^9J7U|&B&#V;+RSE1o)sOkY0NloMNANcCbJw2
zIur_ZwQHI(DKy~hukP*T8zcP|X1lR)eCx)D?P4-j34U?Z<eP__Yc5A{JhPBT-1_@~
z*K<N~I-f)@0IgcyJ93feYVfh6alZ(*JQx_fQ|OU_*^~^D`)OmS`gZgTjk}f__@#1C
zC7x6h%KCls-yBO;F){7|oij*7y{XEB*L#d3sn-`-##O<1{H2N&v5)s(7Cm9(KU%)7
zGC6KH8sMAbmz}jauiJTTwtOD$a%N``a+>H^fTn|)di&rA8X_FTOZtMa4Jt=x&I2^*
z%=z+I#h1W)Tm0!Zy|j8Pe^$K;)ze<Im(y#T*OPw$MUK`MHG!9(K|@Uiyq1M;>tzNF
z;s<(J6l_e<%aSn2p6X=-lBfKuUN#DGv0FzLeB!SDy@L%K{!1@Ag|IxUm)(L@KGe%S
zDE|q@$_zNfUU&y@t<11({;ysZ(NE|&c^wH>#=KrO2s!p$y==tE0spO+Wg#a{>t%;{
zSA0t^JB3l%u9w|{SAL+Edr*FZ@<c$V`kK%dn(#4e2pvH|zN0N6iz|+<#NQ<H)l#X9
zw*nvQI`Sw{-4;G=pk@=_v~aB>?n4n4dAWeO{H&JCAeRbwtp<2jYHJ2<s93SOu!sH#
zm-Y`{Yd0S?I!b0MtBjONlfxsWa!Hx1A2uJgl#Q)sy|q=(D~qkIg7xE-%cIItLv1ND
zTk3Xw53Mbs>Fa3vHk^!BQ10Nd!jgKuetUC8?Vvo1dDz9%X#^cq*u}WE@b&)gwzAk!
zcboW7L!B1x(zT5lsH66XP~h`Y<zxBeLx!KVe5&2reyda4Z$GLlBZZPuRi1Zcm>$`E
z;#u8(L5nYF;U;?7<|{^hSFnl&yr)p=;BN;bJ;HS#)6wK(qt!p=wJLxC;by&k*xYX^
z<wAK%>2!9~qt1S#*}|e6mkSkC`2BnMS#WY10tv=`R~V$RoX0s&^j82>Y0Lf?*QfZb
zt>H@;<?jotr=Rnx4$<l<cs}{OJf8Rj^G!ggV80}cqE$M^e}cd+oGH*_sOUGr*;(^U
zSY`!S)7l-L`rQUbw}bYd;P-9*d##2B)r7C~M0(Z{%7k-ml&L@TtPSA6GOlZ&3{>}I
zkCr)JbX%a+I2*#KZ_j&n`nd{vb&PitSf&aO@t>ahd`49M#2Lg*Qq2z3q*nBd;Pn9I
zBK{6Bw?wfH@ZBNSk|@&dvo$TE=QWJrMKmOTCJ|9G=bt=zQrH7Ic&t7x06AaEeimWT
zfAcD6jjE9v?RR<WlV+!(T&o|}+sE~7h0tADRrl&A5WQfvUT-uHwR;=;JDn$LyRP61
z(3*Pd5WhNVZP(jMr%_in7MGQ^gL+G=ysTBoD<`nCpf#rdR#A`D=C1m1x32Jxs7h_-
zs-kwP)<&muP%Rb@x7y8v&SBxOxl27RuGKJI|F1dzv<A-t+B2!{DcX3F0Agq4ya93z
zzYSV@)@uh}lC?<^dW8XD5I!qu;C&X^vWKuE4Ff8QeD@lGRbv!>xrnp`=QIgOngVsW
z0BSN1Xt@lTY7w45OMsgd;N2Q>oL>cQZUBmJ0LE`&>$n4tjC(j0=>dt7!e2q#3Wf%O
z;bug6Ae2mam)V(vk<{d7JvfBPgL6QA%rAV41z3=UgzvC04x5Yc1hH|ZumtOeJsvs2
zSc;{Quq4ZJrlVG~RGKLnFROcds_}ZG-cjXcb?@P}D&B62>rLZE^U<Dax^aM&+iywh
zji$7I*fgrU2MyKm5Vehu_%FBXyB*b3*Qyy_#|?>Y0+>3gp}CLZtLnjlD(`A-w~oZ8
zP1F8fbE}P3+l_r0yX>A?Hu8(qQIAYV`XdkU$Su6_(YU`?f27L1(Xs(I$}<0^%!g5_
xb+2RedA?Sg)35XTwMOd+?(CzF1Uf;N(Z_$g@cm!X_2<7HS)=Q}zxRiK`dfIfx|jd}

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-BoldItalic.woff b/source/fonts/KaTeX_Math-BoldItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..8940e0b58013e7002cc8af7f77c2ad78460f9411
GIT binary patch
literal 23192
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
Z007KAqR#*T0074MGEV>i007aqe4Ox#?P&l2

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-BoldItalic.woff2 b/source/fonts/KaTeX_Math-BoldItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..15cf56d3408b3d1afa9ccae05dae5de94e91cdce
GIT binary patch
literal 20036
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-Italic.eot b/source/fonts/KaTeX_Math-Italic.eot
new file mode 100644
index 0000000000000000000000000000000000000000..64c8992c477ed0007844d3cfd3f0f962eb91ac89
GIT binary patch
literal 41676
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-Italic.ttf b/source/fonts/KaTeX_Math-Italic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..06f39d3a29906ba9c26675cb57188dd25a57609d
GIT binary patch
literal 41448
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
LfBVOu`}O|;WxgSb

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-Italic.woff b/source/fonts/KaTeX_Math-Italic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..cf3b4b79e5b940e9e7a48b79022e1ed82fcf2786
GIT binary patch
literal 23820
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-Italic.woff2 b/source/fonts/KaTeX_Math-Italic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..5f8c4bfa455259e3e0a1c53c8fa399fe2a4ead59
GIT binary patch
literal 20432
zcmV)JK)b(pPew8T0RR9108h{W4*&oF0HNdn08elL0RR9100000000000000000000
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
L`ga**&^mem*y&Pi

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-Regular.eot b/source/fonts/KaTeX_Math-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..5521e6a564de3076d4b790a9db8eb302333a2916
GIT binary patch
literal 41536
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
S_0RvON*urNH{bu<H~$xtvntI1

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-Regular.ttf b/source/fonts/KaTeX_Math-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..731270823704787f06e136c49e588614fa39ab68
GIT binary patch
literal 41304
zcmbTf37lM4c_(_$x%<7f?@M=e?N!}X)%(7ddQrF3T3UOzBwK20vAoIhzQhJ>V+h6p
z90LYIfC(8Mgk(}8vBMq`$b`obG69m1$>jZ#mp~Gd0GUS~`7yTi{@=M(y~vWyi)E>9
z*FEPh-~Ro-@0^yHBuQTBO_D5K+PU-a-m^bA@Oer4Pm}nzZU3R3{)M-#-6cuvVf=jh
z%w6l3zV*Rh*)K`*o%rr+XCAyi-61KrOOpQr&R;lx>DIgcGW3@}k|cFhlI$05UBB-V
zzW3pJgZMOVz4MXt%h|>oBq{JgNqTzn!nyUc+IuHcIQKIC4qw0*dWz#5qw)C*cisQ+
zUw_(l2Y&tz{=WOpyU(ou;1SP9aKHbK^IyMf{ozaOK0bqUtN1y6as94yKUjU}6O!}-
z#_Nw?y8FKSzwp-lvy${-oM(S|>E3gfp7_aqAHXBg{P#%o?)aN}--kbW$~*aQQiuEx
z_(uAZ-+An#t<S4}akZ!<`5)nDL*n!;{=*#pM^}r|artXFzf(zyD>>(!f6s|;&Pl%t
zy3&7KN=v=cLpZvR-R6A5KF{7IsW|lv|2)2V*7;<AE%mY1eZ;^wNzxB}(m(%;_yPZ{
zoL@LA)ur?gugdAGqtbCa+y6*Q(mQX)o!DpiCov?AyZ=<`rx|Q7{`o2H@&hTye}cdN
zP3o5?r40YSr4IfS-Z+4tXQU4HX(_=g(wKYz-+w|%%U_dnat_D;Tk7XeN*Otd&!1r4
zIcbnDNnzY)k}pbwazh%x^%8tRO5wY4?w2y`H>5JVEM>WY<8MkO_I+uD{gq_#y41_o
zq%iy7)gN;c$6ZoUzKCnB;=AukS@x5wf5E<pIbX)le<}@uQb9f`&V~8cF>X@I;aXw#
zCsIzl)2(>^9a67&#+UGJ-;;*uU1S%YV^M13za+)@St%?l(h7eQo@ZE!a!s<?=cPQJ
zE6HAxs_b9Iy>jdpT&FJeVO|eEAw}5_q#DkP=i=jd4i(?s0eVb;Rxe5c-iGIS2WWDy
z6z6Zp@kPnY_v7=hQ~^C`{2Y5P=uia@@K-vEzfhd!-!>s1lJpgP18I`lBt`l-K8xU;
zB5C;dxb&#>5&7Nn`{ZAeKO}!d{;2#h`4jU0DgTN5XY#+w|MtVHSFd7xTG}D4W8Cvw
z#{Fmc<ML&U`%^LQ6%72_t6#qQg{$v-`C~7C^yUBb@`qpk(90iu`Ilb)z{}6S{Orqb
zd-?8{@ANtHiVME}e@w$0HHQgF-6pL#fs>BVzs9u`RnraAvR!VE*XIueL*Ym?7EdJG
z+MP+Mj&vrQ%NL5Ja%WeiTI=rV?du;H92y>Zjf?&arw(Dv+}3fUTYvcfaomuq>4tP<
zbzv=?UjDS?Ik4Q&4jo@@3?>`pwbSR*&m388@WT3M4492GXL7eBGnt08){y3M^Pd8R
z=1$Mn8m!t#pFUq}@M`*Oy78rzhEhEKsWP+X7S1djJh7U|Ws=XVrW-3OtC>c9EtzhN
z($VPJTKcjxX#H%XjIWwMr5n9;zL!RRX=OEyhj?Z^-LO_xPve_3owMj@n2v@|Cr_`f
zttA_*vbL6MNGq%7*4Anbxtd-`H<ZFU9!Q;AS#7Af*@l*z#pACv*y&nBspjxp>9d#B
zTV~UA#<@BD+u)}c&NSq%48EUBKa+k2*S_4V7VugJR!^@a*AK3(=GJhwerOe^lJru|
zJJ%X&wV}^dJ_SQ5NTcD$+-wdc&dshj_$}uf><sSTP`hdky_%+nwCB!zT9IzS5Iko6
z^coF0Jue>8sD4VfrMZRKuFM9p&FXgITh3Kj1&=U?H$I(ScqX?_j1ZKPl0?l$I*EsD
zJ!L~K<ksh%Ti7?4-pFGXCU3mj)=4gsncVEBY)f8P%_MV~wXRI9;jUihe4%l6eZJQ4
zRPh4obi*~bo8Aitx!JXbn|?ZopWOJV*6`voK0%T+C~yXk-SEtvPCs)x-SB{DwT7>{
ze0cS;a&~?#-*BJHJzQ(}tIG#gmk&8#CNuaxD83I=FH7FJBdeFa-nj-_pKW+6B%~1C
z*~>2a$Blm)ECNo*g_YIIB)K5g>@#35-L@-}!?f0M(m794Ap3N74R5lD=U+SxCT?TZ
z4H$S?l7cyqc&;H$e~K|Cq#;<9E=zpj@M^=Gn@uk?YzU>5gS^eAPviD4`g~0CNVBug
zoW2~;Dvbv!$t=he!n*}4wMMvlnbBtibf(W}^|DN#vFc@oKI7HPDt#uZmo@rKRxj)H
z*;c)5&}Vz~vPqwv)pU1*-BfFIiGzD;jfyz9x7J8irG~rmA9%(NJYx#iPU9KrGlOTO
z&n%viK67|R`pn}Q>9c@mq|YLrkv>a!M*1w{8R@fHO-~9Hs8vB4-|6%m_;Z^0xsK09
zmE^6v+Nf0;HE2=~gm@9sc3oA<t&ir&jJ@Uvh*GW5yTKk7Y4mhmR#|vq6=sN-(6^N`
zuRh&hO%I9Z9l$uY@M?{Qp}6kj(f3m1w}r)?pU#b5?q^}V(IDO*4}9Gzry<zuqqW9R
zwL3alYYe~MPzd1}3?BhYq(~v%on9p61u1tu^UPvy5yoN_W*ue`8a>QdIE4F;!pcOT
zAoyPlX_#}BbI)|=(&@=(aILY;)9G&K8Vv>4#He)RH0gW&!0K=Dw46@<7B9+)wOO)(
z2COOWhdbtWLi@nY?WzR5XBEfT^SRS!a}9ZJ{VdE7pIcAj`1Bfd_u4t@cqAC++|KpU
zWDa-OiTA>XxC^d#otxl6$XF^c0HD1Jfr4qj=1FkHbxbaZhrqw^G-TyA?*)k%CmN)2
zceU80L2eSHnGjz$3@CUyy)(B+HzRIM3X;(aG$|?_UhPg#!Z*?rH^0QiHc74(@Y61w
z+VH*(qh2jsr*lot;2CR;spb>RwODhS-1D`s*ka{$HJ9!ts_lefo?Pp`+|5Ezz?qG&
z!OhLD>l<H-(XFZ5#_XszMk}o|+b%j=ZH!f(feewbJOj0S)s4ZH?nXE6KPSjV0@$K1
z30DqU(G4YWo^c*V12%j^Qd{r)`l7gaJ;C^oNFULS?8{_sG@04L@61~B85f8cEu!wE
z_s<aJ=@FanvGK}_c;&F8obdM0!(ew~5W2W@gYS32=CV+*F@!O@tBnzSEEClhK-ct6
zxV09Y_Ebq68_OW;-s-0$X&wjraKPwbfAv#Le6xZB@y!7mvw%|vX$&14qA_%En8wh-
z5gM}t2S;fP9UP-Ebg)We=wOY;%;DfTjiG}RG=>gN(il3piN@^2!Ob*=4o=Y+Iyg;Z
z=wO}3%;Mk{8bb$XXbc^kr7?7HuG$#iAoF?pp)rlGZxu%~IJzL@318Ro!)?{Z#K!2`
z=?5|T4sk@I?-WNg^sZ`Sa%1R4`aul6TO85QOX7%z-cxN%Z4AAaeh@?N6Gt@kesM%Y
zAE^G8sqj|tG+SvH=NfW;<>8jgsYw!o@vk04pu*k(%j|^Tmo7`%>~HlXxzt5RFJ=vo
z!42oQs>L*MY|MVn_>%l31fV9)ShJs#>i8pmlBM~}dG_-M5N7`T>Sg)t{N*D3^jYIg
z5>x6we+ID@h9H_=dogeL4DRasG`sqAL-_?bj`_>#*?HlmZt%~lv?}GLJpU4M^xtE@
zdG+6}mU$S*U%L8z{QSAr&lu&5Lw?U+VxPhH(_-B3VcbjXv-o*{e#U>1=ATcqU*xA{
zP5zPcP4(~eHvNmnE$01JuU)ji=epz`_bhqe<U8-r`u|tpL&0ASeJp%$Bo_HvbWilR
zV^79@9RE(@^U1fgb+!GV{i~_|4yoh49p6v?mrOnLjqLq7SMD46`9itKOT6@JrC%#w
zEPubt==xf<yB4T@rTa}i5B7eb?@j&r{{KEOJE#nPZRp{l9}k}#{`AQ4k(Wl7Mt^(k
zEo1*<{NVU!Ck7|pG4X@Ri&NUvpG|*yX7|j?^-u4(WtPugn0;*aU9%qo_51NYU&VXL
zk}er9Y6_EhZ)Lzg;4cmMbN%l<+uzT_ul!R#&;~B$K$$-SPB16!m2R$E-Aq!)m@M(#
z%Z=R1YP}7am?|0SI&4IBS%VlMPd%YCSuV(Xk~qx_c5iFU*3%Vv&syEpc_bPrK2$6g
zOufA_P#hedVFSY>!_vq!n_!V}Fc6Il^rv8bbPvmAi@B_x>t-X)s8UYXbS)f;_HQ}O
z26;)>ye!(^rR!Yr>`ZIy6j#lFUu$dQ>ZEO|vaH&HL-Cv2T^f@Wu7rjy*AKFJrgR5o
zS+o4RgNq^d%{WW?dXC?Et8OH?Eca;qm~6@>yYhuAUyyC4sNCh%IoDL5Tb8-^z2lRr
zp~n?VHK7HZDK^U@8C!XuNZW~qKL(C7CheDQk)E%6B&GuJ(9{zQlGLPR2k5BDs&)qK
zkk|>(Grvr91a884f$vE!H;N$mtA`aghgC4F-VXf%mzZ>>b;XU#;QZQJ-GAz)qlb3y
znwuW%>ntvuGxSJ>4R*_2te6FjOT`gzU?3fhL?eQ*UM3g-TIaH*;?N+So?!j-5l{y)
zzLeD}Oaq7XfqpP<WLTze!K)A$5sF0VOP1z}VrZ7`Qeqb8vZ}BrnCw|7m4lJ>A#3))
z?B3h;uYVQ%P*ug&k{ORGKf`Xzwd+ShRkz!t$W!dV0axd)P<Xf}ukC%1<@|xz!kWJ0
z9KWB*j5Een*&E=DTgBo)E>qrN%jWKprJ3C(!|ilE$U#ilx%@)5*T8V5DL>Y^K9Db7
z`N!(Giuv!@xl_US`guZI`e6b7o&TP+Tl#|+cLAMYO*R#PBXLRNmn06gVHcrF$_bSz
zN_815lTS#pT!Z8<H>zOP4F?xD2A9R)J`B!Ydu1lcOg^=7gQ5iHmaiFvJ4=#=d{x5R
zv183gVDf(0&AL_U?kW|#vbvrGhlwL#qEH!V6>(~s4LHg}yams|T;ktAKbW85G=@VV
zX^0l~unHsH<8R+JKQw*k)QE@e>D^hZO`HxWsyobM?>e5#-TG`$U#`7*Wuh;yO?GmZ
z$>f;s^Kq}{N$0ud^{EWn@i&J~#k=oXf655o+n@EvF79wEa2;#!2%8U{XwN@<&%*7A
z0JF;6=SpZkKlkd&({E?0tjfL+sKKQSY)lUN)F&-Vch@Z!1HZP|r05n6QnzbR7wEis
zy12Y?T4+vKXpRic+4?;QX_jv*PYj>a^u!iTX(~#JMO*se<<O8Jhl(IxOF>Anv}_KP
z=iv}hei(FR9UBUf1)Eic|H1!J4(-3$)wXu-3D57}y#}dOj9^m{KC*8okL6Oi7;~%q
z9nl>JtW!Jk-Q||(>#_&p&6pZ^a=pLzo|6~CoIx@eclluMNa)|S`>2iqhVlw@j4|(y
z{OJ#YmQ3mZL0{${m+qF{=UDV95ZIQueF=~*{=W$6k`+z9B;grl^&+My8dJ`guu|5V
zWLf!TgQ=>1Lelku4hfxjo%t4Ka*G7kxzNV!iVlwuxOnIJbEj`EFGLIFc-KhD1;4-s
zhlhkkA?fw7a0J!|v>lmN;Tz;Ai8Kt;2nLmk6@~$1b8wpE8<HHx`3$6cJ7b0hbH$Qy
zCL<ZxIgF{WBLA$`UdTLrMA2n76^)xa#(bIyvT;?{RQO4mWiqmykTq2g1y%;Nndtn@
zQ|)~_ik23YwcAwr%6GrBw8=RBcEzZ5keAVTm!4oe;L_ReTa!k$+XOdcUH%bg{=A)r
zYaz=+OndXwa5r)|5o|Y%@KuhlRm-<>A_7OHUs2&%HrcB3G9DB@$P<utMg4QG14M4|
z^k2Z!+ocyAo{mWHg<MxIf#h7#E=q>UOoLs5F)<Czgt)^bufcTXmn}SpbONlG3S@7F
zZZuQI9Nhd&>k^yuDiZkE4wJNg^7z4(-HVgsgZ;&Psy!BQ+tTgI1(zPGjAUERgiMgo
zl<P8NXmFYh5o5a<=?{5!iVukSY;c<QQ;-nCdpoAd5dd8aMIj<7hVi-LXWG_6E_p+j
zwz4GIVhLP-c=YHBj1bGDM<%t57uJrPl%~4$84k9AYI-~{JCaUouEn_EsJ|2J+EB6U
z@B*&PQrp{?f+m<KYwXD<;B&lzVc8(ssj7TcQgl`Kw1rZ-_QuCtT%%}0;|>p7{^x$_
zyRhRBp}U!?wW6-FBrCci>z5?mKp3HGXCy^oC&&cA4XLVhg4DAH20DJ|HO9jewZ@ml
zcydLBS6^Sn6;<if#(jzkq@&UrhdWD(470HLKq$hg$6D7`CE<|bOj<j(Z*jIhHe9RZ
zv&pz^O82w-El7l#{h7QE3<2C2LJbQ1BGCb%=VTomRUUwOh5MqoMJ0FVg*nhY2F!9d
zD-DwMV6zW?;B`F|dAPF=1$e0EF>Uy`Uydca3l7uEXA?_a526fk#Lz-vLsn$3CTj}p
zESDiOve}_3O6JbUdmevHM;3z*?E3QC0^zZ)6MA>vIHej2LJ~g&fElt276BoNEE{h3
zSj3g^2W(qcA(1%?Uv?BX^jv-ze(<Bx=jzsR=3;vo9-$eilq8pgC{;b<aoZ$;(h188
z*@C%-LC1q`1nEv(d4u7_ZNm|?C+h{ej&o6$#Ll#Cv-PqR+^^LOOnU!&-}C(2fBub+
z+;``>Q-=>M&(BPa40KoWWD9iZqwGUIaGv!?5MSuIF6KB%;U)*b+olHR$W{yu3bk*=
zokN3_4H4KrjEuwPsB5EIM?9jD?e~LNAW)rPBZzH>2D^Ed0$~bt2l{D(e5<WNUlHva
zmNH~0vJAW4-GLZE(Y%HA_>qtwreGs%oqg`POjg!=w+)at&p)%__(dd)RKnYNDt093
zCX2K6F73KcQJ#B_b+pNv?lQe<UXwk6BboFe{%eZM@XN3#c&=Bz1xEr~?1&DtWhc^A
znI^NhzD0%HwoaPdwGjn-H-lzeh-0v~c|ql&MBVF!BtLwg0k6TB6*lo$@Ye}Amw$)6
z%}bBHi0GHKV&b^)A1B}+;XpLuK=h^qS#D6swPiqY%K&(aB!y#S5Al>|Hm8ygS*wSc
zG(Os0Ef(?}@u;Os^K8Zt&SNtPaT1P^0GvB~KgFlu8U+X=1461GI^;Gu_)F$uQ&uW|
z5L<R>Q(kyjSH-36<knOOb{-1tS=v2PH!WSpai}BX*5svZR<~+t!E#^WZ2SasXsI*a
z^_#T>i@{OD4!gYy=Ug`|e9G|2SHAb`+YJ!9$sF>{W5_EW0S$+xPrTSk4y38BDO9Lc
zNl`C>u&wkD)>A&Ykx&pJUp-3LZ!yZrBq;5my0^HN1iDIyhLH(6SE4cX%ymv9DJEl0
z7gFUFN*>H|zBKYc#))~Gq-~nlW@1=jg0|2eBo9zfqzx2DfzV`@hXd?)Z;FGUistXU
zExFHUQ(&Zf&8nu1&#>@g`=|DHW@~CDVd#mz;x3=^5WmNz>Rz&dO~>kSfB)av)aq1U
zZlKy;hW*pq=Xzc2e}ayPTV<l-v(hiuJvA4^^VYL@IMfYfBCWw76Dbi|Gvv}9mo4kM
zal&nxvSAbq@{L5&?c<8qjH_T=Jw=xgmxEZJ*?u7m0I_0kefkX#-h)n>6UWz%g}aOX
zBgx`}=e#0#ZP}n^zCgrrQYs`}6w}E4l89X$8z)T8$gmTV<{Srx1cS2iZ3657A!MS4
z278#7H~k@{?2vglN&MSP=$Zi*Yu_+D&5XmbJ5U5gX&Z)JJHXi8iYM*^Uf}U9$A&{*
zgsHM`dCJAV#!R#5TLud}g|JWqyFBtxz=Cywl34u{<MZ>;C|NyCS8e|>7%3nl8)29H
z%$8IoK=#H^%@CO#u3q_lmR3Bbm)ktfVQ83aC~?@+Zi9V@MIy(`mo?5UM~48=s6Lk>
z$JJ+_85+9jq_A!#_jwQ*Zw6z?cSIbVMsD*~$jBk-sTYyjZRGH1uLAa^$Xj)dUPL_s
z6)32iP|LN$$apn}RWJ-tOLN4AqHR47xv)lu<6VW{Ip<{HElFr$ERHA;)aBSEfuRUr
z)JkB4GmC^M-qE%6wdl(hjy6FR*)_b&GwAYGqA+dnPik?&rF$lQdD9H^FV7UqeKBMT
zF1Oa%P4UVVFlZ~_(qa-pDM5rEFy)}PM@8P)_ro2}=ktgotVnckJ!BxOy!VY@KRK-}
z;EJF-@Gf+BeG<JkzxX@%+#Mu#H?3UzR!?CW@KA_LOx=c}Qo7-2<d#9j<?Vxn$4G8^
zj8~ln&D%BU{(JAZ{nSmXE6cm;(<4K<bRy<;OOI-gQtE+JkbDBsl6(ajDx@A+WP<|x
zqI?9J76^x?wHY?e2>&2^r-dDDr5v6V@ft-#KH{iZf(=2XDIo=pOR1`0t;TH6LUPF;
zgC}P^wB%Qw!mC?daSNfOrk&Xzm)TORb7*{gsMF;_8mOH<jp#zjkXp)b-_WbW>5c>5
zEqcY5cCOz32WCo^7qz!)vlf|Kh3p-?5VT2C@)~zTUkG5ZLdYGJSN@c<!j3~X-E??I
zC`h>^_$One6H0trhQjlfLdiY{K49%E#@_yGSN_mM4BFrS%0F5e)$sTz1Q2$ZV$g%q
zb9LWvF%PMlquUcA(`0%QxGx2q1ga2PKs?t?#G;!l-#P>#=jIT>aD)$tu*ov;GuzLB
z-N-4HcJ7#&93QIXvaztoHZ<uV+e<mcNYkW($H69hiRJx~4sa#v7+qLpCzW(!J+jPD
zH5g`@3@F=VVUBESw-@XS&xh2v@SzkrG<b$nd!u}4=uS2~R1f1d@$MW^glAVWG3Tb?
zp~b*^c+i7%@5v^IG<V0|&;m2%1iVV#<ZYPafR{{t{P8R5pMJ}eP<7c2Lx{JQxkdI+
zF1+$7o%7?b{6xt#y(D2_lqdcj>KsvYLO$wb`(Xga(g|oHazTKC1SQv4D;3;0iNK+G
zvMf$g-WPybgw~&GU7$#Katv33Cq=3ck(G}%XUU8*x|gawooPjnRY*%(Fj&*^fYc+y
z0w8u`FvJOj%)sc;3HIOoMeCLakBuF;?e;qs_prb%ZRxvNWns!42>Yf-qUrAX*gzsW
zHSy3$JO2{%yzAmyA2~QMKfn92ob|T*(rqXIV$UruS+Q$@!o+8eFP-%p#eJV5u++f^
z`41tJ^U_Vy(=SCOu5U5@h!A9*uWOrO7RjY@0-0?AIjv)YI#3zeKFq-i#jpyczChV=
z35o|=LpLsi^N>q>=UVCM!ekNndfOJ%kZeC}1@Kk)baK|>4@w!=vnm3QZMyFk)J{O6
zhwGsx4l=w2NNie@-~FO{V!sRE-{8Vs`YoqYsSWe-YPZbJS3C7x{(OXh#axyhIBd-2
zlL4#c37U3;TQdV%C~k}m%m)~I=zh-@E3tur!0k>HbEKfm(BAPDSbb&{lRG=X6B%+k
zE#!1iT9MY7T6Z7XH!AB!yTT>8m9q9pvM%Z9nKl_}O1f$QUDAa7R)I_Dx)AExGNe=R
zp;NGn0^S=>gac_!EMGH`1it50cf@drkPfysZw)=!a=&`5H3PO!gPjHt+I-f{nVaJ&
zkd7TZFg&z&?7;fL^|>8GE5j?rTu-HF>+y;@I6MW<zExjFntFu5FB}rkvWTTAv?f78
zWGBNtL4q8(6Pne+LI&W^P-;Or28Ig%3w2}fl)c@>+gtkeh|sx@-Gh9UnQa}#X;XtC
z);o8`<K6kee2?nhd&<k^OM|`r#~=2x;h4IpcUPH`alsri#SEoZ>;YX->`gVaNj2Z{
zkAsHFV6sZ7p0vl*qL1Y436>q~HHSX`u$6hBKNYY3$&+^K!cf?#)!!DjMr;^!Ef>i;
z`g--B`2Pcay;FLMNp(wNmUN2g8%PGY3nWg~E=iW8%9bjy=VpZr@R#Ob&l_y2ZD{e0
zCz6k8PONN9EQ^Uvv1s0r0rs*;$(y&n!L)jH;~B4=0eb}O_SEJ?z}%3E=wlDxclWJl
zZ$1WybZKm)ucxbAI%i+E6emJ|$5iATo3T+wfZ1)HK)_KNoR)=H0PBK5apIKCjMsrQ
zHqj9knCfO-LYNbPt%F<aNi(SAzy9l<6Fmhb`dC%d=Ty}b^C(51s<}e3RM`k$=m12{
zxxu{^Z)j>Eo!P`b@~2`)LzHN5mh=|G^E0kQ5ax!>F6>L}$oV2IThsD^+}&61vqEbl
zezmyd8tm=JwR7*FM{@;ARh!TFVz%37B&;!Ce@y4>$v1O~S(+*KR*1unxM7LpEB_nP
zuGziO<rI=e%E1TWGoMCn@2K>hy6fN~w7oM4m)$Z$MObu{#;N3i@Lr)3pL#+=Mgo7@
zf>}2m>J3N3aI{8mdf42x*QQ`ifyZs#Lsa=XuNj4#W9fwoF+>2a9BW-y5k9ycIIw@u
z^3M65TCtE$#iLn64?E>PhyeK+IGYVmlgsu15C!82LUDrAFh)2qion@{lx~7;(Gf~k
zk$;E@gTuUYVaLe1j=20Z^F}8P)jR!WSLDoy)z+rz?r|OfSGlSjTedts%N8Hh-Yi##
z#>xXrif&)%nm~-{9@E?*u*;a=eSEs3YVe%ms~kzBl5IcN#z*Xq4#klF0m|-;CwA1i
zy>GyX)}t)P-OGdhceGb+R<AS9cQq4$Yew)=ban9m3}pI_-<|>`cR4W-Fb)L03cIwC
zkfEB62oeCa(S)W@N^g#lD2)VyduGcBLZIqVO*(dD?{Z&HDc_#(0`rtkX*Zi2NkkKK
z7V*pgnPlKl047_g2#yHTrZ_0m-_D{T3N1x?-pxx6)F`8NF7QsI6qI%lVx46lPClM{
zBIl)t(%L4&ez;WC%K7b`?HzOBN+g-qHCuLTsfZWZ#JAtVa!lcF4J95Xn=WsuE!~ZX
z`B}GTD(i-s1;7ZrSJW0{WEOJn?ei5DL_Nz)q)tW*jcdmjI)ge@z?t?P@CH;;nI0OB
zM^os#q0+@G-%{x6P*9YbKtAZuBy{L1Z1zd%Lv>fm<3ilqgP6aiLvbB|IIal2;XJ>L
zDZ*ttwwd}Ewhe%)GzT~~n0$H^GsQ(vWk0j^biHl+8AXwfHP1_mC^OjSAF7lJ&qSaJ
zZIux!xeCsds7iSKV4tEe0b@Ck35O<#Y!JNLz`QVI6Qf21roC@!^x)(1Tee31-rdQ>
zJVpI-a52DpJI&OG)(>1nqQD3G#)LV&A>7M`M>v0WWa{>1_Ezh9;lKL%Po&nKIk{W&
zM+4>`{Z|9R3O%_7yybuVHz7~c#(^cDly*sPtb4OqQWA#t@!eI_mzEqAi6Fv4`j1or
zoTb75BA%Mo$`g<*a*Dw)0u2uo4V7^YVK3z6K01eq$HYW_!WkxU5WkLfX}ITNB6g%B
z>@S(<JP3+Ro5(oQ#9t}B3I#Tz7_vo_K8q1fUM-LiO~>jV0<nrRr^@bxZpn7n%!6S<
zofI`3G1}#Ewrkffa<%5P?koou0=jO>p5Zh{>w$9RU78vQ0HDejnO3v;<GNzRP+k?F
z2Fi2%ikm&~zz@*26Gg2~wC?Ciz$44;0Gu@Cl}|#3k$`DzoK4F%-i%2DSHG{sK-VXw
z57+%S?<*A$z&<uT(UHQ{TEd@nyG#mLh_;4~tedE7Gs~)3E%IJxNKp(aV@N%Z!Q8sf
znM;IjUWK1%UD+Xa5|8wx^u*6Sa@QSaZ@KB@iKBa$3lCNc&xJhbR3N$o1s8DRR*Xr|
zJ|F@`p%IXAf!J=QzFIUC2&23Xu84XY@dveb;!iU@CKCsrt5N96he&yxAJBb;;A32O
zySm1$s_ia>c#~P}K`+m+5AH`+rRCc|RCE)xWvANr`}|Pn*q|k|H0P!#oXCZrP)ZTh
z*kC>s@Nd~a8$?r;tj}b1_KA-(E#Ot;j4N_`$8w%&p&+j^?&~1lM%*wtO~eZEn|`HB
zXQ5{bUGM|QrbD<QU=bxrZb(*KS0-Gt?2YETr}Ka7l6`(lwnV~>QMMN2a*xffeCNt{
z7<7RBy&fohcI3@73`GI{2s6=L1zA8nL_Q2zctZMMJ#goqasm4AFxUkvILYLunx%9H
z{m@{B0e{$*frpe%xV8fz+eSeWwvG}QNE^+kOTj>&x%M>lF8;)04?S@H+^N+=2j=G{
z#zv7yJWwk5+{n!b90h|Lnr7%Nyrx##R5&j~S|LUNDS`3Bv7@p$55woAsqjvel)zVQ
zhnaC<j2|9Ca6$fzdh#GF7$a<IF5BgUC-WWcv%bylQq5r)aQy7a9*Z0fS@2ulqKDVg
zLp{j|s+(ceFoAn$uITzPmjPw=?d>xmFUrwlGqZ{{kOM2ddpc4F9ef#4VaU(Ad)Vig
z(atOeo@%b(N@$<0xIA!(ebzrR7Ex^y3#u&0T1;0J7rS_PVxS}HGrVY24WhyW+LCD~
z!)zd0Kg~Y;tBT1C8(24>7oQg&y1^fK@Q=A+1vO@AHbNbeffTs?zaaxRqp#1sItW>j
z7Hi;A%NDem2EHT2OS6D-=9eKOz`}r{P=lmXd%b2%adV6)xF*C@aUICknT-oLRn{cj
z-_f1(Gt*OJ1AXOUCK(Q*s(!O_(ng#j^$%}RYf&YD9yggsB?1QoCHBp*BIz#4O4IAL
z%yl*_j5Tr#2Qq7#YyL>@xa|hO6<n&BPd$-H&ihR&P#&%y6gr(N#Z@^G?>uM*b9stF
zT)k6|28B7$T%%_p0=`5sc86}J{jdhMhkqOj2t-V+nICxJ!W}BgH7GoS?xe9yv(#H}
zec&HZ$+ox)L5MKoZq2P;`CD8m*j{aa+;W>f8E3tKd!%t>@!tYprlsdz9L9(i0-eV>
zR060KhDrbw+=~uNxW88w0B$r^Kxd*@AgTb_YcC0J3I_?i%&90~5ERrbjFuKF!&Fa0
zoq13iDG4M8(YPEIh7?U<Sc!?CocJS&Mi-%0WV@kDO=~-@@c_5%nd8QuqcMmQAUU63
zP8)s`$m`$#y{f(PBPOq%GIkwl(@m(45<aNPKlm3e8(u&{M`(g|a5p?4#7MR7OpK;L
zTm%w4_R4PnykzG5E?+8c*~*olA`*ne5}tPT|7AaApOHqSebO817V7%?9%LjW;t51*
z1w_<nWRX<RR4FZ^5lqN;3B?jsb-Ge00YdL0T2@d3ytFy~`a=<T6R0~m-qT$!=Cg5X
z92#LG6nGb$ZeU@K$oYhea6b4$$3iX%-;LrghzO*<1(FS@qVW#&B$q}A3C#*=?C+6D
z$dR-=X!vFbX6C%NM+?qYkTx&$j@SFkzLYz(+-BOaf(kdTJl~OO&$v1jK43>W%TvB~
z7kfWYb=h?|?KXHH5>BAMHH(c@=Y3lJfqbnm<#V~O{6(OP8KFHP#(MJAm{B#9Zy2sf
zWxl%qh)fX^m&#ZFjeU$`?X<L08mjkOqBKl!EKt`=7}3lof#vp4$BvNMGT*afCbqkn
z#M{IxLDF?HxiHeCstzFAqRik78^&uBo#<o`B@YV2$fDz4!U~#6;2L`;b7hU7s%Y6R
zSHd+o{mUoY6Z^FO0qzg!N|;1PmVY{h01K@WG8!?pm@k&e#yk80{z*IVmh4g>C~Iv9
zhg^s2mwwBgyQjU4ef{emT~>o0)SN!B!t5#3DcCPq9r50nFCCp*T*4bNDGM6>2Ky}f
zq|5aJ@K>bd(9<SL4Z%XBPp~%nlqy|?(Xxt{E;!cgS^*%Z1r*G&ZvDh>icy*^BY06z
zfW21<c1)j&`0wZn2HT(7t+{il(PDcr67r#`#|~yw$#5i*_SuPO$?Lm$(tISSm~EpT
zzFMet_b%UNFgrHbQ3?nBX$ZgVF(Zkkxt_M}XpDOnEWuOg4T_pCAs#*{{o;!UP%da$
zp<YQgIW+bX_zBJuv}xE*5N?{<2}Ik-pCL+4YcVB7^&3sW^y^PSC5%a{2niP#cFYV9
zRy)(FNXTWYvb2jWQ6-E`qs13$0`9l;L|B?ljk-p=Ks6{=WC&^m9dcT(2KuL&4Ej3y
zB!DR@o3WR?#UOJ%&o@*@30_yv=BM|BLnA2p4FRKR4<j;A4HnETM1~yg>PQWZ8)lw2
zpqqyN%4N%HX_BE_N9k@lu_vf?p$zsd)ddklLsgLTD=+MKG)>7@m+bs=q;I9BtW~8c
zskdIM#eiF|-DsPDFG9LQ$PIV{p_Ap7&_(m5&fP^a;7zF`W!f-1Al)X;g5GyhD$=Rp
zrt}e&9hgN(-od*^ijhFZ2tRd_dF8GNbg73|`;HV4e0FtR+GVD+>0F^NW`{Cu6XQW$
z2;WlDmF%A>7WQ4VSOGQjfW8Qbi!)bWN6*L+>mLR~?b9h_ENZOHOZqf|)hk8dT)U)y
zryfE@#djuIZI^();gVJ5f<&!?<^^j0ps1vZ)dVnNB5%jrV}p*9l410Tb_rVW(T5%t
zOoQZN9y6s&Kg&eIRBt$u)-PQDjsV-Qy_qag7cx490Q#W^M<4^OCnQ+avvWRD94zEZ
zrD(=N`-M|(3J#+R>{vcZG@JMqvQc3shF}|og@7$|q9f{cceJ3{*aDCIV3J4uuBkTG
z(<38-WZYfu4aniHawXrFPgZkgz}0RV0ryBPfQYtxG+HpTV}+$&I`=DDSBA~KK%r&8
z3vh+;)7Gg%hL<z#<*tHX)rzTev%qL5+<f$R%P$P4%b8Rs&Vc@qRqN^i`)k<6L1{_)
z$%`308rczIVim3w9$mWNcwS8tJcNh9;uo=Qgw`3TC&8mW(bhojx+dlzl5D!`*PTRc
z?}hKy5VVu;MsQ1$UuWLWGzH-M=JN?yoJk9FW23+_^XXJHY#GuZ8zje%jDo^ek&}q9
zXc%>NP1ty{=H&G0Uvm2*>ma=xX5GB$=13a{`r!k22Vx<eTm8jIw2bvA?tInd-m%=?
zeYCr?yOVQIn>%!`9DHc^ePK1v4jSHc6ppT|qb=^A9vd?9i;+MwsLL+977JE-jg-w#
zEX<6bu0(pd9QC=pSH{)h#j5E|l-WBIZBdl?3%AUt_wTfxh3@rU{Wo3_{@^QhD~{Ul
z7$p_WDtWhLFr69b=~Yz`U<$wtVJR|N#~}zef#SUIfJhw(CA<DC%)h}b6e?P`0k)0U
zhg!pKIGplICe7}cng9e^$Y)b+@E{ia$F9wmU67snClE<+harQ(EzSWfA-2K9JIo=i
z5`Z(MngFJ84$}OgQoq&Xmiq$6+<=}<tL_e0^!ZJ9fPf@l)F&24W@WQGfUK;o&m(JY
zv@iH_S*xeuYkOqg8=c^ugYLIJ=}LNId{4{x+ot{OyMa^;4-ZDY18?Yyc&w=b8zzK#
zCW;m4Rv3Puo4*H39u}oHE;k~eX-_Lom2?eg1(rM@eS;!yrU+0lO#|))4~-ZsNp{MK
zY+Ey6ePL`jGJx&l(b(vA)u+csYL!AZ5p^xP7xP&YrJo@6&^1FBSzyOl`2gxVkaEbw
zyI_}!PJZU7gO@pOMNqS~Q0~*kcpzSm1!B=sFF&dJc`TClLTM4vc{DlEpX?|Ps;pL1
z{T{m-msO96Uh?1~UyT-Hfk-*_N~62v*HDr3g<{dn6zmmRRP3YKaCgb==Z`!RvEo|z
zunV}Bs+ePkg^jxU<Ew-0c|pe|=`(c?S~;ao*t<y>E9wIwV};Tw*MO$Mbm+QvehXQf
z1yhkbY_V3vjP5OyAYfaWaot%|iQBk~m;hcN;X4DsQfSn+n?S(rNWQvrG?y1(F_xNu
z188G}VbMvdseK#~au#$aGehMNDyg)Sd!Tqy7@($TM*y`U_K{IT>ntYxQI0}-%u3j<
z<ba<6$wDK#mg>#sm`9C;67jwPKpQ>rSgE%h4@T1}+=a)sJJJz;I8h4wlcn(2+7)xW
zONN*k?xkW9e#7+TGQL0js!^G9YuQX&F%rxN*?7LI@^f!kH&D11HirEKHs-wa{<@Vy
z$XRSwQY{d3R5B?9fbr&#SAGF$8+_SC;ZsGOOBfyz`9Nd=!a&5E!0*`hskHRqXPgVC
zeEMW5QOu)?Qq7W67MY4L3)9>&-kb4y(-nifh^DA+)e>+JS@dl;NlsauSnlJPdszFx
z_6+B3l*jb<2V<V(WUQP|<+2^Ycs8oLT-okmslC+W@Aa8>GT@Dec))}DNU|#)>mJcG
zcRu6h?x?M(39l=<J73tE_aMVD^soI_-Q{;DCcVjWCSQvL;yIbSvffgA#@2$FK-fKL
zl)dr&=$`hUNC!r`&7$FU#XWZ4$!?cB=yh4F`rLD^d<YCF!UkF3*|0QF@5O>4s+{Zw
zgdhX10;{;-3c>Wk@?(5H84q}*VK$6)NR_Ct6v5%*V7Jo6wuCw43W<Et2uUvf09p_o
zy1MqZ+Aw<);8l14Q?=w6b<`>HJ7w1|a^_KdN?U}oT_wPLdRx`92Wl=fW|F%=umLQU
zR-4&|{mK_TKvLULBjUcJ$Zb_cAMx$52>u|uDz71Cc}QBVAL+~jcNoPQQNA0|10W+3
z9}Vhr(MAl1Rg(xPvB;LJDwZi2F2D{*@|bk@U8iq8dU*HJj{4+yFR*})_6UJn53z^b
z&Wpnql7STIUCTZ;0W8tAH$ZNuLx7V`WOqIHLnL!1ZF6KjjJ_pMX3N)idP2pL95?M)
ztYuL>p;)YaCT=6EU0Dw?qtMrpezm7c%m?DdWXw}_k(=Aur)M&%I~9X&XAQr-<vZJ(
zc;N%O*Ok|UCxz*i-G%XJtQIu6T|X#W)sXG@vfk*XFT1H|#@af9g$Jg{4|)%~-tv@{
z454;ozd5~7;ak3J@`lfYH!IR|eJMpPw-7fJ|6u1~o6*#wUZgG_84@SBLJNdM!=7LY
z0W$;rJvCat6YwEITVX2{4nPhE1Fc{HULK3Gnq(!-MfkNf1VAtbfouf;*X006y@#_{
zG-#u((eKgJ)U;tvBtYlsy`ZmE3;45rZXQ4wa9!epkgV!f1EoT^D+DtpEB*(8GYdKr
z1;-xjjV6|QXf>ASy7UvVH(?V06WCW65?QS0I%t&!sMX90;Y>h1$`pZcm20u>y>K2B
zfH(3(xw-TcuiX?_jdgg^#>`Sj;cd?z1@di9mgjHkDFy<&@(~X^IMbU6huCMBeSC3Z
zVrgw<hvrN82G+AfSN^avpv8_3AJF3K<K;cO=sB@t;xzkL@br*$Q94lHx6=Y%*uhL_
z+$d8P(VK*txo#qSCl!NpmY{8>>A*;08EmViN|J87_2>~?=Rm1+WM5afWH)Pgj-{p|
zK@(bPI>1t~M=ZKbp)+aR>1A%h{(5d>MgOK?2sO<Ww%|_!mw~MpA~7=Dj>s+%YhMmq
zwO)Zg1>?7jM-mZ#(yy{ENTjMFa90Se!*YG!uE5TqL2La(Syg_3v$)G>=_b3hfl}#S
z4KRA7lpYQQf&muMWTP~mh}F$58#vXWde6x0nSh3(gUWtg7+%7ieJ-72H3v2TV7A7-
z=~2zjrc(B_Fs$Tc<aQ-ycS0NX0mS0KN~hV^!H03|moQha&*s4g$O|P)q)j6F*q}NE
zmPn|iPHB%K?OL3k9O&sR<ub7_g6wf+l=2?6iP8gfad4}VK?<3h8bg^-EA<J7Wa>@E
zn#g9)Pq6rESVjvi_`JYieZ7_z2{Aoa-hy_H<zhzGWi2dbbwOSQjjHZzfS4~agIlss
z)0JabE}*n+fjS3cYRoXN{PUH+Q;=hb^+;U17I|sfANF5BqbcdG7yBq3Mu14+Nd~(X
zppX9o$cPm4A}t4M*&td^MC%jlS!WFJhZ_zO3x@{#Yn4*IEfMsgA9#vQ(ZV5Np>F6c
z5Y{;&z7dR!fPl?7PuF0MRucAxY<V0hEyW`wBZXcqROrsN2jim=PdJ!KSyp>ib(0C2
z4wN=5xsbV_KcF$A(_&rubR`n#^SUixuP=N5vt|;0a|l@bM?sst(gSs?jKakn5Mas?
zi9k8(NK)hr=sbn!oJWKvL<y?g%%aP*DuGsSVw8m57ZLhiyzaQQdXPZ&k)di=A?Nc*
zd)ZzcG#U{J2n5U{)|`;ciBPLsb)2MQ%OQWlwhstwRm2z+t>F(6I!88#9}Gr=KEP9`
z)p*-`_H=kNW~Um~-MXoDc6J|J5Ajso7fNA$loG3zhP_s2x2Fe9<^I06-qEHPJ`xG|
z)95P1n;G7|csT9TuvDBObyM1hMr(ufs;4a%@MXM;8mZ<29uo_;!hKpOTR1=M4Rv&Z
zmO<F=-PlWXPP+Kgbe1bB2^wY11)RjTBxr8H)h?lvg3LKu)+MMXMZHj0(e04iHVy-5
zs4B^4w~TUH9_FNasT>K7g@!j<9;k35BuX?!H`f?KxO6n<Id}w}r99Xvl@jIPFQ#bH
zU@oB}PV!cUf??T}bq9lrE%W{X-F-*Cz*tgO`#UXzqX$p1`{ISJ{D8@GIX1waK!pX}
z;%w!B*2a8p*Dimj1z&*L_;c?uRDh@EqAv{V$F1~^U|S(&1Ow0h0<^6a7nC4-N2Pbw
z(a@u**#tVIL|X$PcvZv(9E*^ldJOArE)sAEf;AWa_lUNAM_<J<vmTspmW8&@yTJ^B
zHSAs9F*7#YUFm3#N4;*OG)LJ{3N8SyqVmuJs+)VlICijU4NFd9jE039r^`fjxS1x|
zQ3Lp6PjC-wi~4LY4^Sm2HEQ@~<C@k#Sj|F1xn7E>rWy^SMA^!pLtVK-SAU?>V6k*p
zHl*@=3TrXhZ+bmfeqXh_<Xm*z5EY>ZgM3ugx&yHRz1Lm2FcJ0G;dEVubeg?TPWKc-
zJr{=zZ?T*Yxs-Q5+-Z0rZiGjCi+xVoK~*3S8bBjzAR<O~+y@mwsCiw)V&kK=N;(C9
zVM{yM4$@yI8$ce~iZWVZ@fO&CKo_UrBZ3hDm2HH_|5{(>Sn8z(b#oxG@z$~aWUkbY
zW@1@&_b0>Cokq!Bh{h73VEc@{V<zD1J<}WT#pS@d^MbDZrEoRxH}%5fLrH(d*ZJ<Y
zKsD#`Mhmr$+{)guCtC9MDZJ}BsZlp?I@;w2VBbPEixh~WFAu%oO)2A8vCMht8ZldL
zkZ9g$^s9uj6PLpxGpbcKuMcT-u6)f{2m3m)wz7Zc+yqvkmJ5lv$0eO(=UVdU6wXB8
zLJ~!05||?h=`0R%+;p)df}vJ^aXsPOjEkG)6O@6m?*YW~_dKBq&TVfXy4V#pSl(BR
zqSdb}7z*?q(%iLqPo$QgJHWM9OQ~fR#<A|QH&9iI`AP=r+Ll(_B&F`}`R!PHyX|^(
zvR}3OQ|@3i$LyK(p*=m1`LNcwJyoAcV#AZ|@|p@PdwEYj)bn7UyIh+xqo~+C__$6D
zNKDEB*R)_a&QUL50s)o0Z=7Q{g{IdU0@?uMb-~3@e6k5{K+J7m6AJ7Ibe`6;w*pcV
zdZV4xTad$uGta*C>WOI7K@H>vGuP@7Jk~i0`-mJmP{<eaU8Q`X<R;*uNELQL@2K<9
zsuNN{Ys1+KHf$K?ZB|Aw7$)4qa~mo|Acp9ZB1kAVt|`f$MUS4FaJ%I~Z|4A_f>^(8
zp~<8ekO#Tk7VVmM5q!!0Lp_5#^X)a$KOVF4Z55PK5hHqCo_xY?(>yv;6VckNo2woK
ztiUH0Z9qzXrK=~~(G>}F`#~t~>o@+`?e)gm7At69V%BtbVW#Hgo&IR53k3u~aA<i^
zYk^DA(UhEY#o88XCRLTgs44siJUcJ_P2IBsTi=648%Yc&w2oqpK`4l!Y6h%5>b?BJ
zh8~J`dxRW@AyNh`s{mec5+<r|V;#}Z*11USH<kD`C)Y=}x{QsR(*-tt#&z%ODC^1N
z`}UBs)+(7)&<~*CJUic1R#6pbg(f5bO&&sfX|XtI+t8rkG(4~{l{a=IFrJPBhbzHE
zp{h{UZ+Jqt=)T3C;hsH7D;SPe9d^nApAX#`#rc4Z6-Kpz+3UNNa90*?g)^^kEYZ%e
z&kCAFp|Xi94+i@V#S*=qL^c>~G8NCt?Um6C3Z`<hw{{&Dv$K@$?hJCRaQ7fNnOHQ$
zO8au}-PBq3ZSen?bhLhGfg!d61b~g&I2ewI*#PW~wneT;w8M*KYSx(zCj{Q3$?}BD
z=B8OT_dwThk;4b~?#^c`^Z8OPTOnPGHj{tSH;M?IT%^^CMjqU$&4C%so)^3l^&>=q
z7Emg9ZCvCiXs%P!eEF_(dy_8J)maT<S-3|H%kIg%OZ6t)o{osA`jc3?Z@V=!)K*(x
zX?J-exq)DL#za$Dh<o=BX|}&Dj@pu^np6EYfC23C+k0|no6oj`UW1k<mqs=2vOOto
z)X+J`6<<0tbZjy0Vy3&4G8Ky%g9otkB^p-MNkiDc4x}u9f<1S3(q0@zSZPFyq6v(2
z3Cs53NzsjtRU(ACaTG8q_oJ-FFV?*h)SYgP!Wd^e9v@n0wvVG)-0NNKH3vj#X9bZV
zjg53;+wo)~9K_ZNJ6RpunTQpW#4yqce9+3+R=eQFE=jb>0+a*n5DXLRVVhZjh+x6!
zzQE?1k1adyu&d6FJ9sIzqmo=(q<xm2)m%HV{uI95A3B}S9c%8afQ?jId+N}pD9-*y
zs^+gmd&}4<g*H!m<y!#y(PT?2U6Ch%4Upho^kjzU_ZmoP>FF1vv<M9bjmi%`2ylS#
z8d1z~$nI%=@4M!EBJ=geQ}VF=d(bmUUvcCU%}YBZUVE`?v|rYul>)>%lZG~6ng0yy
z7o>^=Y#=f`lpaFQog9L=TzUS=yCF0PMhso^BUSm>7p6|1`Xc*x-N+hvJs3g$S$GE$
z4gSg!+s~voJ#pnK=jo2OJL~IO>p%ykb(XEW)|P=h%nebk9t5Bls$i)awzoijt)s54
zE4Q>B*e6y)1veIi#)Tor&g4J)l#rOxg(=nMU1UJKuYDV54w1A6uoT#+>9q2X9`SmU
z$;}YbM$@S9eZv`WZ(G)|`e@HXNW5qLbbhdupQ!HZOj{au6$2w~v|=@j4cm|aH?6#|
zQ{*8=hIO<Gpd3dhC|7I7)Zq|12b#GaRgdU2l91~!aqZr<z}<$MFTJ_a>tPEsMl@zl
z--Bis{v?;5dI~A2>~^WL-;dAG_HR@KRUv-8#jt;S<aTVpW!!dT{Q)a|@T?0PCalig
z_O`$$xNR{HHgn;+zGI%FJ96{q`aD|K@gL$hD9(qVGYit^>#os(D1v|;2$M-}NO2;d
zd|+88^dGu|%>V$;Z>kTS^<DQY$=r?S65p?PRwxusaQWWtw`{5vHjI(#GyT04GzdgO
z*eyhr7L)}O#%mxeLO2I<g^R~NqC@zIMiS&|nrrrR<cL~*uUIbG&Cs)qVgw;)6cex?
zdFG>2E<aY5>9SQ%bGD|3(V`y0swHOR;=0@2aVUH^<O5pnAM<*#Fov_MAXX2SARx>}
znurk2qxHhbLr&P0FJAeqf;LFXz;Q|HWexnViAOuqS4LFDNYIX<=vS4cAt<qlbxfT=
zUf;lOd+{v8MtMyJjG`VyJMlnq(HpH_u$gID=6SMrU=u3%VzKNkSfQyTm$4<E>!h2x
zTz(hz7n6k>yUu+4o)FRd`nng0;R55$3m_BSe1f0(3M2;;*IdE8L@)6(UgAGKJL+<j
zKX&-=;Wr$9{DJ%Ky!GVqP%$^uJyNb@Jum~oK`hRSh6$D-ghmuC&?8zTIe{K~WGek4
z>JMhIXv=Yp80+Xe0Xzg2I&tL;%aG#BG`iWwE0Aq;%=b@l1T@G!HfLZ@!v71)86IH_
z%ly$Zimd_B(xkV4<@=h6)zt{dbeCQRW{<ET6oxHuqv`1VA5c}z_UUEFo|_iMUil*w
z3;Cz@6j~v00jkXfv)T9DdbTX<E?aZE^cv!S`N}`@4`MMDyrw$u?X*mk-}Mo6t!hS(
zOr=kizxB#}aLVlHLEu{|4+dE@tmEJ#)btYzg#nFU`6;>tUQjTV87?IQ^Ms+ylg&Z8
z`3tD)I~Wq}%kvQ8ptI7iZ|o68Ay7g>&IVP1T3{CmNCQv|suXU9KW%j0X^r<SUuO)7
z(Q94hh9@1vQBN}I`0BxZOAFH@{k;SYi@@hBJ7vF4;DfDjAsvoQrw{5YhBeu~vKB1g
z2%8c}3a}%th>W(5>)o;xc57I4kR3v)Zex`!ox1V%VoM9`x#!HcY%a2;9muX9G=V{_
zty$DpzC(LOzG{~+4Xq3ak}|J+SM2=J+NetO&&x&h&o4;tu3P=EYCs)@M<9EUr#?yS
zE=Ncp{wG5sazTVqkTGf_^ozv}#4-T(+s7iUP${k0GV*l?Ma714X0f&~vWx_PwqZpK
zO6wI6o<;)gXoGRo7vU8#LMR&SIjN?W%OInZhOjnC^l)@GtKe|p{BIT0-PPIt?33zS
zVBz=YKfo%zFGWt~2a6h(YlM$7p3Hpr%6FkU<G(DhFqyTnHW^l2@wyE5hgQWX#*z`V
z16o(U3-`zZfyK<*fg84Uo(SkR`yMSl0*Gw`+FHi4lK_-P)BggzCcoPT1O9pRXP%TE
zs#{sCOXx<|P%B!?!W|%f!cJZ&+EF_yv>Wj&Kmk<%)P7oy_j-e(8dkBQh3nXn#f6#C
zfxgaC23x6_x^$AAupsuZYUqcjd|1eMNYD=S6R{D=JS`9r*anV;Ja1H&gd3$C&nZk%
z<BNlVQKAPNq=wyn5)(HKBqu=@ZpP||Gr6FZ>C)9em{mJQYm3-TX>&8p``Rx=ZEU$<
zhUWu@ZXhZOa@~$j7iTQlw0RV!D^xoj>wctw_>e1++NF$(n_~xUon&8W>!{5?f90=G
zDQ@nf3DhHujc>8Kr=#P<sTEIW=TLmC++hK|m$0J=f-PFJa~Jv(fOSKarAv41M_r7l
z@8n_#UM1|9O3Pgx+EX&7C}P=%Uo=yabf+lDrE%a6hSGi@+eW?SfT&m);yt^*dueuJ
zc(C9<k})*wr2^w2cCu@3Wak(f(Qia9iq=*&D+;vi4qgga?v2<2hEku5Q-#K6&e)qf
zfL2&CW7HTD4Z;zC-(WF2yM|5s0l<0p9h+LTHn)#bO@uVC%o<;L)Ej^EVbvYQDxB~Z
z-rdu7ZVT^t*jG*8;lX0QQ;*gC;XAOmOKg7*JHXa1xA$5nt9?`alH1wAhE^qu-KE?)
zD-7l{^GH3F8am>qWLa6+*b;S<nd%|bJUaKgOv^R6+Hde<S5^pk!fNHQ*?~CP#|Iz%
z9Cr;*?C<S%Vq01t{@dX78>D}zTg%wUn>x~3T&^JSGw?gpE+L^r&od=gFkw_7r^Q{7
zW#svWc>;BEze%waF&s<tohcZMS+IVzHueS+D24hNCq!|Fdg;{{rw748SnbTlvtT6U
zGqFb>zW0vvXKy-r<j`(Z@p^l@JM-D9t%WNiq?KeI>60|Ook5lHyWk?!nLjd&6E_kt
zuaoyXW&j{SG(_19cEjDkMsr!(#^<#J?mHj1wUoy$cPX8gEsrK-Y<}h*@|JQ<@me`N
zy=0-Djx>*UCv#VZn5(BWmc(W-{c2Ylg(r$rv{*RmjXkoKvt%B*p{zw;h`+zo7Y+0%
z-1OSan6l%=-tv()kKERF*WkCY7;w9wsXf2`ZN*cZxHTEtiwqoDJJKynOC-lmz9C}p
zqgb>1D*JI%<VY)sYXaD3=?>`wbqjk&g7MIbW`LeXYZjyzZP?Tnie$jIOmCr{M7>Z|
zH?2iRjKgN~)IELuf%VrJ<Jb)PofLOSx1U(svwLoKY`C*@EN*HM{04=RFv!%Q5kX9g
zg_<eEsG@*NR)CB(@m833C#E660NOU-oNy+Rb!cs-*|ZLuCPPevKpdlV5DUk`z$%!V
zdE2c%MeArsLz8Nb7wfwxMsMBO*)tm5yQ3`_47qYFXsdP{<i<|fg}f}Ut-(;*34d=n
zF|abXyz^8Lo|0n8$P$*{D0{|f1+ZL+glLBh?ur!-?CCO7=|pWcH5d(6k_UU2j^tN&
zm)oF)Trs`FV!e#EvL6p%c*_IDy>tDi_s#Ad*!jGx+`VuxA1;<H(k4#pjQ9y)pQF-Y
z>Xlg-%wv(Z)E*)`x0`lf+XXw0C5OZ(szIS-p=lz(L3)KJ6ow+i(V(`nZ)&2al1(RL
zLBBN0MhQcs#d-qAq{<M;x`AT?66iq>9J0@*J!WEe4GfEhDPqCzN)XWtZ8}#PEDm+6
z4%PY2u+qNEMp`Lro|sBSU(N1H=<`u|NZY-<cnp;g@4HUOUS;+e($c<!qF$+YcP7%K
zL%JK01OC%p;Y?&<Fzyerw;8hg?sZS>04#LSt;?q7igYaLIl0T}FgpHDi|yLcUToie
z(xYDaVP(MZlvP02rkV2>yQVT(@2)~!^c+c1?CCUx_$7;V2~X5L3p)xS>=ZxTK}F)G
zA1$I%F7P&CS7mg&$TEN?S{F!A4#FAE!_-1uBxU6Hz4mZMdvfFfSIp01abPXClwZQl
zv(;r1egd2Wj^%RbO5q=cHG<^W_C(9UpgHm^uw=^4fRQz;Jx~&X3s3{nhm~Y+B2pXW
zUS($gXs>(V9qU$dt*F#_fQ=OM+7Q~QJ=0<D;A%phWo)AV_<1$gRoO3lexDMdM?Hrp
zv)-b?mM8meO1lSEZheQBFKDl5w83d<-HZj)0mXCoA>WmsnyPPf$2%`*<2g@<t|K6%
zxX{LLtLZ?`*|;=ZAFyFp#ztcZB+)$CTDvNU2vH_m1DRBmu(GGW4}ulRs02BpFP`4o
zc_GN4P<W!n=0dM#PD8p*B1tY|h7Yro@9RC_gJOF^YUGx2S5oVpMl+hK7Y4$Nd)!*!
zzz|}pKs=<VeulkV89OUo9qOXhZ2ld`u_*57>SSE8eW%WsumnM7#Sg#V?_OBCV9ITl
zHvNuZfR@HV2lME2`7(aX?lAi9f9-eXDn<0HwD1mK=`xl*Vr>z%v7j-T@F%>acwOjS
z6V|xSFi6?9VFWT=XV~_uQR2wtdqG@axQOQN-Es}`wAKVxR!>E<L|OELQ!#`7kaEHk
zwlG9!H{~NBBmRiQ1oB9>mI@t?YSY?NoFRg<FDJvc;t6L$ijndfXL9LEX}mqDcV*E{
zrv^`yr??>(G}covy#Dj9z?I+VttP{XqSqC&PUb@Vy+LSMpbfti(6+0ORF_6>IlSEA
z2?Y1_x5dvbcZ3zczHdmiJ4dj=WJEDu`A*MhIC0xhb~@Fiq#vJm<Scph`{;K2inK%e
zX5F5NasyQ$r)WWu&JdxuXz8VPePGh43o-oORpJVMYY=QTtsD`#9t02^Jqb~a3*HdX
z{{xeWv1oaCy_=Ho@Y5Uj79n(CdTL~Fps&(dDr7o}fedya!@e(MOhqZ4!WZyHh&XdX
zVWAQchnX9UB*&OSmZM|)PF<US`reFedz8rO`fwp#PP^ll5e+9!k9rrd$kT1Q^ZiHq
zGFbC&cJv2=Q7i1fIcwD~?V7}H)4EX|2zf?Jm8w6ioAHipBG;>Sc-taoG85_u`c3Sk
z%QUwgu}rsKA)T*c{luRmzBnwMtGj@NFex3U#0hqkP<5&e0sckX0wNEXf-@jFguTgu
zFm3CM&1kO~f?P)xzd*)En;E&Vj%RXcpfr=wNRaWa^ro<W;o$)%E)Z`|_5cnFDVz{*
z@=i@tA&5vhw6G>{ZLPRM#2jecXJw9G+yW33_5)~sOb<p9Zf*ufJEAUg^jsvc+kCv&
zCwmjUMj#pS<`CuSHX^-_geP85CwBNxd7{tkHZ}g#luwi6Vbw!X6x=&py4Uug%SLl)
z#pm{n4c?ShyMlc#Un1S-MW1>|HEdJ%+PpoK3!u@~?0&3&<fhM8Ra!ttweB+e3H<#I
zX}Uhqfy;?@XGl7=$RWrOota7aB1sAnO~Wc&``ActcOlnoAl$)rkZXVK2Ey$v&SX>(
zaRm{GlYoiUQP=Mw6usl3r&$>rSKMh&fIYIkA^g=%gqv;5vA_B!J?Y0j4By+<<xMrA
z9Bk}2;GYvfm4~HHbjiS)qUmiNs@ihOEl<q$6vIPZQ)vONh*d5Q*GUY>w27PoJH<G?
z_7pUdq0>j28_kifA#Cxe!>JN?k7iF)JED5EeaI@@JN1U4Os+o{>g!!s-JV|c%d8`2
z2g=nRR5H}+#QCJ}>H8ONk9aypf3A1vt8bip;(TT1ff=|xb=R&x_v?>M%_m$t7Ko3%
zc%MDsV}*L7fND@{A@CB!ZiGIfW+a^9W|@dd`Ajry8&ZXJsbJs6V(~36MAF=pZ>WM(
z_rxz2VPkGBmL4e;v~n_LWh)kUr+h)Pt6-~^HqjTyb~T#%er|*c{mEb~k@dB$ej=wP
z10F5+(K8(ppFPl)LNx2x**?UZU3l&z(*F9MbP5k!bOVZmKSvb~CYIK?3*Uyw2wi^^
z840Hjh|~Z?8lt5T`}ZwiTbIH9wgiw_O*+DkP{~6GBwm4>5O#1O*F!FckS|Cd^pboH
zwvs?P5T*U_MXZA%6qB|bml!D0#Zpo1<8#Opx>=!~L%)xuT&ccFdo5qfCxdZrwGZhd
z*eEpgR2aHzdwsq*mioKVImg3=WWIY)bG4mA3uiPbi{96VOzJ_j>vLE~5-I0>@p8Nr
z4Jg<*uBKH??wPj|p;Ram^u(8FIT=v2{e|Rkw^=g$Ua^trsq>;;0le?QZ?~^vjZ8_J
zzzSGkEltDd2kn}&483-WgIN4b;e&jp`OVr(mCi&~0ki_NAJA<i&@^f&Zqx2Xfc-@P
zM1eP<gt_d;{K4Zf_6>%;#<lsldGqAt<diFrH`HHPm_Mt8I{f@sT!!2uzw#B{ix3-e
zxnH`<7Zw(Fy3!t({<c{}g%P`k=Z+$lqqP=GlxYAnpdI{p5zpU?ePtBtxq$SFd@zYB
zEPhWj%uvfDZ5pHcG$My;A(v_k_|O!&#FmKr+nXW<{M=$HSsygAh!24rkvx<rJ{Gb9
zserYD&LZT4;{FqsTCmNP`rG!zu!ie{owhq{7`}if#GV)3sMDO!`2*cq6<dOft}@a4
z*xcd*jBM?PVJX&dv^sP!X?Xl@i!Y%k)$4Zs*lWiQX#QdSo$nAm&$X*p5LkZ}wfm*I
z6^2eDiQL$YF$AMUd&FKs94tXCIQLVa@anIlDD=LxJ63ZT4HE_}fasHJqvY06b24Y3
zL=L*)EEj9#xw~n(SU0M6vM!(fNXlJwht=}my#Ph`p(s>!)__s74LV|f6MIa5?u#UZ
zr7zso>-QL;H-9sazFUp|X2XM`r61c|IDTh<eGWeTHtF%YA9a2{H#vm)Ywf_jsLhH3
zr9Ac#My`pd%CXH<%|phi(RxLcRq@VY>M+Q)hS4|oTyHGio_=A*u_ODiDG04C1$2BH
zyN%qIN~XZE0Rk6lMW<vdkZJ-0Ci9L%G0ceyqTvCM46eT!4+zvJCFqC{3GHuAE-OGp
zig0Nb^LHG@N3Iky!vX#oHjB;a{=eR?G&YVbuh*+Ss@?ZheYmgc!|iT&yHDR&+Oges
zVkgc$b|y1P#p$s-W4A54olK%-25EN@J7_<_h}}iYEF&ZqB$!3a9>5|ke1H$ILVV)*
z!0`bsd_o8@5+8QL@BgYgi6@>zi-cQtJy+MOdiDPI`ya1wC|2mh&Onlwz1g%IqR<bR
zIpSSHKp+%@c)*>Vv?5(#JnRXE?JSm#m--z`u|Cm}H~h$uPbPmHMKuvW;<Ujk`otBM
zn6n2Rrm@MvI6PBkF*`cD9Y#U>6(|f~^}sxt@+>_}a`;}YBxK2o%sR8v<^k71@<qt&
zw50s(0+TC+bdprbPtWh+_|}U$;Q2kYKFjqVyzu{Deh-gj7iZb~&|#1xh?2Z47Nx?n
z=fO`X$o~M_Q$S+U1_r)WD32sGMzh&mE)U%!QW)U!peMvf5xWRN5H%)2@#be3HyCN%
zzE=Q>U=LtYumb^^y&scZNN;3P$aELrG@NzV6G6afHDyt9i2!U`)ZMZ!ot6IKTSmWP
zKGQJR6ViYuZm|~^GWMmreyFXknEj(C!KlY%vqgXXC}eiK`Yi^l(cOlXBFPDx=vgUm
zu6PM9;G66t@Pq`o0<7SCKf<PX-qkblsF{OEUg9*u1lm$6Bs*+Ef+fscIC6#uEGK5b
z4K*M$WWTQ63bdCLmydCP6qijU#g@T6*xZCeAz&YEJl^m-ZRu<v5(e{Qw^GS;Q+9?t
zmZFl)WaYn$TiLIe$473!U2DHFzxmriQz&wv_FJ6nzt5MZONp(;bUu@&(l+4ni6`%{
zckn(l!a}2wwn9@M1K21Z5<0pFy`GeH%6TCR)OZ_GO?y!TWdGE}NG%cT5Bt4Xy`I5(
zKdK>+z<x@{8h;~znIY1&x8kNLc5&oqInx7)6Gi{CC*T#|7N_l~9QEd9IaEmoAhK*q
za^=X%3gXv{RJAFHI%^)e?10@DSPpuz1aOh1masX9V|B-A^w^v>7n6c7jT@~aaa5H;
z)Q%WV<{FUc4y12VNE~38fZj6$oQ(>@LZOkP<#o0R<pydFtqKv~xNeglRN{Wf2LZk{
z4RByYnn}_N4J_y^Mlw_7BGPJls?69Amac{SZ;XWE?3dp5C(P3`Chzr$bHR77&*leZ
zOJQ(qI3KXtZZ3{aPN3YJf!VzY6j#ia53WyOJIdsxLjKM`XsB8)Y?c8h@00(+GT{3d
z@kC=3gd{3l$HZ7Q9TT>fmhi{JrThe*+(0}k`!M`rHcZ3!rDhR*PcR{=qtAZ|Jd=|b
z$c^h6{4JbpP-cB~e>!e{?^`B6VuU|n2}LwTT*;a(BAH87(|8sukVvz_w9R`W6e1RI
z^pmUcy>FXb-lX-t%!Xe^?9Uj5<&dp|nnQ@GUlB$c)jDL32YLq33^)c%BNbUoBnD@D
zruq+MC#EM;x?lCFK72y)|BP^04I1>$no-EUnGJ;ceJ*)!)8lpivYQz!nHN$i!XuGn
zzJi$7a=9SOg*Dj{cR~sL`Cz7~46IHU-in(KjgFvw_|C~-^lKS^DMyj5Z<UG_i)Z&-
z#9N4>Rv_VA?MYU=4?3F^)`ato<pq=g3SuFO7$xE*P{0I~#TOv8=u1q4UgsUk7GH{F
zLUVC$rdr9QydI?CO|nUCQCBw-h?1ay<De}lU?oUvV2zFVB|hX=)665nfZ$Uu6W~mS
z^sNskW<<~0`OTQpub5<;)9D!}&0=B06q|>pRS6>u&a;s5A|fslERU7ms^qFSqE2U@
z)4Z`3_Ll7;`=g6<K6mTl3bw5Jtq@FRkJIrxz!B!Zv*M4wb=G3EPP`Hggk9rN5Ay|X
zjK5yY{$`<aX*snzELObU@+4-9@Fo0YMBKo9tqOnIaLZIH0A9>Sy&ubQq@rjg7~tT9
zo0CfBAqJ#_c{*XJn9cIj;(0Kgu{uX97FATNKG6%C8zT~(Fz`fgxM)afQAZSe_=G+N
z<Z78{TZ-qpQXTb%EtVVi4@EP`@{5A-Xo-hNjzfTF7;~V&X-XjBLB;qMbg1JtWv=SH
zk*h*{VUM$yMZYE5SWDR);Rv+8e?tDIR}>#V>Prr$0?vLUP|389W6I}t*{&pF`99-6
z0=ck}4SW1Z%4WhI$teZwjNP^xz0*Uk#MrC-AA%N91MSOSQogXh5W*G<aDVu-7E8JG
zm8AJU5wMIn9OIY26nlHQiaZHxiU7pp^u@=pdsN|j--Tr$k=;XjBe^c&Odt;h?Z-+$
z(Os7aC*q2-(b%&e01--(d7+ERXgWHzAJrQxfS8aw_pzt&F68fg?kRk`3smfTdE?TB
znW?dnLLQ9FE~rc;BgLng*FBi{$OHjU3?kVd&lm<5PETo!YaI~Pq?V3yZJkKzbRP5@
zxvCe+bx00)9pdF{3}KU(ub5?TW8W_kKgr5r$Yd!pzj@n=;%r`rxg<&NGHKv6e#HK;
zlJ=K>Zg42%#bW3xKBClz7``8fCf~z_e)kaZnZ8hZSPAClz3cNYz49t$VVFKJF!@cV
zlxe-dsQ^P4<lrsv<V(U-V|;*u>gVfu&^z3S1_Kxqsq<L9AgEDNGrOhRt<A;hNmN40
zfiq*lj-<EFVZei6s}mE#v8UBh8DGwSdZO_RwocV#5OqVy8j*lDkJO9(M>bFut<i~_
z-ryxvfh>*s-EyGpHrnJ7r`2x9UYYKujSc1O=1K;cCDw@4moUIjZwprk)3tz<bc5f3
zS+Co?YnQ$elP-wTxZPw4oDIc`<*kbWtR7ojmVkQE?5fW&6g~6}4iz1SjMZK&x=rqE
zqPQNE%W*gIQFt95v5vK>4PjeoHWu!{1Zvrl$V##cP5`hY@|kj-2zahD4RCMpd~$+d
z@%YwF*gmTZ^ONI|PzL%z!ACZW_Qqu8aM~sY!C3@1l$~&n#xY%3@$7K|?SfB85)L3Q
zlWM|{LY!drv40oq3$bW06b%O{K4LaLUCz~vHjk}RM4bQ#Un_QuL<Er0D%<?~6S<+U
z8pUAvg)HJkar`Isa5S6{?b}WS7;OZ9lvs%chexkr7ibm^SC*D1OXTG1T$q})Q#El4
z>N7|_i1t@L7>IQ3QP1_($McLw-`@!a7L$^_Ib`f&o(w_(_23r3OD2$|uqhli+)x39
z^)oYAMoZ&CJ(HB2%Y2S8z2u|A^pcBCV<Ol;h}?81uAqQybTYtm!oNgD3hxPb9lR$a
z^+YTbgmW0X5{ylYMB^03(%S(CSlkP!CYu}+%<IthG(cXoi*}K(pV15Jn+GWQpg?6V
z>*F=ep~b##v{+CPUveRU#j^0S)AY{$sK<yx0N@6Jpha|=X0JL-;Ye$46#H_<6CeG{
z+^AG8iI(j#ugk?APnMy@mntMdhaw04Ch<F<YN;EYa{<Y%D-+((=GOz}+jm5SQQo`-
z%ip#<;_0teN3O^o<Ku@v{kO4(>4$$Jy01hBOE1^vEaD&k5K6JL_SFb*+xO%{!#H%x
z3E`%2rLj)?L9+8PW?|<9)U}4A2TBPNi=__oWc4aVzSTayZw;(hT}j@!v9=1g=X7x>
zlcLx~q&LCgOtFjHyno6L2!Y9*11orD%_a31M(8dOggq{TLS0GX7@SJLig|Quj5$SF
zJ2fU+#>NfC#k+k$kE!XDYi2nYOow}h9&0n3(I2pduqBYulG;cPS$<dgXu>q>lTf6v
zbk1!sIH?d6b6h+-F=btzhSz8xm1E?)rO}neKAR`~obeZSkT~;4;)!2e>4$8rDRJq-
zg=qLnAi6s*fw(X+l3{vq_uM+sys&^e3uGTo2<L_Snx2xzEW$x*Ky0C|+H&nqHxprU
zz)6bQ>fpD6ar@J*)t6G1mu9CcrNIGgDrU!AkLVr%h$P}6CyYws!)eSnx0T77<daNg
z1d(wFTuqt1x*GV*aQSg_vFLuz+Wdt(X8H0U*%w$L>9dz6-|*Q)tSn+;ELN*`<uADX
zY4x}Vm4R$l{=K1z;lHgtH9uedj*Fc~Sa?**%Mq)?;<w3mJ611|zHDNDN%m-HdOnk@
zX$C2b7UUVf37o8vor4V|$hhvUL}@EfDrSst3J#s?8JG3@M<%lw<g`Qz<G_-hNTD~@
z1rk?>Nw8CJG?!6)37W7j{kF9nOu8J(AeCB&Iyg8~$Y$zu<z#zK%w>^;EvB=^J4xg3
zJN)1K`(%D4<~E>ihs$NKdVEgb=9!I|;xuCEU0%eT*zO<-%!iCMj80%hL>yz&7Qyme
z1Y-(frBEHM%XR$T(|!nNKHqh)O7U}#-_QI9SY6TXh1<~i0CPg3Yd>qkH}p0Wtin(A
zwumUeklr>3DTYF4{Bon<#e8dRlaPQRrnSw2S6tEC4mNE3zTS2U{bs5NK|gN6YF^XZ
z9_VC1U+8^(_~vW))!Gck^iT9QHfV;kRy%JH7MY^AjY5WfMQ@vgIre9I+bm?nl-_oT
zH$gI5U#Bo)`d7W}7X0Qhz3ma4=9f@cVINZY5!ikkQhP_}3W|^e_2qG_Vcn(zD{Ppz
zs%R_1B9d~C__ZDUcNJH*ai)V~3w4hb;T&(5FqfZo=PGJpDzI60pcm7<=5Y@d5Njc#
z^N}Dd>>oTjY;W&$mE2ZdsZ}bI!?jAaqAa$K+S?uF>Q=ke*=iM)bDgb{_2U;;N0ika
zwWG{$srOoYxZ5gj4Yw>*liMiEq2e`na8kY2+PHl|?V^1JUv3M>*uP4}TnJZM+sC^q
z8cobk2ba_F5LdJ?(wb1>b1}uo|Kg2@KYq97ey7{qKiqC9wNgcyQl33{`00aA8{rE#
zI<4akjOmcWghr|eRgA7GOrzDs=QX^~F^>Cq;WmF0g6{)<RUJ?kZnO@M+WQ@)TB=Sf
z-R^7Zad&^G-NCd!sFv!u;AbA#XCc5z)FR~hyvRkbFoUpP`jmh!8a(gg_y+#h05yk~
z`@bUL$>+STqpErWQJ;Ta5l?)GX(sGaI1(Ij;5@+JdpOfWCIv;<Rg9aE>9px3^05M6
z31mkn`d!7_y@vZgME^tHU%O%#R}u+!aJ}}dW3-8w4$+^+L(jSj@?67l9VAcJK0l(h
z6L%nJoQ_yDwr3+d`CJ8~dVt?HC!@RgOHX|^BPxI5yl@#ug4q=AMJ%U_@k|M2e2(xI
z#EK4Z?g+3XR<rvQre%!0i8uHp=1@G9J1DuChYuf?_CV+N)i+9@!@2xtaSXlB>tG_P
z#zVAzMeD<McSpI>I%*w0Xx&qYvXzVKUh6rUE?KSDcG^eUcUSjc>poNuTMAC>wzpcH
zBlJ4%+-n^w-JO<l_1v1We$eV@7q4j-6qV<QvZUQi@2jW})b_4=cekbRfv8Gz{<5NW
zr>r~O?!i>Ke6)4gKIk5mj@r94;_`YE)AcjW@u%JJG^G7p>=crY%Wy$>@<s5`(|%ew
z3F!|hl@SJnEWE`zkn#{B28xhGB_K%!+^Z(kAwNbD6EP0`aT4e=4VEwq7P15sS;pGw
zIcSxuK$Z(2wsqL;mqCzMfx6d$*e^j4Y(kTN8F?G8kl7@B8}1nBY*fA%yZ>34O?a2t
z5fe*hj+=Rym-*nBmRUgfRV3SlSXlTq*3Tla^kS&hm0$`>vJ^|R3>!cY%^=IMJR6dZ
zJMBtkzG7Nd_x4oNwVhU1HLt0Ackij<Mq9kpHeGFR@2S%D1AuG4W4N@_He5Pto7CNd
z9o2XjSDUtZ&wH)it}3;(%Z!ilg@L{V26a_qdmqi$)q?}oysO>2b1c5mmiG7BTZg#o
z;m*DpGILL@n)t!cRga}({gDTF<Q9JMuW5g;wXK@@O{+$HQ8n{3RsI@v)H|ftsW(UI
sxYTSe>c=Jh*d(~ICr<?O-7^C1U(LSv*L3{z|EZD2FZ|8-zwpif1;bzolmGw#

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-Regular.woff b/source/fonts/KaTeX_Math-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..0e2ebdf18af76d3f8af92b55f7c76a60e30a9c08
GIT binary patch
literal 23712
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
U&j0`b0LJ+;PXGV_0MWO6orJ?YRsaA1

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Math-Regular.woff2 b/source/fonts/KaTeX_Math-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..ebe3d028a34a343fe4d31706cf3d2644d646cfad
GIT binary patch
literal 20344
zcmV(}K+wN;Pew8T0RR9108e-T4*&oF0HIU>08bYH0RR9100000000000000000000
z0000#Mn+Uk90p(jgGvZ!36~cU2nvFVIDzAS0X7081A`O`flL4dAO((n2ZLJ-ffXA?
zj0e!$#zWi=EGo0tZAFlD!Vj|l|1%Dh9Q%#ipo%IHN=ri>jd`?F<GT8-Jhjv`P^O5`
zJt6~k@4C%W>R@m8(R87d`q@g8>IfTn7pb`rWmqg0Ot(>Y2f|`_E#C-#V*8u(ue&VH
z=@QxqgNvV3dkY%gC%m8f{xMg0y?!}G+wBG0qrQJgQZ)VV{bhO1x%7UwX14|8-eu`a
zBUm6%wE?Hbt;Jrz_V<j5Gjry0k~wlYM@j;hL;LVLt={`6$+8_pn<sI?=1CNwb%;C)
z@BsM$u;{Mla*J~7<_7q+`L8be<z*2E$K4Tma8cY5m$X!?pdexmP_(BqqjFKssjKg-
zO;_cjzi#cCp}92l2q8KSamzPChia-qZWDfP%Kx{@?|*AreO>iuZc_cS%NYk<PV4|V
z+>9!#*$bSvCqn1y?A{7O-E0pLsjO~3F1>r-Ywi<T_ReuZ&Z+Be3C^XPR%#_Xk2C_o
zE&h-feuzZxznEvyrQUwMp?}n&G>j>GdFn5ayp>&&spW*Fq8u9L470cC<T6@#-yHfx
zbrizwwg>SraE;<MKv~#ZEB*ZvT)x?HDRPSyjV@yHbb6>e0-*W-`yp;MHBuU%m!7U`
zNH3gAPyJ<NkXeN~yTVQmVH4&6Ut#~hUlYF%+IlKf8lkLIOd=soonhM(R6<!h-9mYv
z5B2=o*l%}Uae0`9KA95WA%Ax*is1)Z;YFM14uWW;B1BiEYTsSJAtqdi&Too$`E_-#
z^!jLec0ta}lGN^kuy;X<0w78TptJx;c>#q*pe;a>i>4e>pi|}oU;wEE(1~)SE`*RC
zpL^c(d-mi1@&D>T9j-zA)9DU91P#X2a*o<zKXz@V6BHCsOxph$x_lE?d){>q4H*W)
z2!#0<YWM#yW&i{L{M~-#Ye4}1_-B0s0RMSv(QXp>#{6ysK&y8}z)xO!=Ur70R0sVY
z;r}T7|K5w_6Yo*s9MnHp_Xu@+(|<JpKYw5Vd}b2@ZW^+|Qt3Jkg7`fkzu8@P2=G4w
z`cofP!vJGfXMue|HrM$wbf<o!Zgji1`>Ef)#2so*EiyI#+OyZNJ?C5G`Ag#Sd+{!|
z%@GIfx7QxK?6kup)>>t@bm`L7s*Q9I#1_d5CYZwbvajxi%2Hb&bM15A-ye>urW>YZ
zJ8ts5+=w5903u8%i{d2Ba`6m{)s~r+os$dTLMH%#HT>t40g%f(PG1pp834o;@a*(I
z%^(T@#O3MlzOHwnPKH0Z<&)qu&O83fMEGYN&4cJE1rT_OeUje&!`$6F%){r%LX+HE
zKGl5oiqPr5<Bm6?{KyU~=fE4Fbql;>4jzKB<kTaeWAWWBDtumYev183zx^dTbJcv=
z<M1{*g11VP-)5BGl8S(TIwtpB{Gy4OOkqZf`;JHf)8Eq`-fhf3=op=PZ;m2YoRpK}
zRzXY2z->H9$s?g&D4mXl=4M1oz(`QtoM7TnFrA`xTyz#h6?%pzGa~7akkQc&rREyH
z^;Tv^bxd|!F>hAWc8ZobTJR7rX*D8o&{7@^EblHDG7B-E*F=H|NSF}WDa>Jljvfms
zm=NL7Kjktt4iF@Xt>!Kn%)w%(9s6*{8M+4-hL^k!hNBrEO0)Vona%>Xl7glsXEW9$
zuuU9NZR*-zl1N>dRD*74jw|Jw^I<e=X^Bh?A4ON0OLv?niXw)NcuG4@3^0-K`L-^4
z4NFKwzwq~bG}aS`XfsDh|CGyze6bN@)_m6^Cc!*yc()siD!O!yXlZAjcD&n)?{)}s
z<*uBakJ*8OdG6K6cX*fv;+6mr8jAnOM+?D<38|a07%qg;FwZUY*(o}M>4#MDKwK4C
zk~9f2>P|*Vnt94*_J$~M8`eRBorU6MdL!t>O2N?4ZX_;2JrN0bf=GfgOn<j6thzaO
z5azr8jxpm$R$Wb=E)*=^^>m}~h3jz$uGb;CK8ND^9hw_(7;eyExgm$c4LjT-d8me8
zo>w{d>zv^JuGJ%0A!_>ZqkM-SgM^F&KoS6uBmg7@07(NtG60Y)03-)M{Uoe$Gp=CF
zv?XfoGi&D}z=TO(`?Q$?1)~r>(~w3jLcpd+wuNQSMQ+sQnVB0qR+x@O`_(>fK`^?U
zS*v7V1?Qmqx?Y8OtiYolP99p%KntMq3)QDj_uL+pIlp?xvj8<3b^S~NoE~`=QD1C4
zMKM3*k?1fb6yYk@Rci#|)rY;A|9&FXCdDni!UQEOMekS7-SLzGDk#0jY+GF3J(;IO
zYUXYhsjyVlMOY{a61uos>xU2S;!n|A?^QcOSZ|~dOgPk>l)REQWE8__Mi#V<-bOGV
z8<Nv8%P%-pA2i3GwDRW3Bvi0r`G|Gy9}xPC2UuoSCRwD@6!VK8t<ytV0n`~xhN%MR
zN!pBXmSF<PQ=NXjY()peSo6qJBl&S8(CY`FCs-&}Hy0=`TGNcjSgSEt{cvBQmMrF$
zjef~_bK(_dDWms_i-PoP^}HUuk@G_H-kf%P?s*I^!BkspRl{~vlj<_%SMGY2NfT`5
z2_!S~FMb7-twqBssMy>qI117<Lox`8HB;tU^Deh#!Ld4;8rAlwt!wu>iZi0Y4gW1h
z&jZyVw#bcbAJ(OAc1b_FVF>rs9h=S0a&ZcE<K?%c)xcC1tihXQqh=v`wrS=a6!?`5
z7C-#ofYLM9Fr(6&Y7Mgn;)SvcSCna#hCM8B-7CNE@Z1684{`_$dc@~@$1x=I1OR#p
z06hc$%5e^$7XZ*p0B93@>v#j8AprCW0D296aNGdsEdcZm0D2ETI357>5diuG!1QNO
zH8FkpB(wD9e9JGhcfN!YKH%Or)g<W$V6cyG0QL#+kNdoSoqjoDu&*hAwE*D0xBhGT
z{UZkZK?-0$1fbK8@Y5X`I&&Hz+{G!8Ynx}MlaRLzf`7e8yzl{UKJkAo@e|;NSpl~e
zg=+Q$xIOyUi0N-05y)`I1ZVMrW_fbIS?C!%VgL-YuFRF)r2MqN@?hZ$`qT~ikP%-5
z@vsYoM93x`=o>!d&0QB?7!ympl59CPQ&inNBe-;;sU%O7E-eTW=~ytE404OO_O9Id
z5g`$m6%xf2o@!TTXIG71$Pp{jeW|IY4&RI>0sEo;e7Vk8n2Wg*E}4LrR+U_8?G+L(
zHD*^}=F$S9tTj?A$mbLJ+I&0{sa^paaJhB2)(uw8#iey(K{<^7Crr=<7;Z?7iXtE&
z<ZN^H7Gg{&@qRC;QrJHg045d7{wHzM`O2!OtQJL_jJ?r_8=SFY$Pr>+W(#Xjo|qkB
zngT_tNzgG2$t%EV3JLH1P`p(zRrvxpFTjXEbYh2hPKfs^hEs5(BHj!XdHWmDpR$KK
zC=7x%YVMZRn4mI#GU~7xs@h=C-s)Q@d1XNxMwKubBURr4$dFGa$7w2NdhuePel*v$
z9I7MD=g_uTCbX-v@lxZ3M(V!}nuYFls#4-rhNmjWJPYNEz>Q9y=h4FoY&j8GMhrAa
zA<r=s`rPgfjL7a||C-e<S(X}jC-nf^Jw_OKtSB3z7X#pT;1;zs2JC`Nh#^VXP%X3l
zkJOS?G>3*0N_sFME6MVFi*l%upj4<$b*YIY621%yqaVt)EhRQD`!dRc!7M-?6|f8~
zg+d-uF#I8*(?Er84hJHHOD?P+{ut6RPdOqKGxHY})rA#_YlICx6_$?1Fd2l%RfzJb
zpO7K(A9CvksZAhHD`L%%i8A=7pj8i24`x>Ok_b7v`owVqd;#XxP-(fyRHqw|DsfTA
z-ZK_i<ZDGoEU0=A>Md!U6Hg~~T}7%jFAC8*1%y>qz$ieG*frercJHG)_#3@Ymm`Uj
z%i}G-tuw993Q#^&Q~xGh%y!AJu5Z}K2=J7AAjGct^?KToNv(~z(icV)L$wk`)&!k!
zu&4LBj3K|k4D~VU<%eB}<V7Aqk;%Qqn>*FVb4xpJHD9P3m(2Um&44|)t<WwBGUP_!
z+=PYDez64Al==>M+E#Jio0t%@UE2zzzhqLo?jq{eEtXX+9B1C`eh!zKZ7?N=Ypa=E
zlR-lT%2_J?K-$%T5Ii^mqeG_W@^>!0$PaBPh2I5k4J0={jy9}rLS82&znPTVWjMv<
z1H<yE0qNeHJDlH}GdjUSUP-&g5!XIK3e*bCeo4@V>ZmvyUjQRGmgF}lI{u-!%9bmK
zS~O_w${F<$@F<e4M^RsUNV$F7CDrA8@05DCgL$iwp}Gii4hkI|;WBKX=1N=JG+do+
z_X*$*QH9L5uAwb$#;g5=JDXrN%1b@5JFz^O0M0R!wdpOpP926>)7llzF+Uu)Ij>Dn
zz784Z8=PhMgCL=rrYHM!ilOgLzr+?s;5=3;4xfVz8W$*N;V<@^;d+o^pJ_YCZ3a7c
zkCm*g=Tw5K8(|-bi(c6<5wHgN143N)s?WzB6MGMfLuJD^8b{3Hc}HgjQ3Q;brTSRS
z5#Go;uEj643i6tV`gW=)_Iw0{QuA+7RzGvGC{W~*Ini;(=b`n;F2u5kF)q~B5-=Nl
z*R20;|AOC;Rc{FyD$;pa%Ef+FXj+6&fcQ^@A30ZaJoVHu+&aNo&dVXLfA>O19iQoU
zE;y#LEp_iZasqF3w}a$2pk%WC^waMT`-I^&J|a95MitSbI1i%s_+1gl++>Z3+BNTd
z7BB8PCN2bR4CIfabuh}^WkvC3WIhmK7M#0ON)pEuq$9l$xNH_!L9~&;CCWUlFJh+x
zu9=vF2L6DN9i$O(#y%Ax?4kD!oG1>@JQzy%s2;YJ6gGzO!-TpzPu^BVZLRE=3A@e=
z*B^ho<gGOpK%w1&#C>uk&qCACGX_(Ssk-OaS+bpoRQ-P;7IoNa^jzHx*d_fqgbPv;
zdKXm`Yy!k;ftB61%|IQy`5tPkLp7UEB#em?jaSu&{7KXtzD;NuvfG>{M~a6vj@s5$
z)3~p3T2A4zF&YsV&ccSl6S|5m?uv-FuH>ZP4Eb~mh>#m$LBAfZP-3<Jv3e8~@7ohn
z#eojrO~khE26%(>F^0$KQ^o09{!npfRI?o$g;*LcqLf`w;C6_q0Q$0+o~FHSY#h`q
zSrT)9SRuxqW7@+npV&-@0-ddzUBu}ziF39;aM76$I(?a8pPjm_q~M|r-fe2a>K5np
z^^qy99OYm8yo5myH5{Mzl%G6$qA=LnV2Z;p=_<-F$NHQ(t0K;Cg9{<IHVM&3W{tNP
z-mcZ@a-{<XyAu7j=khU|(9&<4VchE_Y5_@H7#PSyrc<e(H`X5G4Edluk-uck><{Hv
z44$q2csT{BP?4~lt)&_p8Z3N^LXS|XV@XiEP!Z~TgDn5ZFZB6U4KL}@xuIu>43My_
z&pD07Nhc4rX*9USCGv+8Zo#Bf74fBomKylV08_R&gfl}GM$z4G$`IDWmWWB(a!Q@A
z|GwUn5Rnm0GtuQN0d4>}Q}XY|);5M3$%g0gr1Z$=NaLHbGv#fc8Ty#-&JX90`sN*V
zkigJ^ODaG~?b7s+^E-x%3{E3hH`u$`5b!nE%5zJ7X@C->A2D`hXzPYqc;vus!9%Ov
zlF&d35vNLA5;OsUY%OW#Os5#CO^6|XP^!ovITU%_DJW99f57uvCfMOB17ju3*CRff
zb@3P0&R%5SgfZ1yw23L(oP~V!yq@2U?r|6h*@b)0&x7UNGD613fVoio3HhJudwrl(
zv$w1iou+H@C`*k3>Ol7NYA*B#N?<_rZ0d5fyzC|Fl1dzVwvGw0w(x4v6XQ{4<&sNq
z$|>sW;T^5iLg4?wWhp@sYEMGUOq!n1a)!u>2R3=etKfnt{MHsdW?5GA6z(5obVQF;
zx#(`Y6gVuy27joQ%++{A0QaHPvWFUX3>8zk6+bKPEEqOlLIoN;(K6Xblr!f1BA_uH
z$$6K~@bZq1=`b*ntw-TSd!8JICQx=G0SN^l3ZpSlWbRsnm+<ajO>wrzS6RcB6G-q2
z)r1~l+F#!FEIftwn8x8j+~%BJbekoL^#Mbyz0Wcn*?9A^rA(dNQ8p*c4P2x_V0};<
z_1$$oE$h0{d3(Wg)X6g~lz&g7&`tE{s3(`HGD28sjJv0+Oj7iLqDiyI^$3T1Ru0W(
zwzI=m__;C@C^?B{Z$6aE@i$T18G9mOEjjk7Ps8pc@@2+RN|G>VMfMBFaEikb;GmF1
z3HS2uf#Yl&^z;rjtZ+T(=M^sR3Jp8$uC9|~cuaQC_YfWN_3LiiOkcOYpeF9-8|Xd^
zBsUn3l~7D$=^o-XJNPC%7+-(f6BliMB5X1tGHp(^FCnL;isCB*gyahSULBQY6b;7F
zU>GsU2TCE56cxjwn!FOc3$!J+%?{vf4UDNj>n*?!B4VLzu)BwJR*${7oUu+H15`1!
zaz`8FFW;2U+&zuCPYE$~;={M@oT@~0z5XxOYP3_Hj#U{qLY|8_db(39^dzf0k5ht}
z;Fd6Ju_J1M0vw4`{3IAjK7ye_#G*xX<D>_PDS-cHsirqdSYm2~(=Rs+yMB3<t#<Ye
zc|D6|tO+_RnL`UI*btP5S-Q$%D_MZBJz;1ORC_Xb$M`_MvisTrhg>4dP?g}ld8T0n
zoM<XG=_3q96GY8rbZ)&&`IL{FpHl%3?1`eaFLgRE<PW-70+Dag_Srt)roVA_Rb?Bm
zRr=LJxB&ssy=FdwWlN6I91%9c1WF9}PF$jY8E*QzsSoZ3Nm)3q$v6(!e5n4#PUyU7
zsc|Q<^61^VfL@~v;rxZ>Nj-)v5+>6fopS!6Z#pX_jIL*&^9vV3o(U22ChojJfiMRv
zA}p#173ss--8BlrYeEVddKT)^O9h{`7VPd%?Fn&<8GC8VDVP~eeoKnk?T;9~(i?`J
z%om^m6$S{NYeFIp7+#VdzvLWaHSdOs6rF5-q|FiPR?iz202%7I)LD!?=Aq$15s%Ty
zLw6F&0Pg#Qk}7JV)3WEQW+OT)yx7h?D!nPed?9g@KzRsv+(rIcG>o@uY&kqR9(R!H
zxG%+tSyGx!CL-V(zpVyPVJ4Fr)8pho7I=jltEDeQJQ*TywfcUMG^lsvd=HbKxcqY0
z4r4;BBrdSm3s){YMMp?YMkv^mdwdM;`04Hz24JR(4_+$@`b1Ts8#T%9X=HG=N*(B%
zSocCH%4#Pe9j5c(@WUnt+<!_ufq@`=Y4A7HZ}oa-DJ7RlSwV_=Q4*=6-}G>iKeF(m
z2Nngx>C(&AMhC$U@ON^%d#E||a=%$~-hzhV{VBwsRQ7%`rG!#q8Lq4i4Hu(1YCD<?
zHc14~rogZ(vC^2Kv_p(K(>qUi!Fgbo(ikHepqfqOd3w8zN_cy*!_JZ*f*tFa5c)@L
zQw(>=mJ{AKY8N|M2c92f8GMdjFt4SW2`JfXVtU*wD*HA`)z#kPt!8TgB^B67Hb6Y{
zV~#it<YE_9g0sO3qSwhxvqTwq*tbdhKyc3AC#TfsdZ@j6lUFENgGa#Zsk?h-JU~Po
z^u^@hILqaE4;P`+@x()=W$-CLmV}W=KTOHtG%$B>mP=vx02~NWeOaLEt}Xp6lB5US
zXnyV6u9|{XNm~<sPz>rjvLy|9eU_<hQjy^OXm!;_)o)W5^jPA;G^ww)B<>5-*X$(c
zg_zTDk4zCzh5hArro#s@wqTLqh@ULpsV;$J8uMI?5(N9qFh8DvlJm(P4NOR|?QF(u
zPPy$nbF3ue*!hRSYWB5TE#{WF;6Y_1A}})mW=hxOL_Qu_4r-yq-H$f1HKS8G2lK0N
zoc>rneX+CcZ3{SN6&|jL$8O@F8MZ7y|C^lGl4}V#h=Zl_vIlyBTZ2GQ4`f!5p3Zg~
zfJX${!^YPJBJM@~d+9AsbJ54&dJ_dtTFUBix*P8r4?0*VVG!~d?&8n}sE~COvgqI&
znfJZK@Cb*NQR4@8|G<x<1T1J3G@>E_J*}E_l?Pz&j?!;@TC(NDo@{C9lN^3TKm%k2
z;<yC1+>5RErm!;8wm|sv0Myei6OT#D3W@=YmENpySgHF<TSo?rV}8E4AY7^MqCs0B
zk3^Y{)#w;!)7A?t+5)G_x?JuBa|}}><Nk0OFe;#$>a7J8N=j)Dl5Yd=0JWeqdw~wP
z0Zt;Q==C(nQ2K;3c=QcE#Bpf5`cCM8LFSjEt8cWc`vubw-5i{T>vMFp`bT{|Jg1)x
zqnvoG&`q~UcLQ-PNA3jhl@cLByyTWe{?8B0Kb*ORJG9Zn>5jKbVR5C6<Oi1t@g#7H
z!3-gX7{~H&`PiROpji%i>IM)4%v#Vfr)`#E_);=_psS@u?A#o<%dkBS>XE$<gH8zD
zC4L5Q6EwkR4$Qp5DRSD|LH%1Ta0hprlm$gB7ZLphzLL{H%Pj4xOELD9XdtSQ<6`G(
zySpKO$jKI<s{aN5c4yG5+D_9j*Zi^gu42$l5y!g1u}>}iwY+*_aV--Y>E1Ns?46bM
z2>~~unn5U8FMG#Mz-f^^Q_*U~47R*<>30Ew3I=5gReMe7$@VNf@S{@<uK-93I!XN^
zs{cxn9$6Auv$?e(y(6S2q>85SR-1n~LZF3%p!p$r{L^!;z0GJ0SCq|w6k{KOKAOh#
zY!KuCoR=wY@3xKFLbX|K=WWc?PG%2g<9nh15{*@OU;@W#K$)wLXyd^m&X}79nan;8
z9t9<hSGWlzqX@T=kv*Kv_a%i$E<^GL!KNjrSF^EFknme?!yK^&IPsUcvUY1H(AB7#
z3*r{*0G-{;MZ_CP-0ZXh<M3?{t7AA*r><^x1gD(LaA|J9SzK1y!)(5BRb!(ugf6Fr
zLzh8!0=iYYZjUzOe=Tu<Jjdg`o~<kTg&v8VUmmb!db5RT-)4o&=K+v*9qPrr$bbi^
zZFbPxJ04kmHx_90WWU>&Ueuq{%$s0Pb3)die8$U1n`UB;A~%m>LLyPk`gOHrvaV~*
zFkaWMpC24Z^DOPDl<c?a!_Tb1F0BFK(T?dKvHNsB15qv0tp>@c0QEpB;$<aGFFCCd
zN_Sb&myZAgSryof@fO=9*+5Nwd)F9w`wB3-76AzmGL;Mwlle!scYUxt;iW@jwNfnx
zFZ+pgxiHe~jBIG+I~<wmO-Z|FKXZj$&rG`+pwEv3mR2KF^aIo^VL8Wssap>*A;Qs2
zr-iM69#Ah;FVkqH+Nh_8P~?ijS@GikAf(w1G`{qzz)@+a+Z+>VVvO#8JsR1&egG!o
z$1rkr62d^{Tu~*EbZa!V6QN1o28B4cW82f9yaph-`i3=R<BC8Ci&mrv+zHIBsst=^
zC_p`~8p}NwrrmeG1&Lr%?WEJV?KHS}ns{7ITxjnjmCGqtu4;*DAvf}bUm{N*r4rcq
zRwp%Y`=-SLki_C0V_V9+7qFEWm7i~}TS%wp)TYBpqDC6?;OmA2tnT*>WUyW82Lya3
zEQ7?5-ZDTZU2~F((!NQUYAw#xRG}V&VC}NcN<o{A-)HzTXU+*uj4N`uAc#J|MjXRd
zy?%8XOu7HI$_Mo}sKD7Gi323Y1f`Iaep2*K8VqjSs9vs_q|w!_KQ%iM3o^-bKEZ<c
z1S~F8Fy17N0|bx4&7;29bn<yU)5XQm#*GlH9FfgoLb^yZcT7Ojv#A<AACH3?brig?
zZ}4$abLsZ4K*0G->Y3+iy&{MJH`~d$u*jUL;rqd0u4A0t$xQidWKspaP^I%rG;1`g
znaxv|)r1a*I@=|6z@p~|xHBYiVeyQ__Q=Wsl!GY253hCsD{V$m{<p;sfU<?vmG-hC
zt8PM@9#Swi4Z@wftj2(Ax^UhH$K`tAb=oL1V@z7I+hUc6sd|-!?cgj`=0_~SILd*#
zK|LQ0g5n(O-3cbr4d~Gza`P$l)!o44q@ngf@SGRZyyu_@G;rqRj^J#C>D!d4W!ogQ
zf;IW8+*zF}Y!KG7J)s6dXL>kT6<^K*KzaJ5*W+%vJu2+7sJYQnzJ)8;*9@DtAL4e8
z(E~iy_IlxcfkQX7bSZ+Op>GrOEM*V1<+`}M8YFozeMyP|)%<6vY?pHQ9#9ql1~d`I
zlpZ9C^uuuW1ec4zAUL%_GDX6YSgfsbOb7c@A#f<!krmBv=%lRJV|wgSzzsy2n}>^m
zYoKgRSm`*Em7d3pfofG45H#Z%yH^I`mwQEE_3EDEFXgRN8udPFWVw(XcCq6kdx_OD
z^}2us_W%^-hB5<_GSsQuk67S2(WdfdGHX%C-1je%{btr3zVug0h^Ij!gupNa<_92|
z)CKYc?3oyrBz+LMsa#0#HPf}@Or&R!jXx;7Ps>RUu<_a@%($V2H@tq<imLf}k+7}X
z-P`ALhe{XeSlG&zIhX#PRiFB9nWyFY3pn-5`~5AyzF+cmT_CSby;WpCJg+?Gyu5LN
zF%>!Vo$%5{;L7oe;zwzuMD(=H<L<|rTYx6TJjGo84BK@S7$05H8~`wj(7b+gQQCEy
zNdSt(fB_dP`vm6QHu-QRN6SDyf8W@Pr*}SkDu22xKm5%=CW8i&bZGfSmGR^CGZ-u}
zy)${fSG!tbF38mAKd-!6meqKHKf=-syR9>`EaF<z$m{%Zwz4}uL}RA=O6V)ikF#>v
z=NWJqL?*KD2({Bp&msO^Ku?_nZr5?|`mO9tVa>vvbM$tXA;5K4s&pTU`PRl?$`f3Y
zi_iOD!64Ore?5c4Rf$F=-=MamUs*4ERpaWV5X0iU5Nne-VfL}TZf*&81Hp`k0mz9!
zptl^@>|kg7P6d^!X_zrQo>FISdu_4m`xTmHTJZDP&nBdcgWua1ER~%Xwsr1!{`nY#
z$At60rf{AIQU;{3qpBptzWrUWd`cv8<b;=MHP2-Qvut_2i%fpDg~93Gdln2sJbvC6
z2_DI!!!-4~du5A2-MB_z^8bmD7rB5T0CY`hSEKF|UYt%-sNCLTwWn3}9n~C|mw@Ps
zTFUcHwDZm7G!TG5y7nCawqiVbGnxf3bdwU%#UHxP|7f1@0&CI`#+5fNYp;+{y48ik
zeOuS$-pGqC>JbN9ma}DhLqX}f?hW<CcN8+?Lh`Y7ikjW4S|T&+*`+j0go$l8EH5(|
z<Mw%UVD_z?yM$s-!J<xtxmC-VDw*eETadn}2=k>BDF0_5Fx1W)?-8Xm(MzGycm+Y+
zi!nM8e4Umb{RdkG7&2$aqb?NJSYd-M-(ZL8(m4<157)2o26w7}eU8I(SfC**xUBz@
zWT@Yw?<6W#ktwY)i+o~zxUK4Qm|al;qP(jibpR!{?$W|s)k|C)fB0?p?sWIqXN54@
zEabCc3B-U2YnX-y0nDZ0bLb<OmQkYY1&$>hO#-TLL6%ni72|xo=b5j9ON)V8k`ThC
z`GEM>yL(en4q~#$eoR2X_BXx(`YF%quw0Pi$j7RMF@R)8>EcdO5c>d4o2iNgKRZ*k
zmtpqO23aGvq6D|KrTS4OkBlp{Xc@#<IaQJwa8}m@7VmK$%-p8dF*)seo*)FMl#vC!
zcJYkj_&GF(0fFg5=3(&JTi^(rcp2OPa@q9Mv^bZj1jveA^N(7lI6StE8x7${ZmgWx
zKDI^DCGDkgJlF)oNop~`(VM`OigeABrFu!HxHEYu^7TrcTF-_|$`Zr<*}g!_o<_yo
zJRYr04rnuf-c`S-cTvw;7Wy;BhGaqT`0yXuDyRpsIJS{fQVR@(Sc!<J6rxBN1obGE
zqUsxEtOMP`Bj#U!?SY|cK@`;1HUa|yX51|c%w9LYhlNlaBtmm(?%%_-8^7Ad3TGm)
ziHc3%po3`1SQ!XtFzlai!-VU|2Og9*+cWgbE{AR4UnQ@E%L^LuRQcFZHxY_iP-eeb
z|GiSdcxp{9VY|uX9<EDCE^_}Zui(UC!IGL2;KOW?i)$taalg|BCuG~tOV1bDV~&Ac
zk2WZFm1_qT^`P~-?Ye?aG7w4|ciA=CKRd#9Xbdd)5Yy>E?OI8r#4<81)~J>%U8oQ9
zXK$X5Xc5-;?=<ovSYJxDKHZ!l4^DKKGQvFF`y*MZDg_ZIu#(@0VB|=uR(U#**sk&m
zTxaCwEnP{1pJwn1J*$$RID0p$0l7@ZRE301%Or%Dthn&~FvDGE4~1|qnft02g0t=*
z+}Od(R03AJn4m`E>82{OCr%Ka%$J?-U$9iSVT#y?pNM~UZe6_;EHMs|<r6dOS%3ge
zJ+vO?<3iF`O>yIZ0R(0HR2f@R2Lka`imzkEIyZOmX&59m=MQZ)&9V&dKMaXj=Zaji
zEdZR6p=om#1LWmo3kYFNDP-fO0h5)XQRK?fQVr^56jw317;EP`q1<$g&S@v_n)8IC
z`sY_@woFzA9%z(#DC7A@sSh8<WwuUe%4V$ZT{IHi@fy?q?0KFuSm!NyHN7d3`c{g0
zJ%+z67kx#7!I$-hdA{J>P(UEfjXXU1{qMbk`gz>`?c?GW)UB>8&d>6W>ef8i%}P=l
z(4FS_T(?<NXvGIzJX@q+vs^VEx~AgJ5>JH~2NLpn&*JFT7#@M4&cps(XLgpzJdwT_
z74k+oa_*hf7*C6U_P-3$m!7H?B_#L?TsR`eM}(D0|0ZD+RR1$nNs2K@T=nDsK@z}d
z2%Vpxr%DpoAyu+HiRS>*=J(ym%a&mL!;gz&CO4neoJm8HlYOy=l4H^;Db|k4a%A`r
z>s5u6^VqQz7L*G{Xbk>HgTnutR1dyR8_3%`p+POL*#4LFSDEYolj5YGH1c5y(Lv~c
zcCfUo-Z*|jxj?m;YGyK?St;{>;Ft{StJaqprhyNSUs$q0uT0YD<tkzlm*A}}7r5Hn
z=FS_<-_d^lah&3vWG2h-`zwhG5zfbA4r$%qak076%t|nM^;hj|9&}k)f4Z=2O2D1P
zWtW<C8}u8rrP}Q)+3C@AF7glvQHV_wwv5r(usA0k9G&`MHq2#mHaZm$7goGu{n2`f
zN=W$wBVoqxvt^EFHfHv*`NdMh7UOn?nX8wuj?59&bMUUiyf^dbjVMai9$-P>iPyp{
zL<AZQ!QZI`^sFk;@+1vzgIHobx==;DX&QP?@L&91z9rVDo>WhiUQ>$aLIlLoEPV*|
zoPdt88cfQCOmYNI5{vYQw#PsU!yy@QD26{8WEJk(dOj&X_ZHjIhHqghrnUHQiSW&v
zOi1}OUp?@hzt&&)o!-B)W^JO9<)ER`jETbLL3dU|p6N3qP6b4|M1mKlNm`;Me=^7r
z5irWB1k8LTW&4OCRJrZdzf9N|qK*us*xAy$F(DPwPSQO<%1ID{G-?M8QjLU2d~k-T
zij4+9+^1pYHr_uH4H|}SD-c$SggcMJ-DjJP-H^TCCnP;cS6xk#x`Dv(@_aKyXqQM2
zfC`vU3S82GTDHWfDk2PkZKhG{Ts~hnG9==%nJf?ClOar$F+RYsbHw|UOS4PN&Fd?!
zwBt!q&OD(Dl$KAL2)9sZSK!YuX?RbsPE|<nJBxKm1D{F}e6n|=e6D6q;M&aLy+j9&
zWjuHZMAd-)>suLRcfX<3g2@#QPxFhd%VKM@^VYr*Z6VwwUw%h|T2al%b3r(3I6bLe
zhu_<_^1Zje_^}(-B9@L7eHUkus?uS}SSJkltG#Q=#w*FN;ez&Z29JveEXPtLkS#M9
zA$=O~>f6LX*r_sxL!9i}J48jfBooR%YjI43QuX?EA_CX0(XIuc%vrb2@Xh>?9pR+P
zTYo<CtqAvaUvI_moI%vJBA!rWrC}?k=oWdev8ztR53*<?&$Pgd{9F*8tr><?rGZo?
z&m3Y1j3eq)A~Qtj9#M=uJ;LAcBij*ll;EoMhSuo_Dj^sX8cB28f2~cT3gIDLl1z^!
zGrmY)q?b9a*<_XPCO@(ePiws{5P3x6T`C<>iI-h19?QObhF{F*6?}<G#fnqk$wdB?
z(Y`^1ZL|MFh@v9U0_`YK<541{v@DDY!n}01@`Hw(dUv>_L?*5_c9Z^&wR>D2+!Mi4
z{?n66)3Ak?+@Lpc10p#B%7#^oa;}}rrxLV+<7S_aeVd^>c<r*T)RJP>s!|lhFm6V{
z!<z|SqzOyPyd^ga#1}-VZr`&hQ69krCA{)4vV6riZjECF^EZf;`Erv(88aHSf@=87
z$NBnQ`(?AM-kAvnx#FFobf@Qr*u~#-b9#41+On$kM_=^o+KjTZyQNyKOO)2?%dA28
z8_LAS>)e&1eRR-f3#Ml}Gj@q)2hzJmm8?j?LHZZTv*zyq!H8D)egU`O<r9X@IoCd2
zoq&;=e+%}u*Oz%uUZQbVKT9a)RJ`M$n6%_qp2|K?6YRY9(LEu{$vD*ut2w*`gsd+)
z_fm6JrSG*1cZJDmMDkbb@?u<)4T?Um2nWL)?Ba6IrXhZs$&Xb5c#31mQbF0LX}T&F
zrvX8c<?EvdYkkGE<TYs!J@SN4g2m{+A(I%{1n6~Dzy+&=31*=)`!gXJe8%m-2N-nB
z>V(0=Pd!&rG~M)2<Jd(2`U9H1M6-G_>U~A0f0hXJcv#S7=4HswSlXQ$&uHcivD8sd
z+xLSa@%VcK)k&_RZox`y{1_xn0hcaKFV<*zT&IzNI#BnAo=Eoh*0un3yD@}GP8)vY
zyFrot9MD1nuwbTv?U=@ETER{VO8|tE@WOg<NG;LTB;KbnDh7~f=vxJr|0(~c0{W;@
z1x{Z*5=`mm=}1Lp-*X@BggTFpA|L?MxNh@&iI`{iq?0b}L}11XFMXF-@iCMRCYTIv
zI}J)&&Rm;*`H2J>A&Kz5F5t3(+jsapRUGta*}V{j@wD!0cV=8;pq`=)5K?S`bI`%6
z1VtRU8H2SNt#)%)`y4$u^ZbDrug?$1v@H~<)sWNuKVkyyAsQ>Vh$pfx%oz-Rxkm^T
z&@O6hQVKH;Wlw$f3cG-5TybslvKQ9?6Q#%hUPB;gwO05n+gAf7%af6MdSRZSE>gvY
zDGr$U5+Y>4m$FW#C!dWWyMiPvbJ{d=xi*_2eHY9UaECUf37KInjoekxG$Zrq#ZdzR
z6Cg3UsAP6b&CwAXncJehK9piX97O)SD({BRZI}vb+4NlKi*&A{3lMRlbgBj(r##eP
z*ODc|I#DBDspwA0KGt1q{CZEyGR{cbY+kK66Vtn(9IUqcH|DOsL1hyX4~;^hFjUDL
zjXRY0mMx9PP{)<FF$5+n%dRIeC~rU0TRurfe|qBY-eg{djK!8MZLD5seE^bGy=TFY
z1qAVV6@;P2m6`YE%jYuXqZ!X`tmizzuC(0T@XnT_;_XTMs_=|AZnFd@l2a`!>>SDF
zv&m3=;cjhTpS1tQtT(uywd%-y@=7pX9N5TN?e<%#C$ruFAG_DFTH4t=S6(J{q^h|_
z&@bCC1gCiE;?mx4MD_C**HB4p7^4y}or3>j!o)Y#HXR26LlT8kO<7zf8VO$k?_OqG
zA#QG58J34enF@93+WhJnzmy6O<aK#dSDPc2KyJLPtlClflnGIjTs5dU7&tSTuhxh(
zF}l7|SE1I_*2WpdN2h2RWl64$wx$YKWtltVwKaP2DNeGP?qNjqRJOmA3<q|2S5i#4
zNIomje3}7;?`i0_=adOO<sD$r>ksddGCV@R(G@LC3Hhsl(El;RuU-Fe9SgpTxT*pI
zM*~e^DV5aQJ(p0^ofPSV#s2ndnVC!$gwa_2=bU_@H#4wIKm;Q4D+vhRGisN{{@&R5
z@(6SnDX9n+S#ukvZ-8*ux^>O`jj~#UC%fby3eOoZ7RG)2X0aGY?i5p>+pA|uqLoe>
z6G8I|9JacShmkINfp)j4QpGTSFkas_z0DHN`cn*He3At_C`U`}R<11kmpwsMe;`4?
z;B0-Pt-}YPd|m<usqmhxZDBdXgZaf>c{Um*XVcc1)<r>9&I_A~GZe@ArjwIpVJg2^
zz)5SJZ&LYlTT^4k;GUZ@Mk*FHhd_A%Z?6k3d5IV>>dWH@C*`ZsK>^S~Jtm4KWjsie
zdA1w6v$gjw=08%e(k>$0C)~43C+BbsoZA9MZhe!@k>mb%B+2ym<z-vucdN9eQ%xB|
z0`JGO<ikAH)dE`rfK>#rGBR<`hO0YvafGGJM){V%?j%jfr8r850u)UF0}zTfqmcmy
z5!rN$qga6ss5&l84!3WhLgK6$rJ7}nQhxr?gi3$d@ZTUVtNvW4_t$lEXwfC#NpG(u
zbxzko2gPhmUu1h**s$tCscBibBh(Wiz8hM9l5_Ju%>ORunwpPt8S}pc(pquxrMT#w
zHU2?wr%c6NmOEGDtLu5<o`{il%fHaFN&mmWB}J~qW1ZQWRHb&Pm;+dv0S`C83uL_Q
zc#*DLX!nes#FI@9vnM5Q8!y5nhkoj9HPDlfj%v}Jn(EYJQ{*)zs^QZoQV!@_&j`^V
zn_dX5*_{N(Y1z?9_-4$@1BI^?jzHi7K6&yj#=+OF>eG`YIWl57j)*qhD(mRIN`tHu
zJkp&ab<ZG$2L$N9D{;Rm#tZ*mNuY$R@SM<_v(2n3CieWJ?TjB$K-ehlFkY)Xyr0V;
zYM~|2%|dYcxl9C3c-D>0_zx=dJg>UQdjZ$0`3rq(S9+XoC)h?66sfSn?_iq{WLokG
z>2fR8l_J{{j;!S;Um_z5M*hY57A||r4{ka0?X&-)l!_y6jC!5&=^oat%exjSJ(Ebj
z_~_}+W?Y0(b*s9~xc50l|7%8`gU@s)E&crV7Tt0-{4*G%L#by>XOqHLVggpDTeSi7
zhAJV$36c@jwb_=HN=Y&Hv>$LPc_tALncViu=}9e^*?}dp?X{g=@#7|5KrVX)eG~^q
z=m&7`Aw5Ioe#WA#`X`z<!=l=hGYa%bu$IY-9N>yhY2NyR$0!f3!1<ypOVyXk)XOX;
z2v{6p{cqzldh8}8I9hLV>p66fsKpJn!eDW~$qBr2K_wa^Ih^ak-I_Tg>f|q*mPq_j
zF2P3jdb*vgmiPBrawyebkrIcR<Ikv7`dc#d-_a=8?T;9KZ}TQ<c+fdS_-Lpk;jA4!
zRxQlpb9B{p(%ItX(UE`ae+?=$I&VSw$D&r$J?Ck)F*8c~b3XB5Rk%=rt|~|Ob38C#
zk|qc)?h5nVVhd2m=X}g<KJvRJFsEt@%+5NEZH-$2j~ndPBxfYIVAMSx^E!h*r`r7#
z+Z(I(WUt(sh-Hr60oJT8#8ux$3X4jqjDdK3Bp_(tqYfwRtGmgjA#v)yq?}u;shTq;
zql{vM061ZDSW@4J9N6c~67o`Bh&&Df%KfUNWW|1gM#Hx5KPatki-TsXqbuQ$=Iwe&
z6cdVfsttJXyP$nZje>^r9}x_~JdtUUt|@5VpE#CzP?Pd+@<YFQi8<{D6Xo9*>LUXS
zaMK4L<mP1k_Do)3c`>0v+e780{u<(CwG>hv@dpm`Zv%W@&T&Akwz!DurT`g|FL5||
z6cZVJAZ}PglT^@MG7FAIJEVzDb8r1yOAeZ*ldXwLneR3)xb`-^CX_Lb-G5pbbT^W0
zWbj!>ndHo^N$HGQ5dQeL;|Ppn44fQYHh<}Q^+IEX#wFx$jid}x>ba?ID(QiM6TN>k
zdF5F4M?bFG=!_F|njUT__Zu!Syi&&4?fll-^YknGo=z6%NM-sWddi41A>u*dU@Qn|
zcqD@rc1HXVog#mpHIH!hpsAGpSjQ4aDakIiXoTlzkybbyHC0V)VS{J}Na4H$L`#1R
zZf5Kum+<Lr`gT?-Pu>^7JBGEAgRw%g%G~X>a-k@!C<CkB4rQTK^_K!?t}^Wm*_v7Y
z)}|*Pe}~Wb&D+c_rwKB5CUe6N3P%X~_MN9%St>o-v@_I1J3DDjGRvrnPAY>p&6Enh
zsTSHUsRC}rbDfLISii;yYfvbHUVZnh*Z<98iG_n5_|G)6yx^)#3c~2d!HpIh1T$JK
zY|jCrVb)_q3sTn&aSKslT-<K{$EHea|LRP4rsT;<rCY<0alD-=Z-BD7zHMi-nM@9t
z7>c=l_lirx7qF_R^S|R1*KXR@Lp^~ZqDD~@#?@CGjj9#agG}g-<66}BqC;vOJJ=q1
z)1jilic#e}r6}hU55s&R{W)l`Q;;2zeRXfN&bIFB+aPS)e!wn3AOM1!PS3VV)&}P=
zSUEYqLZ&*$J*x#D7hw)B*=l~1^jqCERC2F+V)1X-!}()L(r{RegEV@kOu0m}qT0{e
zK6uKio_W<*REC%JNuni2?+1ZCfy1cb^AivR!gTmrQh$XjH;`Wuy>Z&-PRUC*z5SE5
zc!@Sno^9fXsfe*O50pqk^cqUG>bZCF=j%>TT$w4x=Ot*&AvPQLBd=VuA~svu0*5}i
zMQw<!Uah^W-rbNA`2TE;;Dz7bZ-JS`724Y7DU;Ezwbzu?e9!4FcoR)FekH(2RA;m_
zvDHn5=dZGf$?iXod3YnN%4NRxL<e4Bzs@y6++p0C67+*Ih_l8yIlOep(V*ePYamZB
zN(R{6(rn+)23gbCc!i$=?s!d_4sQO}+d=+hGI&<k8;^m3QD)4ICU#C#7sDEhTqpvZ
zgWTirA=ezzzMBm;z6~NZdj5EzU>I~l6OUpky!+IwbzryGRk2{HyLh3B$g5|j-Li8j
z4XA~!0SN)40pfj?O8`FCbUy*4&0%)xby;EvuHQQk`R!V@y%3W2iahD)o-ZeWi2VZT
zcm&OOslzF>k2ke-u(Riwk{C>Cx?r4-?kreTWXD=`Ze-QyvHhIgyv(ERR*IGT=W6|f
zu^+MaZS4>u5aR)3-uJykx_R0F3lB`LFO~F#OJH=FGNU~lM${Zt``I8%Q)?PE>Ig9!
zxzI{oL+-eerUU=-sk5WGF?pjm&CGb9OV<)~+E*@0uJS!R<@p$`W7oK53Abgp(3I>l
z%=Yj|B8(8&xBU_=Hd?@fD$}CArR0vs-gGDw9`76KqT!&wsM^*9d9I<Y#`vJ#`F6wR
zsk6+#K%EOyeKO3;tp-$MM&$zToC}7R0TBq@Tkk2{EL+(cz4s8u#Td|AbcDuj6B0(-
zI3aWWf`l^qLU<Ywm%3Fo{B6_{qIpr_cRBKlS%QFVE;{^>KlDa;us8HMqg16ySb^3`
zEMn1d=OjWeF2DsYVBDnmA%u1|q7(M~u@a<-g2c2HaM2{)EmD;;RQr!#)Vj>m&*t`b
zG{qw!Ps!_{$rH3Rk5%|5U&qcT3sGYxaSeU0m^;n7RtOs_vu4j9Lr4)T&rH*TiuB;9
z;j865B^ddpJ}<0uIUjbn6o$VaN;ouB3?gu6Bf`#O&f=rQ`hC-3WNMT{1`DR*p@qM!
zV4S6z%{B<=VV}5;X606N_%*)X2j{UuE%5CpJ-oJ<u-cfc(6v&r(wINCsy2^$owc@~
z>zhWVww^y$f)O&lK5I)nGLa^givKb>{&;Y9TT6XiZ8bGTc3%cFzn=v`Km82QH}D%!
z!6Bi{g71%^S<Df!ANP{9A~kyTI6~ys*(aq$X#%_aHe>wMvHi~XH29T}6fbiWE)?*b
zwBk&z9a}MhB8>ocr5c0jIjHY@qA>X3_xpOAX4Hg3rH<lK2LsF4T)@xG&$pbFwG|1H
zWlxh5!M!#hGp;_F)=P4H^k}aBrLZUHak)Xih7xYl(1q=xs_ji@N&TwJATZSRxFwFc
zcM$p>fr5k(z)1sUM)#h|W9t~}_ufNAG!CB)8eieVscJ=i0Avsg7-^RpD8^XzaXyLZ
zC{Sw09z{?&$BifmE4^k;kDTx3z8^A()acdYkocH%Rkv6Q52g2mv)N4glc7!?9DAMd
z=*fPbtag16Wblm63M*Jc%Vof+XbWWa6mx>ds!>Kx8<5)cUJO>svQ~}0wnMOB{tO_|
z3j!)MPO0M!3eq<TgbC*2XenuPm3}`SALT6mxQMhwTinj<!{T8kStMjpyT(0mgj-ro
zzIbF<4j4h(D9#qd1)0bunRRK?>C$9bt46>6an4~PVgYu9M?5ypraWfBq;zi(l>C*H
zWurHXe)-e6v%A_GtA7vN`9OZDDq=<-B6iETf4l`*<Oe0Un|&Ekkgz73-w(P35Oc$b
z6ZUFLcw{G8qqnS=ygKyeBAu@^fYqEYFM)^y0u^|KlYXg7<}0dF2Yz%=7V>#A3Iqq9
zse@^4+R0u@FHU7)4cutXVXGWq4=Y5X>6~XZj`C$haYheYl=zIQjL6{PtUP3$rpUE6
zdwm$U=EjX_1NkHEicz-<G~ee@V#AEo+)&yBfTQFM%=P=G!?hF?8R~c@2rgJX1Vhwz
zcU;`4P_{_sy!^zJ#eao~6~5efLP9rFI-4}Yc2QL5RG3Q$70-aswf8jjOi6;k)e~Y3
zs)s4I1X6jG9u&ewEsy3RGDN?_I#2*F;`xETFQeT%I{PnRRqZ$XNohs+<x<V}Mxzkh
zNfuq{Gzs-}rz_AY!qMoo%rmi_J%1<%skau5t`b2PG4*O*N6?3tRrv$_?wdcG+1K7W
zqoKa4JY@LsWcnW&`vuW=$EV%ov_gGN2r#X6nsGczyWfP2mYG(%*X)?b-<47&YU%Nj
z4pAHGCM^qYEC1c1pA2_)G}Xi+9(Q5oVrc4L+4Oc*JF$77%LQ%3RzZk|pxkZIJlUF&
z0ecO#U+3UgYdU_79-phS0TND#k`xA*s(OWsbDyVV>Graz7zu6lu;_53t|A-&!|iiu
znjYL6=mXqd1eX9}vy<KfflXFu>-QMk<V`fWK>-vV5#q$M(qH;!q6h$!ytH6v)ZmYA
zjKbg$HVS%x`vIt$ST6?{Mp&ZvBgnz6%xgf+q8ZY92p<xQszuHS0%jEDEAjqXo%4XQ
z@aHc*93aBR?vdL;!~_c+y4gxe-}}rU7<(II8ZtLkBAB2D=z?!FVK(s!U$7C%7Uu}v
zeBPG@)~PdLPZ(E)(23}5>8{H;GH=JD6uDy)kyZ1jsz<?_MqDn9QTe^jl46@ifu|jp
z<1p-Sy9yQxhD2-UfUwYFn%sfc4Ewm=6ph|z1hc=aJV3bo%qTM8q40Om5$N7Q#A@0J
zmUhr_@VM<9t=*Xm?ijbJ7wB-V*`c+4s<)rIzUQETZe!4Hu`twD>P)d46>M!`{^q(c
z(_%!a9?pUPObshJ-Fed-LXdbTiyLRoxE)lLKZ*b{&Jl5^rhxjgboBE=;II|sqc^uS
z&!J^kx^%ty1jjgxFc2GS`DIVbp(I_MH!ScTO<2(DSK5QBW~dU(Xe_p3Io5LQz-I0N
zQu?q=P8O~*1xtnwPhEdVFxfcXA=7Q~G>dy79`LWO*lS)qgc0x@2`8hSw6m5fGAh^w
zBPy+OS!2bvSheKaL8j&oH5*Gz8sw`3V1SEVl}!f~U3p@uGGqw`mcD#Gx|K@IfLPI(
zA(5x)5mhM?<mcl}hbd(_Agl5%LPR)-O`KI0fc!<xEzXs)mfIeK$;JVIj(^5`02oi$
zvr1o=lV}5Pq}loqnxEQN9y$;%i_6ON4l1l-xr}gtXi28#za6;e++m23r_v4>dPE$M
z9u~U0N*W-jpeO~aJHclP{@9E>17)HO9;XGNDo+(AGAY~KuTkWEQH4i7OG!xL1Ip4F
z#Nzo!N>(l-u1K3}CH<H$6QSp<*bw$#KQ}j4#e)H-qo`VX3f*@##~Jtue-f<>+e$5Q
z`xs(UnUDcV54P~ZjHSc=RK-nmMB<9?z~$`F)J2A{OW4jE4teP9w@8kzCL7Oe?yQ3b
zq}bG#D;Npp8t{D|TU6etu5?zWKku=!%jyPJl|o1Yw>Qvr9?B9)au=%r-hEq@06vXR
zX0u=RQ@iORkV^_&dQr(U6ER!S>|hIR*OWx)5V(k$!p>H4y(uCJLqlDTP*o2+37)Nt
zvKFX^tij>^WxNA{!WYAYX3K>wB~Bkh4O^Va8g^kWODJ-z!*-f@%|}=Ba4#qGry1MA
zXf`^SL)klqbp$VP$Gquw1IHb*!CWN=1+6A$@8EK)Hyy<6$hnI@-e-c_HTJk?&lvSs
zoRB=GCuHPDNAL>5+`<RP$_%04Y^m<X39EZ<5=9rp<1+^28}|aVF7h;<$mX=;<*{EC
z@g*~E87RhO$8X1_Aw!X~=R<POB^Ii?-Hx>3yxSquF8E2)B^zXHJgeGkI7=#hp7^e*
zZ!WaLInP&x_#8y1e854{>M_e5q0ux_y%;42o<uy>7%N<{3vu`QJhfe+!(7;i3`TOm
z+o!p8(`gO@tyv+ar;^WaBSIKCD>T7F7{g|`(&sMBkrrUsGS@43=5sY5_XjG;K2{ap
zl&bG+$i}93e2&9rk0qknKua|D_LfI8UF+=9J<qM7lS*BdF&?((%$hH^rlvy(;7wd_
zu#H6wDS~2(FkS6e#AAmval2YhWirz2vyjmu+W@(dm{uZM&{}+n%_@K1bZ5k#lilq+
zaM`duT2NN1)Ye^TC$N5}t2Y&8MYAOI4!cE%7rv}2IPrp}@eG0k(FU}9vFarpkmC^v
zuglRw`mp!EJKfxmsOt`k8GuXp+-bBts81v>Q(3r}WgWbXT#DeOsjPOpD8JT{>lt+K
zDx7Si8lmnQPLC5FmR1JJ{;0YQ*kz!IN-6()RkpUJ9_EEj297bP(?k^YrV|QsjdG+g
zcEjBFYMU&Hpyo%#Z^M_*DPAGXXT~RDxt4Q#K@8ArKsKLV6yd?&%1tiA&Ep*uRFuEo
zjZKPSP3tb4?W);Prp>(@iohGvs^h?hEl@@>zInB(lr^+WX#+ugcF1W;!0JRWrJRF*
zf2Uud=sNwJADgFg4dj;}x-5H=5Xn%i5N2!G%S2azP_x;5!HK6lS#s&NB&hHVqHjKT
z*%gd$qDUcFo+}fS_9bpEWMD&Wxbn4IJH2j$JbAC=;yb9;wR$JQZZzuN0w6*xP>8(~
zuN%5g!DzH{9_7l)YCWaJ<#(-bv-HaYUt71}IQL--e9Ko@9ar73J(4<lwrd^}@gG0_
z{49wt9-iCZ)lf%fV3!Xp0qeZ}!XH1?E`_zS(blew6B$pIhssY0rJH3<IK4D7Kz2t&
zYg1T8yt#~41iZzix`bBP=7gVk8!=VfoD};CJ3uH`Mvs7i{_%t9aGz|vs~)GkTC^*2
zARLdot~FrWemaqrIlU@1@+LD5GZTWktr&#IFv?C);Rmn7Vzjn~eS$%ivYN)|N(0Y!
zf;@H?XMS%<xv3%=UNhxpp(}=-sS5ccDzrXV!m7?Hc!g301?z((a1RI7Js#|~8rLF<
zCdkLkUevQ9WPg-xM`C3KPxrxqtFYMO-IsAEcUTZ;&>(?y6T+E>%$C&#MN)G~DR&Z?
z2sMGNhR4>rIl6AOz^XB&xhAQ{xYV3o<ENAI+sg>DXg8z@WWg+Uc&XU^{HJsJI@@P7
zBx1o}+omk?2!V8wn>4a`H*e6IM%0Qh*%mc3U=K`?+@8p>;yBZwNSX1-;?Skj0^ipL
z1>k+W7uJ>q-LCv%M8EaBxn+Fco0Xb4G2A5)HkZ%fi*~4FMlzPj)D3A0Sb169hMN(G
z`}SIqfWS5mJK+I7;Nb`7v5gf&my&khR0@$c8q0=QkkK}GXtq9(;I)icN}G-jl6ikB
zsH;tJuG5f$0-jmj&zZruscqa+b@Br>HuDh@m9ioGt}aiDTZ^S!ZhHINH^Xdh76PJ$
zqujP9_e4g%67HNCfd)ym05_<mhjOP@-VNs-GBv4fveXy|Y+DQMN@8_JIKF=bYMEWj
zaqG7_Ao6;7WVtJ~Y}atck`0dvuK`)DvJGH^L$pwDCRbZz6WMh7{CU$ZW=C{OjPKIT
zb(sqg#H($w433O1-41P2B@xA;Pxj#qj&*cg#905;gN6uIxhN3>2;tO162xIVoBk$)
zbjO1M89x}NOmG7o%AG~myN2F}<1@6@M#Y>4hi+&k=gukJxYIY|47RqHIfm&uO8cOG
zKY0cQ73Qx&E{iP2WV*ZfHZbb@nd=uJj7HUaRmkMzOhdH7L~2}D7Y!3UiUZs2sz)SK
z->9sPM0th0;`xuPgQ|87)ATg#2-w(a2m9VjF-6<jv2=BkIO7=rnyDd;Ol-t5FYS|t
zV1PJ(9DosW@l|y5Ny}S6F~+0chbbshy^MD#%+DYY!mz|naR{vEqy@%VSY{5E7TY|<
z(7S~_dRo}#w)?P<*DZrXU9%<RZa4v{fdr-vNUO4x;al>y!)lxJzQR!LQ=;kV`l9T1
zd01q`yv6)_Fky(6aFQ1Y7)CBkV4NkeiK2zj1io7A7twIG6Wpd;QI;`48PAxJ<2~Qc
zeA+D5`qOnc0KYzFCPnA<BMFM)aDtAOks{q+a2-LB*(_!VV-c9-)J{#!Tax!`nO#Ba
zJ!rBO;)XFBLtTwA${SOzRx8kX3f(7%ID;%qF=TMaz!yWnp<d~Y`7%b~w)S1iJnn@@
z_(;~iR8CUjWsvI<)vUQGn$HH_akm;_h}Vr2vnU90lQOTTn-yut2@BmggCUpp9QDv;
z>jF>rJv%R&RuwicOd*Q_mvJ%kESmFpuQC_cmmqP=4I1AT^Dr|qJgqh^HVUo8TP++L
zquX>dVspK?UX=*!cgqnfd{A5~Z0i<FBJ30M1F}Opp;$9eUbt@OtTejSmbsZb@3t9l
zm`K+lk`|V<q;|Bn$}ox>{Yn_L#VhStR;KP_csCql2W_XBS!c#Ft2DQ26Dpa-0raFV
z0f>Ck5ktK0S|}Dm(l<Z*@VMGVxSjFr1#zWLk0@MO8AW&*E-$L~Z4w<1s}<byeyQJu
zQd*E>Wj-&PUrU;u-3kVG9W>2&ZgTvap2Et-8I=LsTxhKs)cK|l=_dG22I*)Cx@p4K
zrl|)HZMfN0-BR5m<aP#Z15JXgm9_aa94yym+N}~TL?e|XqqY{g5!s|t2sctsf{Bdl
z1`OXnV)-7p;)I2V?;3igjJDbbFw1y0%*GedWNJ3RO4GhHT9+gSSjS}*LV9M~e|cUO
z3SGjrG)5p*Q5GF|f=ZCm0d%k;l;KfJuwsgKL4Ynd_h68M1O7IeXwytv8}?e6Q+#6?
zSs8`hQwJ84qHo;hQ!s_W*WjKX%30@gbXQk<Nf0(!o-^&1clX;VHU0t1am9bLI1)~u
z`2MG$==b*x;lB~kcyQhCy>~{J?M(vOKY=`q0Ce-mkGig%;C$)-?!Nt-{;CfESPpzN
z3c3$^@Urjg>J`!WjBjb=;h)==Q1vv6N&X_=Ganc18aUnB{I}YKaH6-|gCTTe2~bYD
z;m5FZniX}^yvnc3UBPHNjddQttSi5R_MM@R%%LroYN>YJuUIQ{D&uBRYAW-WKo9Q5
zJda-gB1L*jR}Z1+`<m*;ORb1*n26eKke=8s)tnacqMrnPrK4k9#)T@s+)jpeY6u+e
z7$AoT9U|Zx5J|CiPfGh~95bxd!eQ-V&QLGvzU&lU8x$bWzV5qErI4y8?8&k5u-Y7n
zH6KH>1km9+5;v^~HF0gWV5I?Gdho`awc|~P{$B(A3m7}gjR0_UdRA>)@#nF1X2(Yt
z0T1}UO8^?n9hV`&w_J`6{))u9L6s}fAzpA@;A!}c>lzH0scV8!&PG~A<=ZgOI{?2N
z0V)^Kh5xw(Vr(vnb&k0dQv9JyV~M|Y8KlH5uBbjQLRSn6`oFF=Y?%ATrybYirCSZ>
zNul(|U@=WVEmVg?@44@y{hs)BEIcC?jpRH2Rbx~iFhp9=J9Ww(RP&GDM+P(;hJVmd
zv|sJaALr@ipW#>w)WSL(dfr9*UM=5)XR;jU@ES7ZA+?})_Nd&3W&C3pXw2au#E7!>
zI1ivV<jc1aBs6ERH~RV>p=igMBe6;fnNLS5u2M9P6DZ{5?L>SrBAh8cu*-)Gz2<EX
zG$nX0*ZW~&f<xuOC7iXXeU`5GlCf3f12OaAEHq!e3|)adFTR8-qM$Jq5vZ*Y#&lG7
zJ~Ebz9DL<pfyfdoDKzI?yu4PvI;vxJ1j^M>)!M@lzU%e#R+VAY@dx^)gmn7e)+I2_
z7!3(RF78ssBCWk|jR|4E9%cnI_X>%CBt1Tip)4b7HRV2MZ{o_eU6NlFmc*LntprZ`
zQp_Qij|StAYR96H84L&OVy}9JV4_4z88mm;nQvtwRk@0&G-D<MT0txmzJ>JO!VQL_
z`5w$ZM#QB%ADSpD(s}N)!g(U)&S$BSn^OK>eVvKG&@e2%wVeXB>$RUjDnrpf_^S#N
z-`1^#h)$9(CEN&IhHbfP77cT<WL6Y`R$matn2|omE7xtB?f1>E#ZuO22);0+98zvO
z?5oNnG9Y@M*WM5&CFKpJ;nD6bSdfzHN$ge(aD|-WA|=3LjSzx|8K7LcTBN+}bZlt2
z6ss(!#9j`aNibB$->iE(a!jfC7q&gqOM|BL&zd^^CiZAQ!i2IYPSPwd^!1IYZrZLN
zE-tUGZ*E_Def~gcFjQ7vQ5lXzWAQ{)bxmzueZveGo-k|zMJl&Iy?yJ38L_49xSpN8
zgCms|NM|s^vDh3gk1r4cAOs^QCKA_otaA2d9z6XIvkZ6MGzsnwF<V5q`Nf-4-g)IX
z!@c*?a$4kDQ_Yu+<sD2*joS-Ebtmq$MMSA*kDAEa|G!DMj!@}M+veg!e1c_(yXmlY
zdA0e=dqu{f88B>gv1`Xref_4xmSDA4osTa`_!4~@yHjKo<8F_#ufD1J<}2n;!8;$k
zb)4+_5(LldzAP_r2={5=YP9A&2tHhU4*Y)>6dE`W&|QyZ$RHr~ef$$zCZ7p0_dBQ2
z#dJHS>jLvKd>McM)}CX_fa5u?`i23|c|Eu?QghC+vL;-+!#KyY%rO8&zH(c9uL7P+
bsAcs`lnHTDp9ZHV&mrs1L!ES5y9WRO97-I#

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Bold.eot b/source/fonts/KaTeX_SansSerif-Bold.eot
new file mode 100644
index 0000000000000000000000000000000000000000..1660e76a2b6ea179340472720b3cbd15acf1ce9f
GIT binary patch
literal 34204
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Bold.ttf b/source/fonts/KaTeX_SansSerif-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..dbeb7b92ab57a2687b8bcd80350520205127b6bc
GIT binary patch
literal 33964
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Bold.woff b/source/fonts/KaTeX_SansSerif-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..8f144a8bb312fa160afff853133665554eee9065
GIT binary patch
literal 19196
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
WJ)+M50002S`7%!c0002dw|t&(^vvl1

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Bold.woff2 b/source/fonts/KaTeX_SansSerif-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..329e85557fa22c84800d38d8e0d28e30bbd6543f
GIT binary patch
literal 16020
zcmV;FK5M~uPew8T0RR9106vre4*&oF0EDan06sDR0RR9100000000000000000000
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%0A%O=B*fWL)kJqJP%j*Fd7KVqb(bRH!iP{
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
OUEB{h2~*r=0002H2(Xp_

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Italic.eot b/source/fonts/KaTeX_SansSerif-Italic.eot
new file mode 100644
index 0000000000000000000000000000000000000000..289ae3ff8b793b05b342aa29ff2d7c0447196368
GIT binary patch
literal 31320
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
G_x*oZGDWHY

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Italic.ttf b/source/fonts/KaTeX_SansSerif-Italic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..b3a2f38f22466e837cc0a1e8bfe166ab86787496
GIT binary patch
literal 31072
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
Cxgl);

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Italic.woff b/source/fonts/KaTeX_SansSerif-Italic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..bddf7ea6579bc13bd4455a14c5f380e69cbd6b50
GIT binary patch
literal 18080
zcmZsCV~{9KknPyEZQHhO+n%{&+qQMbwryK?Y}?%V-tNy=6{oXL=E-bEbah3yo4lA9
z03g6`6UzsH|Id0D{I~r7H8C+2*<W4oZw%)@m|QD%%PZ3}0RR9_{c`1B7>G7$(i+<u
zIsgCw|LOo4fAKEvdXr%6>Ouej0JZz8q5cIIP&|B-nS;44002lE003wy004B_8p^+0
zb3^CfTruxo4aENe!Q95f3;+P;m$UuusgAczKt6zlsiDblZH-?I^Do#yb9wMBex1L*
z=wD9o3lcC<pgId%7k2;vpkEGX^oz&SVGLLsd*fdnG|aE&^FNR;@x#~}y8mt$u<Dop
zY5@oU!vIt53~fyT0EB*Zz=Qw*;A6E%dqWQP&Mp7|q71)Usb9>uq2d)gIGO(DLK*z#
z`Tim@G5T}DeZ$zm#J~W+XdHj~>F$$FAM-FnA3zj?&aPGyrsxOvV|K)7;4wBJA^<o%
z001Ds84e2I|8hKE@?r=h--dgQe{?luF#L%q^3ecF=)v9q0Dr6d0JsBy{@UMz0w4ll
z0&x3Xvj#Z-&+%WrQT7Z+KtM`BKzWoUJTR~@e6X2!pTXGJkUt0(2F5ltLzf5i0eEqH
z2?GNYMc2=4)$L9oVdNR^AU!Bp=r@O1{xz@6KYu9{3=BY4R3wMrnyd+o5<-e7p+C-e
ztST%lEWw~F$r3?=D+)#kX6NZQci{w96p15N3^+q8BVgE077&QR`I6a%1P<kY84L2s
z2#fm(KW--Ryl*;Rx}2{&Uvyj$fbb>nmJ5hE;@P0oP}q3o_0QOim?Aq+>ZFtJpsfKg
zM~JGj{_2jrM=TPXSdA;$cS+7jObi}2rdo5{2S%bf%6Jbg<21a3h_5EBfGQ0|Y!gm<
zXSFkXPTC{aRr}a5T%S_IX+E4NbA@wuALmw%HMW?jDi(%~x7!iZ_{v1}{yXG5-`>vD
zSmGlo4h6w2HAcFB<~BLDFq8%BOuLUL#?&?r_wul<noBZKU6>j-lzOfkZl{JdX`1?G
zA;4q5W&G)XeDUMmJ%K)@TZ}u**i2#{Npy+AE6qCG;<iTte7*=bXYhea&#jX;9HDYa
zrCStqCc6kaVR|vOm<(^1ufDSj`uu^rg}zqw)cW7+W?*3EZ-5CV28QqobjTR^Mgzm{
z--H+h6i+&2Fl{i2FpV&)Fsv|I=RY4mo}Cer5tI?;0rdcLygv1ij?O@DrZ>{1Bq$=N
zB>4RG^YatniR$lpiD`t1wC9PDzMkHmPELHLIngB~s39mMc>JZGUo!fG|K<1k)Bp4F
zbMv|LrT>w)vD4OD?`Qn2^Wpq9JIsIbll|d*JbT7pibuj1?u9_C0R4wK!apGfuqGh^
zQi7p?8UPFuni`uMoE)7Uo*uu~KR>=Myez#fxH!2fx(X+VCn&Hmu_3Y|vm>-5wI#MD
zw<n+=p+2HKqdnwrN;7Owbq;S(P*GB2RAp9YSZP{oTy378fPsR8goTE?2+3R^1z4m2
zBNI86Olq>4N@@!79D0xe5I~id>ev6f*Q?duoEODVQoTv!gklqe(4I8v9WytmlawI9
zWFQhv(KiR%wIHRahvhu+=a>d}c6*P<o0uQjzngsRO|t|NT|+I&ie9d+OMPCF#uWmi
zyZhinEO?pCTC`YNoayr?(W*n|3r?><lPO31(4zzA&&GTvTgD;AZ%w-G(?ikQ;W8pc
zTuv3lB5LwaY$vKWFKRQBa(C`pZ@^ocs`UuUw%}|wU}yzZ#g-XRB&8xdn<A_GrRK2m
zY8f9qxDgl%(V;VKz!6<R@?@E`%$x8u6){55GL9IMO`3v&7+feSL9WM9jWLp6HUN+Q
zN*gbPyb)$32y>Derk#?#`KaGYR%GXKyl^MeuCKj_$Ui!`HKfuHR96#NY2UeGj3Ja}
zaRbKExLW0}7jzXm)^4&hSz3(LCD(|A|HW1|`-z`|yDs$}FK{GX8>6g!pfSIM?g?Nk
zil<c6#nx2#x}zL?*h=JudJgvFd`&u|HNzxxzvV#kl^@B5z@;4Aw@9orIGmH3Kr_{m
zSCz@R=b}BJ9rWDWm`|IbxKi-5V!8ltA-$?I;by5$lo=_t({Zy93!nhWxx2o<09b&v
z%vArUA!~dzM^lrrNQf9N0Pbly5+y>9#1fRx$x^D-DVTV%GH9B~7cY<FDcsx=xFXkK
zxxSXS`eCkWH09|f$iyA>IZQX5+Ag8kVdoTzzvv#{9xP)Lbw#kZ+ppak_SmqINPD+|
zpnb;K8@O?jgOJN&=!e`%UwWPlLKezMk4PIA9n)i($))}<ArT$ji#=E65+bimF(FA2
ztAi-`rSI%q!f4!PM=v!Kn{wv3-r>(c+t>QmARI--s7XgSLo-`WGI=kXa;VYsH<4%Z
zfeO>uvfL#5=pPkjowqnCG7Y~%q0ljKm=qR|OIcMvaoDyhm~5K<;K+-?L1&wGpI9oJ
zjfn>!TSIbP!V!~=iDqyNjk*Ex<clHkr0Uw35~bqe-(!lhoT%VYGIuUq3;f|HHO0f^
zaY1rj5k&T3%8YnN)q9K&bug*%f@Vd}DbfxNsr%zXd;^&JAbh--sk;MdDV_OeUy$50
zeDy#$Zbi-;Y-vBNPxYPn<-^2wh&Z}IKMe1NZi>sc^Ep&iPIYICuii3>0k~831SI2f
z3aY~K=_rNmv!~342s?O&6-KoA`HPbFHh?cxnG8}Eh;P;qvaWl<TB4A$Cx_K$^wGk^
zZ9&dW$khDs4<Bc0_e?}hL*D5sli4u3**>6>@+F&ffftY37NsF)3fyN*`g5rXPe=4o
zO!^jo;#|Sn9^^q17_)T&I8qjtUG(6Uzz;bEqD9Lz;UMB?4-}Q}wd%G6UMef%Tbokl
z>kzu)Pp(k`1M*&`@PH~p7WPLr)Hxm@7L%kD#}+FtlgmDW!Vx<KL{@L?_5J=51MN^k
zd}^aVC#S3IvP+VvJY&&^Og)@+eb^;r`?C*~ba2Y;1;u3!OIR3F&2@<?Q=lxn)$^_&
zr_aZem&ly0sH&6XdgoLfYS)5{=+ITXGlE)FDuBz_s%s1#Iyy*y^#qfOSC<)C7zXu=
zP_lm1pX%Ru^sSJH4<&l891MzP`!U{k41R1mA^Q5_5+-Hay3*Omd#+Ch-=K8G=zYB>
zzHz5?oDFkp0CrSePz#3@9}v~&`$}yvO65_~h?@cUReh!~{bvDW!15}4%H1{qJk6sx
z`TE$LF)kUx`sscR;|W_I`jp`<sWS%1lpzAsC~(^-4%kb^;4bwsgL_{#Sl{Yz6xJC-
z<TuJZ3c6+v7X;^w;qogGn151ChxZV~7TB?Jfj;HdmDjK_y6Y~)CVqzRn!ChjHF}oE
zVtg_eZAN@T*RwdU{Uz)%>F)~j(}+)q^ej(qza&gd#-}P*?vQB^U*0YQ3OrfYjvv!k
zIol6_+ELc{zcI<}cE1A=g%L5avHl_0NDdAR4$L?xHs)G3n<N91MF2)tJ0}Jw0gWOX
zL)4ZfIx{dZF)(@j^j=d`Kj46wnZtV7z#1Y(eSZP55wUaRq!=rLJ-Ya>C`wq|NdiPd
zk_5r#_{iXJexv`j_Ybi2jTl)z-wFykfSV@C<o`Zf`vB?%PA7LKn=%3dEU^z9!9st?
zWC{hIGk$9QKbe1eg<b)cz+vS68$zM|U)KSs0t^RY1KI~(0RaPH1F-_R1Qh^v1<eHQ
z1HA_e2L}O9hR}d$gEWF-fpUeGf_{b(gDHdAhc$ttfD4AFgD*qCLP$h-MRY-&LVQP3
zLaISJMYcj7LXkolK+Q!XL+e9FLia=;z+l2i#yG@ez_h^3#T>)D#u~tO#a_a(z!}4}
z!qdU)!big|CV(Q~AUGyeBFrV?BWfeYBMv1&BXK9`Ar&AkBts&zB5V5XYve@aLgWVI
zk>vXnU=%zQP85BVaFha+Hk7fHeN=c<N>r&-eN>;+64ZS(EHt?^Lo}DP6to(&ZFCTH
zICKnjeC`{|T^`9g>OSP(Jug?y_O;JG`W>Ae&)c0#i5<(GOIq4W(ss6~Hset+81P{K
zY#5_$qhSewISk0nWct>kX*dN!X_<rZ5io?v4DX?*NCFth5tssYGZ0iVZ@OzMIyy+#
zvzg7mG0w`CpRTK4uD@#XZk+JN+n7cj^+~Ztota8?QbBgd3<`{D*O*bg3O}<-Crk@<
zzZ^07rV+2<VuO+nq0A3;He=t=4?5vlyK#I2fSu5{N4RDY2Wp*o?Dx=t*fAR(pexn)
zmrZ2iyFks0lvYTnN%ot$^zBt9Gpk5@cr~crjEOU%z0#oNEXa46)%W&^Uu&Q8R{i6R
zL2ks`-1_nc-5hDL)OU%d^C5zXUvB-Wd58e~Q?$oOC)-UV6F*<mtpKf-CHqRp(dq(0
z4@JC@>|CC3h1H@IX;UD=hYV`cy|?N0-9URj$Ot|K5KYF-X{<h2*6uM^-EKEPdeK+i
zqPb^zUD_cVpqwA*Q{zo6gM>`7hR37}X>ypfWxFU4NRr2@ohz(zP8{Fh1b|BJ*x{}{
zp3cq(te8DNIYx2${XSb3$!|SIWAU~-%?<5p)SUk&#S~A{g+NiZ9w#C<kVr?klj&vw
zw7gxPypxdJ_F5G!7zke)H7nN206G2DbDTt~2l`N{O}<M)<uQftCjXm(%7nI$74q!n
zkvIK3@ySDvH3bCUnHbUBd|jHM3l5iAtuI5FNwNKh-JVI}WviD#UM3KFj2OV$n)yM5
zt&(il?V77jo+&)g_=Yy)u{XfQ(>BKE;`F9mZ25IbxyuHH<P5metl+Ej_4_5rieXav
zIj~<K+=NXEgzpn&PjsBDwFjJs=MAMkOZBMx2AC*A1##Hq<vK3$FKMA4=rB~X!Rdy&
zWXxx>_Muw4vQD!m6ajo8h3@DI9L>x$N+Oi}D<_=artnb~xKrW;dn*H9;&kyl=(w(h
zOuQBsvwwr=I4e*xjmk*86<r)RkjlzJh6|A~s9RRJnh<@50zBERH6+fojKJW*GY59E
zBwe<8rB}sSv`%im%QqmTyL-W=P8KW$1sxBflB5cQ5f&|0KZO>OX076*XIDR^5ohlt
z!R|F-3W#cz8Is;ODdyzj3-Vz8DuzSkp~jppNKi!F-_mLO4*ynW`nXGP0s{nCF?ftS
zcm&q+_;}I`21<uLxc+TF76YBOSvejeQ>p+Q1kFYdTG&RzIf;S9U8?s9%@Blp^Mb-p
zA4ReaIJv{z?q}7W@TNabkap?+2Db)eS;QM9w9|{Yrky3E@kq16k~p;0MBYeBAp)J^
zl~MM>K>~?rR=?f`1jw>t$|+X-7se>o5KWRb;ic%ms@gYGm=dW%_NC1oY@|}AEgigP
z+1CL~(PzwdTKq%zWqM(9U09B(RjriCDAA^<x6zIC(guwfI%&}CadMGJ!R2fCq)C>k
z64O#A6g)XnX+l52Rvm~c*LYGbq?ls)F_I*j_(!m5w=v#gcT(58d)od<d}f3w?AO$v
zNf<Po!h%otG}GS?5lS6a2$)bOs($xJknt>W?VnA;g*<$OA(5%XwhP+3zb-{!D(vvA
z)VaqI4V%?`;l44xfwcy4N3R?o$X-Mkr^Ihj1gwR*5n8wnSh#s-Q#gs60D|gfrNvJl
zLfpr;jSC619^tW(0g>l!a&7uG8sfvT3ulQz1O#nC3Z$y5t7p;0a=V$CVX3znJLJbl
ziQ`5VpIt%+MOleq+_J+{$xI*A)KODBjP-ef`u&Aj;LI-A6n0LLi~~MW&)TsFjo-sd
z(|%}k7y!AoY#O<$yoU1q3zdhs9M6o>NRH<Ug!Kvd@YM-BPV(A<i@Dz&;O-$q7+5x?
zf_|)XAwEk+N~8s@Gw5R>MdNkRqLnxB;S`C;ZifGC-NH=<<V1n0noq_J=FEBjhaq!R
zJ+aZ+tj92dCQCif6`@FwrfW|?k}0#gYcZ!0u6$V4iy$8so<rF%itz$2IQ8bw1bkeO
zO7wAPHkJLZM}IcFhf;O@7PV^{eHOx%Ec2~dl>f@{!|6k6#_R*@7S11coF_M(e_JW;
z<Ic$XFK;dIz=3>IDvUdQVS8V*dP%#ZWqEcp+fBPU?NRO*&g~e2MPR2D3ADjVEDO(Q
z5^C<flqn6lKI(m41N0bh;uZE3iTD`dZw?ps`Wl%&d#>}39rAfTr`$J~C9TBnKW_V9
z-C5W8jtw8`Q3?e_bE;CopfMeda6Zx#fl@FgjH-M`F{4`}pnKTdo43{Sn`R8RX5XKq
zH(#sjcu?fVuBxvnRhyx$Uku6P2z=(Ll`P=67QN=7;DwoE&aepXEZgo!M1U&UQAD>u
zehJ9I&g}ylCA$U|1yaLE)xgce$P(f@38?7@i|Ganq*9>a%GmlK<5CJtl$<moc0VH^
zkJ6A~7XCI^*?~KD%Qnx@4MvWde}^|2InPl{v?WCS$igcOVzhAQU6$!?!Lqi<W*=+I
z57B6ehKzW+5U1=qH8HXC_I1@tRi)a+Od6T(9>-k;Ax1`);<u=FE@H7D<{UYX@lq))
zXZ5{u)5c-aj+~}h$ZrQkJFdJO22YQk5BzxC(&r7vPh8=+*Jn7>a4xP3Vh|UW#j4co
zm$*MliBJzrtuN%oNahPMh#OQ9a@`lqf&h`A9)`%W1{-7%2tX6nEx*_s$IB$*hEH(h
z6t<`cZ+ukhu}~HV>qSe0YMk#k{<YaVlg|aIxlo%3k3p!^jUx_4qgm;*={F>WEKfql
zNO}o_$BgBH3^UvfqA;2%kv6iLG$Y~C$;p8rBdaL3LA_{d2mqDoG+_=*6L)b*2&fan
zu|_3{%8^phw?oZn$rQCUY2^V05%nJ6qFJpeIX1wS;*E69vr_A*={F{9`=Z{M7qnG>
zjKe`!(hp0kbYbJVOscsTcC&P)xyTZME2>@Tv|$=ppHGmx!EqD?GzR6=j3Ji>4$B6{
z_RZyhvar;05=rs^kvTohdhDgq5#4>Jg$u}3+*eBK9b>5R1%DHY@{NGD30?ztFbjlB
zwGnez<%%oJ*o0%3{f&Eu(`toT=;mVA`E#T26BFv)x9@+gDnbSR&zR?Tw#9Qe?S_6{
z0pR@9aSMB+cW-WfsI-%A>wu2guu7GXpQG<(dTpzVGk1%3t!}LqJyNS}{zcTyy&@jM
zBgXY*tc*I3DQUFp&E!Xiz~ScZBMTCk62%_3^Qily^(5z?_>PAmNmgU$Vtr0p=>vEC
zeOSDkUwBibW1Q<InG+CjRFVYB1CJ_>Au4RB=&3@bTi~CIV2&(*?~b*MX3K%;k;?&~
zKUo#bYLYlj%3C0kctMatSDrZ?qG+6oOSI$^Dpf27hVBUjny3*N?rz>5OBR9PBcs)M
zuON)~_BHW><b0AT(?&=n$_e4>{E}w<EEeyaqb|S)0*U=Tt8J}1j#Mmt=@$}G|3=f<
zL)>sB&p7gFgF1?LTf*hiW9n`@Dp`m`1SK{V!<hxkh+5~9U4`Ohg$x1F|MilMYgO?{
zrqkr3zr#QETaZ?+_ZdRdbUUsR0wWlc_Mow5<U&YyD&w~#tZW75%WYjrg4s1Ay-J#n
zF{ek55Ot-u`}j(^c;f!U&bYEu_2326h>sY|DX(1zz7F!D<?;zt2rHDx)4YBw;XGu!
z2V&opcP|L45z6)-QQ5sYCq$oR4r&gl1KN_501j9%SWNy_&l-qVdwf?c-tT|L(F4~W
zITk5W8;cndJyuW1mgs;1BHD`d!Vn~tUGUK)j~4c!7HZdX_QJR|;tF-A*0WB&fU)R5
zX}tUVj*p&dDT^vKofMfdd=6x~h`A5-=az+u5;iVE&tw8Y9BQkGS~dlarXDVo%_a)5
zZ2H=BsG|Q1Btm@N03{g3nn?(ynK6eW!qN%N+Gu&ILeV6?1=@Am@O+h#Of$&_Wk9N6
z_D(aET0lxp<&phR6iTNLw*cWGM_!Xf2qj5E01z`N=R$HV2CQ<LnJPel04<Ue>x5}+
zjE`jrF3O29sWMlJBJe`R*zu8^gqi=h;D-JDN!VeCZO*<GUs=Vg5|jX;juv@!wTnL&
zY=^}%N1$YC;QrcVr-7nl38hPJ&6yUcBewtt)!_?yGb|GfJe&kRP-H_}!T|{gNYX$k
zn5r!nd&FIUCxR@1KXB6Z0hiNbx}2}$>2lh<;4kM|F7+)1yKIniTl{oK>0CWZ_8;+T
zu1G_KKQEBSk6s7@>;{Dx{Y7D#9c=_uLR_TVfSvqzUS-(#tfdBhyDBs)tv3;)*PCXI
z_!vxFrj>^$MHh5`H(4eSlVn}Fo$q*eLE7T97>cAN@f_jPql4kI({r$}wb>F0jTHcv
z2}g^4hT6<|4$2B^HqJZzxI<ZF3++-FdS0U@U17qwN2nts7w1RVbh{pC;1c6;?P`oi
zJ07ao^TaVxu17xEvzC9b8ofE7Q@WT1hpdU*y0{b8zm`jo+m1!56T{nd#ZssRCCwlN
zMonRPZG^n{CtP@lS%Z!|*LBZ`EGEdz<!y!n%f-G@{<bUJ{%I6`@*l-gMltrx=kF!9
zNBTPsx@}e$z;9O%{VZlddf{i)s!K5~Dbzd6$hq5Gam^jO>9l|Pp(L2Vo*)7QqMd(Z
z5{w?qbl!v^kMi!F3;i##C=y`W*nop~4|*2-5O@49kKGIJs;}U4!R9Cjd<<AQc;6Ls
zIKw9TB5|7Qn2^gY{%Q{YR$a831yHW~_hM^V1Le2dwJq42(>T+U*IuGgh~Ebz)@t@R
z@N$dG?p`UrdlKr>{f;jo9|55qu;hY<ojKwWNt{!nD1B?vhwmbXe<6}$M4wxgd%Bi-
z0=nGu*!0ta(-zG|j0x$QsgwEhQ=-!Yr;MD@D!g&FPaU)5VJi1RgU`QPh33sPx6U>i
z6ZYbec5#-2tDVkm6w|OHeiB^?uD8UFsZG&9GlBHJE+)Sz%uE+D56Gdn-M#`7E2G+o
zR#J7<{hVCP?Dy)TWlCh2WAS5hu!k-{tj>4n#rCp~QyYCV9_xmDuB68rqaC5Kr7Df;
zvoRMXfW^N3wdy+{N!plHQgO1@*SK~f3hPB5;3U+F*<^Xfdz!R8v9^;;FlH@V;*cF(
zb?U-@$Q~7XxG?|BhQMTCcmD_;VvIkIXO%qmZlHi^7p=zaW5KnYAb{y-o!1Bvro=M&
zhc5h+6j{c$MUPa{wtgf@KhL^X&TZg>zHatj%iwT(T~nIRO)mO7MCUdT7KboAEX>);
zZQvqD>usXWrgZyCELay_kn9ES@l34@&gXQ|U)U)R`4sk1;sKf9&#>o82WtW?-a6~E
z-$l;VP?}gXwmWB*ku%f=`gsdZ<L9SAo+K7TASL_{4Pe#pK(G^T&&9q0bD-N(?MFFO
zNfPBO&Xl+EXN;f?`1cie+m%Mdf@V!m-@j8<KQGU-)QhcJm}5b7^{bX?kgjem2-c3K
zmAR?o-AQQhDf0B$zHZx2pxtymXYRgZxiv^8y1A|OUa)OUQ(^L8dTgW!vGB@%G3qu-
zPX15)d<9;V=OzVvJ;kyjWRdMBidS?PBnG++S;13SHT^?LSIDM)qplD4W{5Tf6ixS+
zx-TZN)%(=RU09lTg0v&>CNI~PkUOSv4J^lmP<w7)@#A?C#uL!i9h}Jxth`=q9Ll|;
zlt3t>;u!Op)j#e(Itp=^wZh^kyNzd`pH)DGCNJ0{Sej4MQ66qowy8{*QM75e*fw7}
z@QLI^+l9$;h(VIK0Z*HEVoN!hmcjix>wH|>X<hG?xt?>_wcSGB@!k=Y#9*%jM>Jzb
z;J`2r1PWE&t73AP{8VLY7@W$bmD81TGqkTA9G|ScrdyxYX8JGCJb`q2T<uR$-HY=s
zul`vZY+RfAW5ol4t&{n;!NORWb1tP5F;etXRv+HD-e-pOv4@MeKeJO2Ghk*N^G<^w
z&v7>iNa&#|evK^71~sp@MlCmedc7yQ&ZCVb>@*#~_2CAN>e&++Tg-B2I3P-l`V^{C
zvgEEd4^a^nKw7W3*7hC7&rOr=?_=j1dmpRD?a25~QfQ^LK+nQna-xN!*C8RF!Ha%o
zWef@Fh29YRajkVYrs>*Umx7rtx9y?z&_WJQk)&uMAeNpThhVFg`@v=qLB3sa)Co>f
z;qX*X04mvr;r^-lCJ_bb#0o`%GNegxQ2JkS=9MGyG&$r$i|;p*=2P47_O86wz3vGl
zrW`OI+OyMsbo#rv_uz-)rxplfg=)QQ05y3^HvTOMpL{jk(FwOKZa1G%WF-VV<WODi
zPRP+Fp(6`V538~bcA1Y>2d=SFfm-RcF~!hR5d>9>h-}}c`K5bRZM-=M7`W|lBdoYn
zies|KT{TkO(EXNEV7(ap1K8%^lmC|Bze@yV|D9|<<?e=*om1z^k4rn_%}+fjSB~4h
z)g4-YA*$^48JeEv>&6U`Pft!dbatq$$_#Jm^#aZ-`|Ut`C3qK_D?Su2aucfqUf;%Q
z(ug!46)840FTG>mLwQmwSV@+qLW;$(xQQC)d?=FlMsR5!uFywaNziUysIwfabInhn
zl^Socw5^{t)fO&}pExn{`l(Qg_tB2i=~A*O&@Vt%bI-GuX0`S_-QM{;s7W9xVsIne
zRd;QX=18H0om_woMD?6MIxM&tn3QX5Ba_6b3L)W$BOXO1eh8BjkH5fd@G3%PUw4h$
zlOOMOzic^OzOvQkS`Xs$i*Y(RabB0viL#G1Yj$uPfwi}^sOh-nSPh@2XwlBHMNjNL
zy9|@|2ZJ&I9B7i(FU&+MM7Wz>fAyB*^fK_@_6tu8%NKC;0a}_`4k4wce0|9NSk+jN
zZsXvH;st%xKfvpz^OiEy3|d-zeYJ=qo&nEaXY(E0%0JO7_u%#M_DIkX#`d%Zjm;@S
z1oN-&;VvROq6SomZq6mqCRJsTb#Juknt1MarOTC+l;zGzbVurCd8EVqS<P7^tSNw)
z!$}A$35Sax-2?X%MhWn{19kAq^~fBCm*-awqz(v5?TBf5hak)oVHZlILl*;X&G{=B
zoCxxYXhlsURouN(>e!2T9o?gE?^S-0_1u|o*J-!8f!RAAf309Wb5-83CMTj&bhV`k
zQ7uN4WGwTf3!2{<xI+#_&+~%g&MV&&$DX+2R@5MjP_exI1>u%QZcvfwOWm<^Mj%7J
z6YaRBpDzdJJc)}yKtP1ZmXL#R2a&i%&V<mXI2-D@n$gM_$ur)DwZ19WZO0^tWxDlI
zq$q~Gr7FBMAh~c&W6(@Fy<o>D5aRvts2eAPT-sz$7HGmg;-<zrm_c5Bn94gY6uL`C
zOI#FrPp$yGx7$*$eB*-M=e}En?iPX2d_U^XE)qE8`vzD0w8k4*SONJ@F8Z~QQt#cI
z!Tst4-lVN%iYU2#V7T2Dclh9rYc>Z-VD_IY>P^SR6mB`H`T(we0k`ZjZnI}sei8PT
zm^IS85o`-<CchK{V$0x|ZEsSzdgT<r4%7hyaKc!%e4i#tl_QWm{~}v8Pg4(k;O(oI
zds{~udB+t`IKP@h_whCsa6?JyNFQH4R?t5=YnXtU!S%x2+(B{G$_heRRqb9@AA)T!
zfCFmyhd+%unbKKT+C;_EtC|`nX1u%(I`*C#y4{;;&5NhF7_eMrq`HgNjh?XRiiDf&
zPEdOAErb7PHf9o%3)d`5zzdb#tRTp8fuZSjzj_$zjY#w=cb%S$hd_(FCT4jnP7Xb=
zYuE=__2fc$cxV$(q1ll)E|}#%eA8>M-ei0(QdIP{ibfg&E*3hbj7o&$tq2Es2==&;
zMH5qffxe1$%s#17MEn1i$qDLoe#C`gSJU^;7kL-eH^In%tG_}EaoNpZ@nw!zckoVL
z&<kAP?`G{J?kdyw0psE!0j^%HmDx78i^bY4wRqCkZ>V{27nRM(Rr5h9!OQP(b>9S`
zeP``#?q1jfU#k3B*=LR;s?HrTPi;%0f9afCV$kxq-Gj?vTSE8)xgu&N@aMCJcB!lX
zPpF38b>-{kKg@gbvXL5CS_dy2ylS|Z7J`*?Iq@PoVi!P8#bB4vB?A}pd6;29vBMpJ
z2iNG-?1Zp9e^#dXV!@v7Wvp{*2!jo=745vAZIbw!%uDN>EVoPln<W=ZF|tQN{Lo{9
z$L5l_phYgwxY^TtAuWj@6!p%_V10cpD!~_&K_sNJ1hlxxgKz*;qYmK~`XNLTU|9FM
z#sqQ#_u2$-?STcJcMzWOhx#Zc&9KVe#m0ASZRkIZ5YYHrfIjbFQzaj}#6F&I53prP
zKSDkI9*m)#_R=wOAHBMvorxE}lZ!KxSDS^_(w}=(C6=zOwlm!0BCm`$2tg6ur67}A
zAF+7a>nr-a%6^yV++w(N%5Uygj-%o0Y@EJy#$@{7qFy&wj5}wO!Uri!*d_dr*o~Fd
zKh5qVGR5N)AupFbgHz~ker*$f7?*m5zd_r8p4!Nc73V<_0Z((;ocPch_8eQIwYd-2
zF$*(W-km%w#B+}T*or7Q1(|mWT0G>>yh_Wm3@gl!@w{}_JxnNET;_bNXmL!?@OoG@
z)6mU=_Kr*+)~jU0lt-3v8@ZEUi^9kDb>Yt%ZhNKvK;rqb0~+Z^xVitZjeLOoj+#45
z3gAVy;j<+kbip>YVVX5i-Woke!w491t!R$IH@0WUlma3aBQPvCpDLISXm+|S$sB;F
z=EtWW-u0dFCKXHUnEob}4Mh;OW*t#Z|H~SD;wgMsPY?c<x{R^+0-c32+%E{wBMK_6
zjor7uX3M<t|ENJ2NNXHUp(JyA&^7e_N~FPH3ED>*`hbfStUkW$^SA65D;XszmFD_N
z$dQ$FmX0(!8!OyMn4L`pm7L_P=2ZQn@qoy$&3n|0?Ve87?AZ$LdGU&)-LVs6UQSt@
zEzB01+tBN>0UdCHBkNv`Ecz<Ez^0VK^ECYVgIu)*$&PJ&+grZU;3&>0W+<U;ruiOj
z>Vk`Bm4Sq-0km9wx6kbS^RD>kLlGJ9pN-$}J6CX&b2+(jJ=BxOZFA#sH?`h8(d|PR
zPbtz!3yi#KN*50|N~5&*#RZl3!xT9GP$95kzvS-IHf2-_L<{G}m9{u`ORUr8E}o?p
zNpO;76FnsXk6%#VO~*b3^sPIbodQa?-I(|WTD8y9J5gEYESXU|$JM9_EHC2uZ8HZd
zJ{r2`rnXdGOst|c_&o6K<ISdr$x1#}wt?N{PD^TQv>Iutb1r+%zZBZ8@48Giw=Lya
z587|U@{J}GsoO7Nc{Gx|R*>U&CrW%J8#6tYw73o2#oC8V@+0JPowegw^Gx6E%Xr-f
z7-F8N?+sbKLl!&L(gfjrOa!|pPwZ9Z2E(luJrmbz%R-i89A!Beavo6gZpCRso8(<c
zTI-ebSjYH0R%nKBKhz`jX)+*D_gmV-R7}uUn}(;WmDYfkBs>r(fVS59Z=uNEXWiH*
z6`d=VIrH5R{*H2vc2oc18?-J&_)l7!@WOCvP5GJa8Fb~=4#b+p@A617E?a^#*VW@2
zbvs^Ill3E7oJWzVVjV8es6)BXuP{4ahtdQ!*Pq^AaSB}EET1iE_@M^j{kWf0d)C2!
zU`R7(Ponz>ylBjS-xehvAg;-WP#<IR&0ZE<4u}Vh#{s+fhKU`D0m7tUYZT?NCwZu_
zp(gcX+0GMn7&8PT>A%R`91X6n?N=@ukj%7_FRj1MB7hBxcGJCaVoP=h^(}m0-rxDE
zjeT_D6o#Kv+Uu!N7p}YWFB%}078IWBYpY&>bhQ^1@Ghx2fcYkllcnjDxfDIm8>W5T
zFbNALS#V9xg!D$JgV{DY2}u2`e~bq&3|w!89w&>y^ZdS}WtA)*r4NUOv@0)6{h5be
zK01L!X0{=vU&1FQt9^*o2C2FpVCUX7E;IqZUC!JJj|fFkzMy;O-%lFL;^fzZ9WFq9
z{Lq?`YInbpHuon1I|Fts=opoyvN}Jk2U&7Hw`5<u%@%w_Cp}!U)kv4P=W?w!fP~$|
zw!kFkYIr0RT7g=-0E`dX6E&r~`F-5p?7i!*3uHR%%~nsRwCSbpZ)gW{{OhqaHD6Ag
zdb28j<ni0H`H$}s$#b(e9)d~y%<%sWf-9IgwSm*OUPOvpJ&Y|S<j`imSKK#wa^~Qf
z0Ew<%-zwmF=-^D7jaZWV9s?g3-~UVArC-+i`y`kVJa7aREHpYUJ+$$DAp!O&=D%{)
z@Os;csMz(PyJK=;O%TH$cLD8$jH}=`xRQ;nyE<#KgzTkRHngk($x!nW-%(`{EY-cA
z*sM|AgX^3BdStwguKISuk3O9DbIDx#vaa1wE+?g;w?H}2*<Iah`vnor4N<<^;j~Kf
z%5m|wSr%GluOb{fXEo*|B;A;;M$Tqj5^2WE60v`K{xO5g(Z|I8_PICs)^*hvpx-~c
z5s|sFw~{F#u_$1%>3das>v2&vn#~7)M<-PKN2}NWE8C7dKwE}npN>p`4j7DVS*%*g
zjpdQAf~hL6NA|PW*6%fD&pQC)4H$fECrPcw^d39&P*KSbWy&;(ZZ(fwt&niqHhZLy
zI+m5P(9wDHDIEjz!fgB;Mo8*B!8)bg$&%3MZt!|aXp=#3TW`A)U8)8rLwa=CaRvV#
zqg?j`I{KqKS+%clOfGC6#d`Q@jx5D)jg{)>KCk+A(vOT_s&ov78oR?qhtu~8^_Bj1
zG+eI5k>3g{k|11;pz5E9Fk}P)Ln^5t-|+dkidgqUHpyAcRtH0;X6ZO=$zJfA9I43c
zmZxtw_lVyX_qI)Hw;NheikLiGj{MQSt0+`qZRK1ARZwEnC}hxFXj6OQLfNTY?sC<_
zpIp=)?8{wHP~cg-HAxxoxeQvt6*rCY@F&Gq9J$DI3!`VYGzv45lYUzw|Ng`{lai?+
zgG=r`$UbJ!`01pez>uE_51~ZgeIhB=D`(Ki5&zSNbtzY-zCoo6`R)K4jVUOQOR=b#
z(l_f~0zfnT$xU{;mmms(EYSeDz<A557$Og+rbV~fM)HO~Q0MJ@wc4}yUC%lDy)!v>
zEQ8zJLG{AZCJXH{-~|h=RO;RHqAyn?a@ARj5~|#+G{;{%{Hv?{U|@p-da`m)0gk4l
zpHulX3Ht!k?kp3-@o3>1gN2<<4uKtN3-5$dJ?Vs@z=LW>)!?PjOu?jRmY85+Frj@l
zqf0&PXYY|Np?QPsZA4cQY6^v5Yj@#r6i?4+IQN5JkY<S$P0L8UF#E_AV_B8ZkI52S
zqEXOIdO^kyy&fBEEQyIWYLUB(5p`y)swdIK#}1gOX0k-z^|#ZylcTDyTipDXE$+iI
zp?JFi5cCL(8*o{sE45}MiPK1Wfdsv7X=RgRm(A*9Kob%uv|mAK^T0MKh|vgV3$|Qd
zV<i^Ezh?$+!2?_49gO+1o0&rY>&&~PkiE!`#N7%v)~+eteN$EO1}}reRx~Nytltl=
zmJiUnLZT4aI8)*P+}L?^Ki9DQDeiBfE{;SYjD`>8w!nz1Hc6saQ_d-*283g1zegqQ
zZsN?%dRkhsJ_>feS&FlHgvpbC7ZdK>8A}k)H{CtQ3~F0~SrA@P04GeDg+mFr3X+W>
zt3!x4+0l!ZOybzEB{+7V$?==fmI=75Mr%lGqddH{1MzW?ZX9*-lWh-wc?Y_>0HCSM
zLIG_a#*VLE{7Yg_^sKtfC;ICMIFhC{3>cY;5{d!&-f;Xto+f9*OC5IZ3<~WvBURDp
z?Wp{CS{vcDa9UJf6fOmZ$adW^=mn4H9FJYmpyb*qS;smKw~N)cZ$!)JeB0UK$mKIk
zDitDQHvc+vIj%d=lFTs{q<)Fa2XMbAZevN>Yk7pJYf3IpM)4@fI%czLE#;F+6PYBj
z%43avi&{l|2{}GoRAH#1IZw&h9R|Fd$xWFFbbH_sm=y&ZHiB%b7A)VW{GL|L;R-LF
z5Kr#YChAH!JeWr>gR6kp7C8ewfPG+tqj%zyM@CJ`IKn4l>%i8))+F!z5|0>&4dYO4
zF-VuU9l0WEf$S;}xpNo6Lz`))ZINAQdA!q*1wmw>RbfTd=3f4A{A#-GO-}d5V^wYK
zPN(mUu3I*jqxaSBw~H&!#cZa<TSaNYtgbYAz{-Po#%N-BhXx?6?CcrKP~&@hmMdYp
zM`P@OX~kpflGq)7HN|YE?^&trR+l{^HqEpSQ4j9~u@?4HBxHy`rBdCv8A89{QvX8J
z<+*g>7fXk^TDJWdZ8vQimE1T$i6N*YY`y!?!83W%-u|hbsrGpJhEG>J8U$Po7HHDJ
z&dFwhgKOy^nxS}axTpdsp=B$wC!P$^c-i_APSt(`$m4+=|8{CCZuws{6k}2<ji~{5
zG;*xVmG{ZLw)rMn?AY1XZ*Z%c#5t64do*La<x__CvfQbKSd`R*9BV8dmZt0|;3*pv
z)oPZW>w34G!t>M%m9|=v#XsHQo7dBYOx=n!4)cS7Slpi?w7I~19sdj{#HRNMoTXeJ
zHIk^E-NG3lttTLCunCVN=8EjEQXz1vfB0IipCYRH#j~+MW7f+#H-{)ZVwsJyefN+C
z8Zdc@8lI9-AnX6+G}<bA$o1y_B{Y)P%+~ws1>(tI!|Wsi+JjS>thuIGqi%%?Yuk_-
zUvboe`}49J*!Y;|>JGaqQzD1x6xo#&zd}@#$wlaNRkT`BmsQO<$m_!?^O5_{QOCe|
zndp9N<*M)xgH8Hnj#2ksGK+L%^NZ6Li0eSsv%Q;khWs;(@`Fip`o3bV*@Om@WUAh!
z?L}gx>3Lnpa=BHfJ?7KEosaQfDydK^uIfSbaE}uG1u2i(LAp-l8i0vY-NPr;Td=zw
z`=W&=0i0|$gI$7n6RA6lDmD~ok~<(IimA_s_Y?x&=xxT$Sh+IOEOZM;dHPNhdj_M@
zv!!d%Yl#yh?mXlpB2BkUu=jeI%?W!H-S81OYeNJ}P$-q%Kje~Z=FP_sRcwyCWy3uC
zy!y2{JeV>p(te3Dm)X}Sq*|T*CN!NZ0M9r0c|S3(J76i(BR`T?cRtRiCm$b{N{-f7
zj;Y6;b8Pa?H`Z8PEI#aMfCbg9biWhZ{m=!js)2H{ygq}BUajB^GNTwO_0t!NE|Z%X
z!%89V@o+I6!c+Cj%4gp_LJ?doV6YRW&^HSfBKh15pWJ1{S$M<>7mTRdd?V)eXTm6v
zvwNUBPF8EkLRFNoFyKYF*z@)HyuE1P5Z-`7fr5o<2`@ucEfjwSg!(I<vEYSAJ8a(b
zA7a);UZK)X)ac&=?2(sep4uw5pJ!-+pXFTpR;piJYieus%HdI@Ji~i31g^8@OrQ}*
zMp|vYI=-G&?VF^{sNIabO@=sDViA>EGR~`JxM!)j0=H>lbx4Lfj;;*Q?dNE360?_G
zZsr{hPk(f{NIUSiZWOAv$JgaAYtVvvP-_eHrb=1V=iNOuq4B)Z0w7YK-njW7?-uF^
zJ&Eutqu*r%Y+ZEktdWP}8gTZ(+N5P+<VE_Wx#v6kvInNwe7FS{yjS;4|MhLQuu}cw
zsUCvj#+e=}yy|?L%9Xr40$H6UdCzE&=}MFyrHp=A!nHtO-wT-D!{q(~%Gz(xV#N(}
z!&3usyg_UvTu!69mMcb^_`45q*|OG6r?2vGul47=<q_S#D?uPLmyT>A_pXR}bTO9c
zN0<P%u;TmSq<Ftu`pr?QSJ(D^n1P6Uo<$)nFmvFvbWjt^PoimV(zRffsr<uLK^n7|
z$Zr<*WX=~Bd-Ul@8M4cRhCeueS$ML8#azjLi9&&@@Az0s-UrE~#k5-=^n6Gj503&3
zQc);ufh>$OSN<IhN>SaAL<oe^E*s-iyBzf#n2h=}!Q}}MXh+!tQ8C8U)WV~O$DTbn
z&`kTb{O{UfgqCw(Q<1fH-XJe|dvnY51<ShK{M;k#=%sgQn8eNG-_I=!A>JplsMWJ_
zUyfj360DGrDY@A#r7`Lz-n`o(j%JByk%BPrtP|X>RpIxKa!)eR#wsO((Mnd(DQ_B*
zOT0uqH}ZL}2qX;a?qJXL{5zKFm!X8Sto^eXCs|j5(byNx^7(Ls&v*;=^Lh@hLUz7|
z(+UXW94(nnq(Py{##Cl$;}ii5k@^;9yC`nike)|@zpgZ`JC*SWWyDcQnJ6mGmi7BA
z1D`{1X^^RN4I(Jwo2IF#MIIEZRZE+2f|;m?-u)JLnj)fvGgaEwCl4!*{P-kAkI6QR
z@xYL#!AYJKbrNCBIH7R_j&2c`u;4(zR8AjVVy$LUuTiyZad-r08ANkyC?Uvl&E)y1
zR(+<6^YJ^CoYiJQ6R-pM3!EU)k7r_9O-f2D|8}?tF_BOrPT=a{D&^xMO%Q}ZMQ6-V
zMU(G68cjc3FP^WAa^qf}pi>JPCf)mxnLgvq6;)~QppwQR^99r1OWCA3X=ES^#q--$
zuWy^x!{NUH=6CK>M5<yO8@RT?peC;OGwe~hJ~mytt;-QB0nr~jaKu6;1xiLWlBlT5
zn`R4H%EZf?0IiB5xjyQ3fF!syaq8NY`iFL-0W*gIgDWEuI=2uewMZ8Ko<PvlbXzoG
zg6{(zD!O9&$^y-QMvtD%--0;8)7c$20Ac?{Q`R2l@|d_Rv3|D0%Byl+d>zNBgl2UY
zS;Q-LD<v@@jgY_5Nn#p$i(c7*hv!qNmbyhEyz^VXRt^=A2KK(8FX&Fy-`5&x_mOR8
z!)SuQzF@qV-ImCHw(qgHQ4<@pYGqnriH(~Nb&As#C}dkGPCZKw)M-$=R#{m)Q8ErR
z$Mo&k##&|q8NO03h<GXZ;tM3A&cCf#c37<6iBT&=NKer5@ktqvN{J+@Pn!tuUjRHy
z9~*q&8F6_-S1(kA8H0`BCf`ns_iNzZ-~T&SKT<RTlihLSMUc9!go9O7TXkpKd4Y+1
z1il53QclwP+OSCXP%9L0DN7;H7KPnRSgXJI;0jEl9KrA<5M&Pez7R>&(L`lkVdDQ*
zYl|$(v9*dnJCma#X|eR@9kEAAEbMs3ikh4@wd4l&=a8FK`uOCa-6I7au2Zhh4|#W&
z@b;KDj3yOwM|8`suNf+-9En|4p8C#~dreGJ_usV4??)M#dI#-MysHQy$Bl%&$3hRq
zXDI~^Ck{0$$Jo_~j4wFmn82P&ZpnC)#Ydyi!$h?4L#9L!PE5V*?rl$h7FCoPEaB$K
zB*6s3M{Mx?h7ZodW|2JQuHE3<uNa{j!OYdSb%QHuPdHNsj0K7yhfE}BC(&nq{`T;n
zTlz(QJlJMqS+y?IA#{8chROlI{0WLyZ3>?~=#hWc5e@xYqJ&)<I+rLIgvM?`AgIqy
zTGZ<+(c>bCqOI?}3rOvK?VRZFJ-h8r58oTYb@klT17QMA)i&$=k!L7SSo;#!Mqe<W
zwMV4m$4p<>0V6*M<`i#kiJdSp#pK|dw^c#lx=VzRaM~W#mYr|^X;2OLj_3t#k(1Au
z6gnT?VX&?E42qN~*^ISNHg3g-a7z`47X3XLuAmDfAAFlw5I0g00U3o#VxNEU0=b}Y
zG>|qoHOt`GBU2t6dXMz&XZNIp@>IKf8hSWeFM+e(j2HwQ)j#Nt&(H3(zTTq0?rOaU
z=3ssU->4Y<r~YK&{K%WQLLIL)c#uNxif7*Mbf~Z0LXQ~>;zs7piOSoK_>py;gwM3~
zLBbik$nC;>$n)v|gC2{6d|KIM(f|t@mQcAs5#>A2?n_DYf<E4*!_VJ)v#UYKzzqG`
zGE$>m^0TMm=tJ(=r$=#q2h@4;x#+&X8yXF}-K(^#!KB~@-qHuQ7uzcZ3#Ydk>?LHC
zqJNLKSD0uM!vpQeTu<Jf;}0RyIwT&Iu-W;RH#=&z>eB5+ag-nI+51!_B)VpIxr^Wh
zHOVCFcz5=h80(-(2%}-(l8ZLJy$>kL(Y<tFeveDWAwi1Zx<Fp=%NyWlWR|E_M>~cP
ziqH<|7;Y(9KNN-@=OtPajia4Ilnpygl+u}ttwL|$%2|EH7LOdA##V+d6~8@pcBp=}
zjK-zdJWEx15v6E)*>%2Cmq6xfk65m7#(K%(+Ss2Cy$;i;Yf@|N?7M^S=Sfu#4INz{
zN=$PkCP<b7(ZQLt=#fSPmTXexBPPPvxR$_g;EdyjSDKUuhnx{$+=Mxnw~+@=x(0GC
z_HN?P?ihPaTD1<P`Nj}fZ>lT5m_;JRYNAe!qmC!|4agusxz7S*Ie@sCIu)YMSVSg;
zV%_jC%c972^HcM7G$-2Njzyw0Mc<%J*Y2V|$xhdKew>?Ju7&B7)JnBNV#?alBL$Kf
zuogOfEZ%9C7^(~RLUE#Vd-)jm#Uwz+<a(~m^=}1F1&4T=`Vu2Ud%R+ix$3t-absWm
zXp96qzvUHa;L>^Je_3S*QXLqGuX3p|?PW8y{Nu1N?t@RDh&_v6F`Inw<pJGPy`5kD
zjkx^5_ysk*p;%Flu(!pw4Ksk|Y*b8q<5C6D-&SQEc93&1t-fpXyO&O!IaFz5#vNeh
zsnT@~ty^ASa!!zERJsjN3~g^RpsaP^dyYW(CFa6>ul?ZT>)X!A>ikltLibhd7f@kB
zvy^GJWFY53P4im?!%Fcb^OBN4oMN`nfFC<M-`*En)oz3QL^+2mtt_uhvsuHM91x?m
zbOZ=FO9+oi0@g%UOzOPxb35$rH_g2VNrxA&!GLzb%w0P8G9Ie2_%z|&Z&5L7tmd;3
z{Kb+lThK=GEy#FXH+Mqk0U@|alxKVOWwf`?%SWR~AtFZFyarirZSbsCPs7e=3tFsQ
z!MQ2l4*Whl8}mot#)b~t?CoCeCSSxpmiMk<<GRqEbUX}8`q*$LejjRKH+MJ9@I5V#
zfEi{!Dhs5!!dU9(I9I$*7EO~?xNWk5+fF7S1n_S6tpi5ggj_gP{StLDaJ<(y$m8Uq
zf^8jn05_kPy<h6{3Ihb%4fZ{yPf>zeBZb}s>f=$_3C>QM#foI7bz}Z4PHN5q?6}gZ
z*gQuymy!3#7BFHGKEbs^I!#yn&!jHth6*Vw`mNtuDLA*_u`98^KNdl#(c;|D#}F~8
zsJ6Xp-UE4_3gP9?bu{1`@Hh29ofZ=0fiF0R9wJ!<xs0!+lxwJ5ko93P5|gam;UHt&
z^)}uTSo)Y*X^VI4p7U+A#L9_SeK}rWd+xyP%+CCkNCPs<zZackL&d6Hgffxx%Seya
zI4g=DuDfze(x<L)OZo9rwe@Lysut%1Alo1qyeBuMfDF7>cCx<6OWaX?I{L{n@BbVt
zN-QhKbZBFCp`Sf)J{f06Xp~CZM|;=F+&>#r3w*kM=~)n-eV!*M&3Y#0CoAyZ>83TU
zD%q=Y+}5gFGo9Wv*Hb3_DWCs1QlZqCjGehJHc$|TG=9Cx$kQbRVSFh#)ss!-U9M~A
zdMZ!%vF*Fbv9vIg+Wtsb<rngVaY)((y7zSTbYT#QU!}}UDkQf-a_olLIXk9Ub(svh
zvp@NA9CPj2pj}W--!!nF72(Gwe<TgMwUjRh5i=<)gJMph9QQQ&IF0ttEmCpHI<{*L
zFWC)~4~FTK!|Ff8b*g+_x{*&k`|x!g_%a=}HCIfbM)eGCX6RbIz~e-Q#)O2zi(lkn
ztc~6PE<fGpWpjrg8La##>NUW<tB~vQPP<HIyZw&izM{;f_61`14sh*;_*NG$##gN1
zdvRsO<x~u@)SPVTP5GxqdA^%=eq*Ed2Nx9OCwR%jCv{4J<q{ZH<c+e(=ns`yk5&qB
z*E-iMG*7;&Uf4f@`#3pH9l4O!4B0`|EEI=Mn!91#Qq#hINFZ~BSHV}Mo&?z7K%fj3
z1f!~nw`1>jZxC@hKBts0G$cxwyHiD&zO6(Nvw*l@@|{i&W8ilmUAK3NS8<Q5ejhU&
zmF<e|7!*Q>GezHF<)W)x+XKa&dmxJGEuSyt!0XNVvZNiZ9_jxH>ID`03r?MOngTxQ
zSB^a^7?g&+it@*AQ=G@%?opS_l|(qCTIIB9kB$5aRNi&jDZ$US&x@wLBe_!L!r2i^
z&`-!-`W{sxk^KJYR6g>SPZ(ikXDGD)Zs$~gVSv6<ctIw7QXU59tiSWlte=n?482;f
zmh)!4THx$$)?)V(a<6r-Sd`u?7S-<s{{%m`Ld(=L-{5|ocSX9mejQcNgIg5OQ9RK(
z$kqOArJ+G8%d#1OaHhtL4SHJ-tM7ZtP}5KpBx3NFeI8!0N<piYG!WCslHX9w?L$Br
zvy1`vfBhYm1jCp=C#TuIa$G~-nN6gaitdGSiEVE4B`Z6>m&(R*kF0&=Mtk(!aO3Z~
ze&b*MwP-<ZK%M^=-djx<`3Kyo_WQs^{e9pi1iCT&cMAUL6#b*mgT5QhqqXHz`X4F}
z^v@|aPr3vYBb4-U?tcUJST-~O004N}tyIlU+dvQ=hv2FfzZWX?K=;rhA{i$RTnGp$
z0!505KoEpbFK9_Nu_3V|dlN%nq323fZ$0!0`XGIa_S`q<=k=lz#E)pnD&B8rXTF)8
z*;yi5FlNZ0?AM?#8XGigywEsDrtwbW30g8fXq<=b4~-}3O>RkJlNNGP<7uOu|E=*1
zy*A%#JV&$UCynRHG{1w{$iKwuv+|N+gBIzR#yOfYUTHi*4a3$rPqy(@<4M{werjxz
zovUd)oonYlYCJ=0=39;DXwe*MJWo^RH`=C<26ROc`P3zkBr#g178Nj;sf4jkD+;;z
zGuk0RvC<8&YC_Y8B)}}lhNP~rL)N3rF0BFWVuvfPD)u<F!PAEoZHI%a$nScREw>7+
zTq>=vluK@j?TFa#2CUigMbHv9s|PK|x~=T4v0aY`tlHvj(FfZusE<H>LZ=8ibr@q7
zD!2}|`H?s|ZSo*)ipYncj&M2ku-n2y@}7^mh7$$YNaqM=66z$5%1cF^<sm04<D|7P
zkhL)C3RZSXtio=EuyXD6Nu>9Y94mvgZlTJxi>O`N0FoFT5DYPgsD-aim{w|}v{q3s
zIu=pvhXHdPcY{gU;X@gEet>L`TxYfLOhG>FD%wxDj4971C2BahUL4#WonyYlIxFTD
z{QU2w9rtsgwfLCMO@B5#Ch(L-!{|_*CQaH1-!>%I7mm>$82akMJ)G*a@ht48g^b4-
znm`?(1U8Xk$~3Z~2*s0m9Rjx%BU6zHWnITp$!H(h5$fcBnHysaY2NR?Zq8U_<9->U
z8sYCl&gl%_RQ5MFTzRb0fx;5)W~u5(#8aUnMhvzz2Ls4r_=*+Rb+(I$yoN~cdsgf_
z-xapJnIwtR=h8dpmkzphtMJ%cqirrA;+Z6~v#rFJ9y=7Vh(@B#(*9?Ayf1EdzGGQO
zo*!ol&9EaA9tj2knnVOKOou^RL`-^uHR}zwKM+Bt+{hGccB5aNj7-}yKH`3lpY;S&
z(QsC)9xyH|mM7()QY^-;$REhqiTz$0c5%Okoc&XxA0m8?*Z2=MvWqPM004N}ZOz9{
z0&x(>@$W1yxMD*D6-$i0yMl^6qJj+-JGR5$65WJVqu|Yx58~Cc^-+8r3)zDQf63%C
znaO0($mi>UF#qNLrvwcb1?af(P>4YhUWzH9lrqZkQGuUI0tBg|ni@jXQb#=vG}1&f
zEws``I~{b=MK?Y4(nmig13!Nw3^K$pQAQYLjBzHIWQu8G%rHls1oJGg$P&vWSz(nm
zQmnJVCR=Q?!!Bv|*yn&lj!>fUDK04xUEJc4LNTOByizPBQYvLUNxAr>Li|!G0SQVK
zk393jJ0HCACe>0SAy4koGR>HoHynu?=Qrx^?BvQmHq=QjoA2_wh#5ArR_65YWYBTg
zG3q$t7;~I)oYm)*Z7Y52;w-D&No60ODlKhkDNEn9&TZw{zP`0GSC_8Th2=`!TEA!U
zL}Jb{?wI%nvg}b#0000100IC101p5F00961007KAqR#*T0074MGEV>i007aqe4cfk
B(i;E(

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Italic.woff2 b/source/fonts/KaTeX_SansSerif-Italic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..5fa767bddd69dde2a3a8a009667c5555161058ef
GIT binary patch
literal 15152
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Regular.eot b/source/fonts/KaTeX_SansSerif-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..1b38b98a180c93c0dee50f491c520265029a98e9
GIT binary patch
literal 30212
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
MoTMv$@AL8h2W0f$ng9R*

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Regular.ttf b/source/fonts/KaTeX_SansSerif-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..e4712f847754250be2596ca801da591b0f558416
GIT binary patch
literal 29960
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
UGdg|EzW)CvCg_U)@AJ|B52O^j!~g&Q

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Regular.woff b/source/fonts/KaTeX_SansSerif-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..33be368048f7e28c8b87fe4631339a801a09b871
GIT binary patch
literal 16744
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
NY2**0FK(}y2LS4J6Al0X

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_SansSerif-Regular.woff2 b/source/fonts/KaTeX_SansSerif-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..4fcb2e29a05c2a1c1894982b7d63d916a755faac
GIT binary patch
literal 13908
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Script-Regular.eot b/source/fonts/KaTeX_Script-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..7870d7f319b6efba6bba9502db33fb4b73129403
GIT binary patch
literal 25104
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Script-Regular.ttf b/source/fonts/KaTeX_Script-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..da4d11308aeecb950b6a4f669ef1d4b05746f887
GIT binary patch
literal 24864
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Script-Regular.woff b/source/fonts/KaTeX_Script-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..d6ae79f998a341c1b0fc5a9292ca8403f734d23d
GIT binary patch
literal 13856
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Script-Regular.woff2 b/source/fonts/KaTeX_Script-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..1b43deb45a854d69d134865608f7ddf128e654c3
GIT binary patch
literal 12276
zcmV<QFALCjPew8T0RR91059|a4*&oF0AU~i056vS0RR9100000000000000000000
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
OR#4h-t1!gio8|!SYu)4k

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size1-Regular.eot b/source/fonts/KaTeX_Size1-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..29950f95ff6a625cfe0435b01d5fbe6b6270c938
GIT binary patch
literal 13408
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
F`M=?@nBxEd

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size1-Regular.ttf b/source/fonts/KaTeX_Size1-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..194466a655d38d8c0c112b39e7b04c5182670c6d
GIT binary patch
literal 13172
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
Nle>8x|F`6G{~Lv@cWD3s

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size1-Regular.woff b/source/fonts/KaTeX_Size1-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..237f271edd1ca85a9cb78d12c142f22deec6788e
GIT binary patch
literal 6980
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
IHX(BV52p3?3IG5A

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size1-Regular.woff2 b/source/fonts/KaTeX_Size1-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..39b6f8f746c39c8c2faa9188de664475443d6b91
GIT binary patch
literal 5820
zcmV;t7DMTGPew8T0RR9102aIe4*&oF05fy|02W{X0RR9100000000000000000000
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
GdM5yznhJIR

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size2-Regular.eot b/source/fonts/KaTeX_Size2-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..b8b0536f96767e3e4235d7795f5bb5bb6b7d03f6
GIT binary patch
literal 12648
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
XEcch!efFCS{`t%C-3;Q6{ips13`mwM

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size2-Regular.ttf b/source/fonts/KaTeX_Size2-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..b41b66a638ff64d009950af0a9463561ba552290
GIT binary patch
literal 12412
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size2-Regular.woff b/source/fonts/KaTeX_Size2-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4a3055854ede4eaf25de2364da0fea0a05858cfc
GIT binary patch
literal 6684
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
Tg_Hl}z+VB4e{%Y3K;HiWz5YA{

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size2-Regular.woff2 b/source/fonts/KaTeX_Size2-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..3facec1ab899c8b984146e54051efafb948eb08c
GIT binary patch
literal 5560
zcmV;p6-VlKPew8T0RR9102R0Z4*&oF05E(202N&T0RR9100000000000000000000
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
G=(=+&a+nVQ

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size3-Regular.eot b/source/fonts/KaTeX_Size3-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..576b864fae6e163967a7fbe5f6da41c8076d6210
GIT binary patch
literal 8596
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
IkN?L10`Xpe)&Kwi

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size3-Regular.ttf b/source/fonts/KaTeX_Size3-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..790ddbbc55fdd3e4bf42f567e4f5f3b7aee5c86a
GIT binary patch
literal 8360
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
b_t#}$xcqq6w_XMyFZ`zQkbw9<{u}=bafM%{

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size3-Regular.woff b/source/fonts/KaTeX_Size3-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..3a6d062e660d3a9f71b0230e601dcaff83638430
GIT binary patch
literal 4776
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size3-Regular.woff2 b/source/fonts/KaTeX_Size3-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..2cffafe5018f6e8a7988d6e277d2cf2177968aca
GIT binary patch
literal 3856
zcmV+r5AX1IPew8T0RR9101prV4*&oF03fIU01mbQ0RR9100000000000000000000
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
Sim-oV>Ot5I1I>}Z^_~IHATU(`

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size4-Regular.eot b/source/fonts/KaTeX_Size4-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..c2b045fc3dbebff9ecede9a4a1fcf9080633fb15
GIT binary patch
literal 11520
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size4-Regular.ttf b/source/fonts/KaTeX_Size4-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..ce660aa7ff91c74b859c521bded76a3fe2150b5b
GIT binary patch
literal 11284
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size4-Regular.woff b/source/fonts/KaTeX_Size4-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..7826c6c97a108759a64d1fd402428ad73c795898
GIT binary patch
literal 6456
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Size4-Regular.woff2 b/source/fonts/KaTeX_Size4-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..c92189812d98fdf4feb8eafcc81481778f039f65
GIT binary patch
literal 5172
zcmV-46wB*(Pew8T0RR9102DL;4*&oF04x*$029^#0RR9100000000000000000000
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Typewriter-Regular.eot b/source/fonts/KaTeX_Typewriter-Regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..4c178f484a8d7369a4142755c30ae4a0e12e8d5d
GIT binary patch
literal 35784
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
YDotF!T>j=)f<OPAT_gD0Pal2#57pl|r~m)}

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Typewriter-Regular.ttf b/source/fonts/KaTeX_Typewriter-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..b0427ad0a56ca0eb58c035ebadbc7bc3ebe7fae0
GIT binary patch
literal 35528
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Typewriter-Regular.woff b/source/fonts/KaTeX_Typewriter-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..78e990488a9b61630e28263b73157205c0aeda96
GIT binary patch
literal 20712
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

literal 0
HcmV?d00001

diff --git a/source/fonts/KaTeX_Typewriter-Regular.woff2 b/source/fonts/KaTeX_Typewriter-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..618de99d480f9a5dfeabce556f3a94bd31de1a2c
GIT binary patch
literal 17344
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

literal 0
HcmV?d00001

diff --git a/source/images/favicon.ico b/source/images/favicon.ico
deleted file mode 100644
index d1d026a8b7e31201ac8040dacf434c37bbe09e1a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 318
zcma)0!3lss3`@ZQS|7e`UxI(<a~qfN=?L!N%N@)q!f_~EOOw*3C4ewh6)6S*y2PwB
z=~;q?2+TJ=@Th_PI5CaDvToV7zO^FSh~TvpV>35b(~RBe*(}28h1|Ld`PCH<{{GfG
G{Z?Kpst<<%

diff --git a/source/index.html.haml b/source/index.html.haml
deleted file mode 100644
index 5cb9956..0000000
--- a/source/index.html.haml
+++ /dev/null
@@ -1,38 +0,0 @@
----
-pageable: true
-per_page: 6
----
-
--#%header.main-header{cover}
--#  %nav.main-nav.overlay.clearfix
--#    - if blog_settings.logo.present?
--#      %a.blog-logo{href: home_path}
--#        = image_tag blog_settings.logo, alt: blog_settings.name
--#    - if blog_settings.navigation
--#      %a.menu-button.icon-menu{href: '#'}
--#        %span.word Menu
--#  .vertical
--#    .main-header-content.inner
--#      %h1.page-title= blog_settings.name
--#      %h2.page-description= blog_settings.description
--#  %a.scroll-down.icon-arrow-left{href: '#content', data: {offset: '-45'}}
--#    %span.hidden Scroll Down
--#
--#%main#content.content{role: :main}
--#  = partial('shared/page_articles',
--#            locals: { page_articles: page_articles, paginate: paginate })
-
-
-%header.subheader
-  .container
-    %h2.page-title
-      = blog_settings.name
-      %small= blog_settings.description
-%main#content.container{role: :main}
-  .row
-    .col-md-9
-      = partial('shared/page_articles',
-                locals: { page_articles: page_articles, paginate: paginate })
-    .col-md-3
-      = partial('shared/tags_nav',
-                locals: { blog: blog, selected_tag: 'all' })
diff --git a/source/index.html.md b/source/index.html.md
new file mode 100644
index 0000000..1c3e7a4
--- /dev/null
+++ b/source/index.html.md
@@ -0,0 +1,8 @@
+---
+title: Home
+layout: page
+---
+
+# intro
+
+Welcome Home.
diff --git a/source/javascripts/ghoststa.js b/source/javascripts/ghoststa.js
new file mode 100644
index 0000000..6873a64
--- /dev/null
+++ b/source/javascripts/ghoststa.js
@@ -0,0 +1,79 @@
+$(function() {
+  // Ghosthunter configuration
+  $('#search-field').ghostHunter({
+    results: '#search-results',
+    before: function() {
+      $('#search-results-container').modal('show');
+      $('#search-term').html($('#search-field').val());
+    },
+    onComplete: function() {
+      $('#loading-spinner').hide();
+    },
+    result_template: "<p><h3><a href='{{link}}'>{{title}}</a> <small>{{pubDate}}</small></h3><small>{{description}}</small></p><hr>",
+    info_template: "<div class='text-right'><small>{{amount}} posts found</small></div>"
+  });
+  $('#search-results-container').on('hidden.bs.modal', function() {
+    $('#loading-spinner').show();
+    $('#search-field').focus();
+  });
+
+
+  // Helper function to get url segments
+  function getSegment(segment) {
+    var segments = (window.location.pathname).split('/').filter(Boolean);
+    return segments[segment];
+  }
+
+  // Highlight current tags
+  if(getSegment(0) === 'tag') {
+    var tag = getSegment(1);
+    $('nav.tags a').each(function() {
+      var slug = $(this).data('slug');
+      if(typeof tag != "undefined") {
+        if(slug == tag) {
+          $(this).addClass('selected');
+        }
+      }
+    });
+  } else {
+    $('nav.tags a[data-slug="all"]').addClass('selected');
+  }
+
+  // Same for current author
+  if(getSegment(0) === 'author') {
+    var author = getSegment(1);
+    $('nav.authors a').each(function() {
+      var slug = $(this).data('slug');
+      if(typeof author != "undefined") {
+        if(slug == author) {
+          $(this).addClass('selected');
+        }
+      }
+    });
+  }
+
+  // Highlight current link in navigation
+  // Since it seems like the `{{current}}` is bugged.
+  // Or I'm just too stupid for it.
+  if(typeof getSegment(0) != 'undefined' && getSegment(0) !== 'page') {
+    $('a[data-nav-slug=' + getSegment(0) + ']').addClass('current-item');
+  } else {
+    $('a[data-nav-slug!=""][data-nav-slug]').first().addClass('current-item');
+  }
+
+
+  // Smooth scrolling
+  // by http://css-tricks.com/snippets/jquery/smooth-scrolling/
+  $('a[data-scroll="true"]').click(function() {
+    if(location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
+      var target = $(this.hash);
+      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
+      if(target.length) {
+        $('html,body').animate({
+          scrollTop: target.offset().top - 70
+        }, 1000);
+        return false;
+      }
+    }
+  });
+});
diff --git a/source/javascripts/ghoststa_vendor.js b/source/javascripts/ghoststa_vendor.js
new file mode 100644
index 0000000..367e95a
--- /dev/null
+++ b/source/javascripts/ghoststa_vendor.js
@@ -0,0 +1,9927 @@
+/*!
+ * jQuery JavaScript Library v2.1.4
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-04-28T16:01Z
+ */
+
+(function( global, factory ) {
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+		// For CommonJS and CommonJS-like environments where a proper `window`
+		// is present, execute the factory and get jQuery.
+		// For environments that do not have a `window` with a `document`
+		// (such as Node.js), expose a factory as module.exports.
+		// This accentuates the need for the creation of a real `window`.
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info.
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//
+
+var arr = [];
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+	// Use the correct document accordingly with window argument (sandbox)
+	document = window.document,
+
+	version = "2.1.4",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// Support: Android<4.1
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([\da-z])/gi,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
+
+jQuery.fn = jQuery.prototype = {
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// Start with an empty selector
+	selector: "",
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num != null ?
+
+			// Return just the one element from the set
+			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+			// Return all the elements in a clean array
+			slice.call( this );
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+		ret.context = this.context;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		}));
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor(null);
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[0] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// Skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+		target = {};
+	}
+
+	// Extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null ) {
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray(src) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject(src) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend({
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	isFunction: function( obj ) {
+		return jQuery.type(obj) === "function";
+	},
+
+	isArray: Array.isArray,
+
+	isWindow: function( obj ) {
+		return obj != null && obj === obj.window;
+	},
+
+	isNumeric: function( obj ) {
+		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
+		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+		// subtraction forces infinities to NaN
+		// adding 1 corrects loss of precision from parseFloat (#15100)
+		return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
+	},
+
+	isPlainObject: function( obj ) {
+		// Not plain objects:
+		// - Any object or value whose internal [[Class]] property is not "[object Object]"
+		// - DOM nodes
+		// - window
+		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		if ( obj.constructor &&
+				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
+			return false;
+		}
+
+		// If the function hasn't returned already, we're confident that
+		// |obj| is a plain object, created by {} or constructed with new Object
+		return true;
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+		// Support: Android<4.0, iOS<6 (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call(obj) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	globalEval: function( code ) {
+		var script,
+			indirect = eval;
+
+		code = jQuery.trim( code );
+
+		if ( code ) {
+			// If the code includes a valid, prologue position
+			// strict mode pragma, execute code by injecting a
+			// script tag into the document.
+			if ( code.indexOf("use strict") === 1 ) {
+				script = document.createElement("script");
+				script.text = code;
+				document.head.appendChild( script ).parentNode.removeChild( script );
+			} else {
+			// Otherwise, avoid the DOM node creation, insertion
+			// and removal by using an indirect global eval
+				indirect( code );
+			}
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Support: IE9-11+
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	// args is for internal usage only
+	each: function( obj, callback, args ) {
+		var value,
+			i = 0,
+			length = obj.length,
+			isArray = isArraylike( obj );
+
+		if ( args ) {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android<4.1
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArraylike( Object(arr) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike( elems ),
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArray ) {
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var tmp, args, proxy;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: Date.now,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+
+	// Support: iOS 8.2 (not reproducible in simulator)
+	// `in` check used to prevent JIT error (gh-2145)
+	// hasOwn isn't used here due to false negatives
+	// regarding Nodelist length in IE
+	var length = "length" in obj && obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	if ( obj.nodeType === 1 && length ) {
+		return true;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.2.0-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-12-16
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + 1 * new Date(),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// General-purpose constants
+	MAX_NEGATIVE = 1 << 31,
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf as it's faster than native
+	// http://jsperf.com/thor-indexof-vs-for/5
+	indexOf = function( list, elem ) {
+		var i = 0,
+			len = list.length;
+		for ( ; i < len; i++ ) {
+			if ( list[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+	// http://www.w3.org/TR/css3-syntax/#characters
+	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Loosely modeled on CSS identifier characters
+	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = characterEncoding.replace( "w", "w#" ),
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + characterEncoding + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rwhitespace = new RegExp( whitespace + "+", "g" ),
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
+		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+	rescape = /'|\\/g,
+
+	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	},
+
+	// Used for iframes
+	// See setDocument()
+	// Removing the function wrapper causes a "Permission Denied"
+	// error in IE
+	unloadHandler = function() {
+		setDocument();
+	};
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var match, elem, m, nodeType,
+		// QSA vars
+		i, groups, old, nid, newContext, newSelector;
+
+	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+		setDocument( context );
+	}
+
+	context = context || document;
+	results = results || [];
+	nodeType = context.nodeType;
+
+	if ( typeof selector !== "string" || !selector ||
+		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+		return results;
+	}
+
+	if ( !seed && documentIsHTML ) {
+
+		// Try to shortcut find operations when possible (e.g., not under DocumentFragment)
+		if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+			// Speed-up: Sizzle("#ID")
+			if ( (m = match[1]) ) {
+				if ( nodeType === 9 ) {
+					elem = context.getElementById( m );
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document (jQuery #6963)
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE, Opera, and Webkit return items
+						// by name instead of ID
+						if ( elem.id === m ) {
+							results.push( elem );
+							return results;
+						}
+					} else {
+						return results;
+					}
+				} else {
+					// Context is not a document
+					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+						contains( context, elem ) && elem.id === m ) {
+						results.push( elem );
+						return results;
+					}
+				}
+
+			// Speed-up: Sizzle("TAG")
+			} else if ( match[2] ) {
+				push.apply( results, context.getElementsByTagName( selector ) );
+				return results;
+
+			// Speed-up: Sizzle(".CLASS")
+			} else if ( (m = match[3]) && support.getElementsByClassName ) {
+				push.apply( results, context.getElementsByClassName( m ) );
+				return results;
+			}
+		}
+
+		// QSA path
+		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+			nid = old = expando;
+			newContext = context;
+			newSelector = nodeType !== 1 && selector;
+
+			// qSA works strangely on Element-rooted queries
+			// We can work around this by specifying an extra ID on the root
+			// and working up from there (Thanks to Andrew Dupont for the technique)
+			// IE 8 doesn't work on object elements
+			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+				groups = tokenize( selector );
+
+				if ( (old = context.getAttribute("id")) ) {
+					nid = old.replace( rescape, "\\$&" );
+				} else {
+					context.setAttribute( "id", nid );
+				}
+				nid = "[id='" + nid + "'] ";
+
+				i = groups.length;
+				while ( i-- ) {
+					groups[i] = nid + toSelector( groups[i] );
+				}
+				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+				newSelector = groups.join(",");
+			}
+
+			if ( newSelector ) {
+				try {
+					push.apply( results,
+						newContext.querySelectorAll( newSelector )
+					);
+					return results;
+				} catch(qsaError) {
+				} finally {
+					if ( !old ) {
+						context.removeAttribute("id");
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+	var div = document.createElement("div");
+
+	try {
+		return !!fn( div );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( div.parentNode ) {
+			div.parentNode.removeChild( div );
+		}
+		// release memory in IE
+		div = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = attrs.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			( ~b.sourceIndex || MAX_NEGATIVE ) -
+			( ~a.sourceIndex || MAX_NEGATIVE );
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare, parent,
+		doc = node ? node.ownerDocument || node : preferredDoc;
+
+	// If no document and documentElement is available, return
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Set our document
+	document = doc;
+	docElem = doc.documentElement;
+	parent = doc.defaultView;
+
+	// Support: IE>8
+	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
+	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+	// IE6-8 do not support the defaultView property so parent will be undefined
+	if ( parent && parent !== parent.top ) {
+		// IE11 does not have attachEvent, so all must suffer
+		if ( parent.addEventListener ) {
+			parent.addEventListener( "unload", unloadHandler, false );
+		} else if ( parent.attachEvent ) {
+			parent.attachEvent( "onunload", unloadHandler );
+		}
+	}
+
+	/* Support tests
+	---------------------------------------------------------------------- */
+	documentIsHTML = !isXML( doc );
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties
+	// (excepting IE8 booleans)
+	support.attributes = assert(function( div ) {
+		div.className = "i";
+		return !div.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( div ) {
+		div.appendChild( doc.createComment("") );
+		return !div.getElementsByTagName("*").length;
+	});
+
+	// Support: IE<9
+	support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( div ) {
+		docElem.appendChild( div ).id = expando;
+		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+	});
+
+	// ID find and filter
+	if ( support.getById ) {
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var m = context.getElementById( id );
+				// Check parentNode to catch when Blackberry 4.6 returns
+				// nodes that are no longer in the document #6963
+				return m && m.parentNode ? [ m ] : [];
+			}
+		};
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+	} else {
+		// Support: IE6/7
+		// getElementById is not reliable as a find shortcut
+		delete Expr.find["ID"];
+
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( tag );
+
+			// DocumentFragment nodes don't have gEBTN
+			} else if ( support.qsa ) {
+				return context.querySelectorAll( tag );
+			}
+		} :
+
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See http://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( div ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// http://bugs.jquery.com/ticket/12359
+			docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+				"<select id='" + expando + "-\f]' msallowcapture=''>" +
+				"<option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !div.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
+			if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+				rbuggyQSA.push("~=");
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+
+			// Support: Safari 8+, iOS 8+
+			// https://bugs.webkit.org/show_bug.cgi?id=136851
+			// In-page `selector#id sibing-combinator selector` fails
+			if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+				rbuggyQSA.push(".#.+[+~]");
+			}
+		});
+
+		assert(function( div ) {
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = doc.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			div.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( div.querySelectorAll("[name=d]").length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":enabled").length ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			div.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( div ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( div, "div" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( div, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully does not implement inclusive descendent
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+			// Choose the first element that is related to our preferred document
+			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+				return -1;
+			}
+			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+			return a === doc ? -1 :
+				b === doc ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch (e) {}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		while ( (node = elem[i++]) ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[6] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] ) {
+				match[2] = match[4] || match[5] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, outerCache, node, diff, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+							// Seek `elem` from a previously-cached index
+							outerCache = parent[ expando ] || (parent[ expando ] = {});
+							cache = outerCache[ type ] || [];
+							nodeIndex = cache[0] === dirruns && cache[1];
+							diff = cache[0] === dirruns && cache[2];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						// Use previously-cached element index if available
+						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+							diff = cache[1];
+
+						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+						} else {
+							// Use the same loop as above to seek `elem` from the start
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+									// Cache the index of each encountered element
+									if ( useCache ) {
+										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+									}
+
+									if ( node === elem ) {
+										break;
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					// Don't keep the element (issue #299)
+					input[0] = null;
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			text = text.replace( runescape, funescape );
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": function( elem ) {
+			return elem.disabled === false;
+		},
+
+		"disabled": function( elem ) {
+			return elem.disabled === true;
+		},
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( (tokens = []) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		checkNonElements = base && dir === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+						if ( (oldCache = outerCache[ dir ]) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return (newCache[ 2 ] = oldCache[ 2 ]);
+						} else {
+							// Reuse newcache so results back-propagate to previous elements
+							outerCache[ dir ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+			// Avoid hanging onto element (issue #299)
+			checkContext = null;
+			return ret;
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+				len = elems.length;
+
+			if ( outermost ) {
+				outermostContext = context !== document && context;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context, xml ) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// Apply set filters to unmatched elements
+			matchedCount += i;
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is no seed and only one group
+	if ( match.length === 1 ) {
+
+		// Take a shortcut and set the context if the root selector is an ID
+		tokens = match[0] = match[0].slice( 0 );
+		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+				support.getById && context.nodeType === 9 && documentIsHTML &&
+				Expr.relative[ tokens[1].type ] ) {
+
+			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[i];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ (type = token.type) ] ) {
+				break;
+			}
+			if ( (find = Expr.find[ type ]) ) {
+				// Search, expanding context for leading sibling combinators
+				if ( (seed = find(
+					token.matches[0].replace( runescape, funescape ),
+					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+				)) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+	// Should return 1, but returns 4 (following)
+	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+	div.innerHTML = "<a href='#'></a>";
+	return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+	div.innerHTML = "<input/>";
+	div.firstChild.setAttribute( "value", "" );
+	return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+	return div.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+					(val = elem.getAttributeNode( name )) && val.specified ?
+					val.value :
+				null;
+		}
+	});
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			/* jshint -W018 */
+			return !!qualifier.call( elem, i, elem ) !== not;
+		});
+
+	}
+
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		});
+
+	}
+
+	if ( typeof qualifier === "string" ) {
+		if ( risSimple.test( qualifier ) ) {
+			return jQuery.filter( qualifier, elements, not );
+		}
+
+		qualifier = jQuery.filter( qualifier, elements );
+	}
+
+	return jQuery.grep( elements, function( elem ) {
+		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
+	});
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	return elems.length === 1 && elem.nodeType === 1 ?
+		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+			return elem.nodeType === 1;
+		}));
+};
+
+jQuery.fn.extend({
+	find: function( selector ) {
+		var i,
+			len = this.length,
+			ret = [],
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter(function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			}) );
+		}
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		// Needed because $( selector, context ) becomes $( context ).find( selector )
+		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+		ret.selector = this.selector ? this.selector + " " + selector : selector;
+		return ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], false) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], true) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+});
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+	init = jQuery.fn.init = function( selector, context ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && (match[1] || !context) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[1] ) {
+					context = context instanceof jQuery ? context[0] : context;
+
+					// Option to run scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[1],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[2] );
+
+					// Support: Blackberry 4.6
+					// gEBID returns nodes no longer in the document (#6963)
+					if ( elem && elem.parentNode ) {
+						// Inject the element directly into the jQuery object
+						this.length = 1;
+						this[0] = elem;
+					}
+
+					this.context = document;
+					this.selector = selector;
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || rootjQuery ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this.context = this[0] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return typeof rootjQuery.ready !== "undefined" ?
+				rootjQuery.ready( selector ) :
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		if ( selector.selector !== undefined ) {
+			this.selector = selector.selector;
+			this.context = selector.context;
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+	// Methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.extend({
+	dir: function( elem, dir, until ) {
+		var matched = [],
+			truncate = until !== undefined;
+
+		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
+			if ( elem.nodeType === 1 ) {
+				if ( truncate && jQuery( elem ).is( until ) ) {
+					break;
+				}
+				matched.push( elem );
+			}
+		}
+		return matched;
+	},
+
+	sibling: function( n, elem ) {
+		var matched = [];
+
+		for ( ; n; n = n.nextSibling ) {
+			if ( n.nodeType === 1 && n !== elem ) {
+				matched.push( n );
+			}
+		}
+
+		return matched;
+	}
+});
+
+jQuery.fn.extend({
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter(function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[i] ) ) {
+					return true;
+				}
+			}
+		});
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+				jQuery( selectors, context || this.context ) :
+				0;
+
+		for ( ; i < l; i++ ) {
+			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+				// Always skip document fragments
+				if ( cur.nodeType < 11 && (pos ?
+					pos.index(cur) > -1 :
+
+					// Don't pass non-elements to Sizzle
+					cur.nodeType === 1 &&
+						jQuery.find.matchesSelector(cur, selectors)) ) {
+
+					matched.push( cur );
+					break;
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+	},
+
+	// Determine the position of an element within the set
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// Index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.unique(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter(selector)
+		);
+	}
+});
+
+function sibling( cur, dir ) {
+	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each({
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return jQuery.dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return jQuery.dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return jQuery.dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return jQuery.sibling( elem.firstChild );
+	},
+	contents: function( elem ) {
+		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.unique( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+});
+var rnotwhite = (/\S+/g);
+
+
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+	var object = optionsCache[ options ] = {};
+	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	});
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		( optionsCache[ options ] || createOptions( options ) ) :
+		jQuery.extend( {}, options );
+
+	var // Last fire value (for non-forgettable lists)
+		memory,
+		// Flag to know if list was already fired
+		fired,
+		// Flag to know if list is currently firing
+		firing,
+		// First callback to fire (used internally by add and fireWith)
+		firingStart,
+		// End of the loop when firing
+		firingLength,
+		// Index of currently firing callback (modified by remove if needed)
+		firingIndex,
+		// Actual callback list
+		list = [],
+		// Stack of fire calls for repeatable lists
+		stack = !options.once && [],
+		// Fire callbacks
+		fire = function( data ) {
+			memory = options.memory && data;
+			fired = true;
+			firingIndex = firingStart || 0;
+			firingStart = 0;
+			firingLength = list.length;
+			firing = true;
+			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+					memory = false; // To prevent further calls using add
+					break;
+				}
+			}
+			firing = false;
+			if ( list ) {
+				if ( stack ) {
+					if ( stack.length ) {
+						fire( stack.shift() );
+					}
+				} else if ( memory ) {
+					list = [];
+				} else {
+					self.disable();
+				}
+			}
+		},
+		// Actual Callbacks object
+		self = {
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+					// First, we save the current length
+					var start = list.length;
+					(function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							var type = jQuery.type( arg );
+							if ( type === "function" ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && type !== "string" ) {
+								// Inspect recursively
+								add( arg );
+							}
+						});
+					})( arguments );
+					// Do we need to add the callbacks to the
+					// current firing batch?
+					if ( firing ) {
+						firingLength = list.length;
+					// With memory, if we're not firing then
+					// we should call right away
+					} else if ( memory ) {
+						firingStart = start;
+						fire( memory );
+					}
+				}
+				return this;
+			},
+			// Remove a callback from the list
+			remove: function() {
+				if ( list ) {
+					jQuery.each( arguments, function( _, arg ) {
+						var index;
+						while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+							list.splice( index, 1 );
+							// Handle firing indexes
+							if ( firing ) {
+								if ( index <= firingLength ) {
+									firingLength--;
+								}
+								if ( index <= firingIndex ) {
+									firingIndex--;
+								}
+							}
+						}
+					});
+				}
+				return this;
+			},
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+			},
+			// Remove all callbacks from the list
+			empty: function() {
+				list = [];
+				firingLength = 0;
+				return this;
+			},
+			// Have the list do nothing anymore
+			disable: function() {
+				list = stack = memory = undefined;
+				return this;
+			},
+			// Is it disabled?
+			disabled: function() {
+				return !list;
+			},
+			// Lock the list in its current state
+			lock: function() {
+				stack = undefined;
+				if ( !memory ) {
+					self.disable();
+				}
+				return this;
+			},
+			// Is it locked?
+			locked: function() {
+				return !stack;
+			},
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( list && ( !fired || stack ) ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					if ( firing ) {
+						stack.push( args );
+					} else {
+						fire( args );
+					}
+				}
+				return this;
+			},
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+
+
+jQuery.extend({
+
+	Deferred: function( func ) {
+		var tuples = [
+				// action, add listener, listener list, final state
+				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+				[ "notify", "progress", jQuery.Callbacks("memory") ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				then: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+					return jQuery.Deferred(function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+							// deferred[ done | fail | progress ] for forwarding actions to newDefer
+							deferred[ tuple[1] ](function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && jQuery.isFunction( returned.promise ) ) {
+									returned.promise()
+										.done( newDefer.resolve )
+										.fail( newDefer.reject )
+										.progress( newDefer.notify );
+								} else {
+									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+								}
+							});
+						});
+						fns = null;
+					}).promise();
+				},
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Keep pipe for back-compat
+		promise.pipe = promise.then;
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 3 ];
+
+			// promise[ done | fail | progress ] = list.add
+			promise[ tuple[1] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(function() {
+					// state = [ resolved | rejected ]
+					state = stateString;
+
+				// [ reject_list | resolve_list ].disable; progress_list.lock
+				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+			}
+
+			// deferred[ resolve | reject | notify ]
+			deferred[ tuple[0] ] = function() {
+				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+				return this;
+			};
+			deferred[ tuple[0] + "With" ] = list.fireWith;
+		});
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( subordinate /* , ..., subordinateN */ ) {
+		var i = 0,
+			resolveValues = slice.call( arguments ),
+			length = resolveValues.length,
+
+			// the count of uncompleted subordinates
+			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+			// Update function for both resolve and progress values
+			updateFunc = function( i, contexts, values ) {
+				return function( value ) {
+					contexts[ i ] = this;
+					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+					if ( values === progressValues ) {
+						deferred.notifyWith( contexts, values );
+					} else if ( !( --remaining ) ) {
+						deferred.resolveWith( contexts, values );
+					}
+				};
+			},
+
+			progressValues, progressContexts, resolveContexts;
+
+		// Add listeners to Deferred subordinates; treat others as resolved
+		if ( length > 1 ) {
+			progressValues = new Array( length );
+			progressContexts = new Array( length );
+			resolveContexts = new Array( length );
+			for ( ; i < length; i++ ) {
+				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+					resolveValues[ i ].promise()
+						.done( updateFunc( i, resolveContexts, resolveValues ) )
+						.fail( deferred.reject )
+						.progress( updateFunc( i, progressContexts, progressValues ) );
+				} else {
+					--remaining;
+				}
+			}
+		}
+
+		// If we're not waiting on anything, resolve the master
+		if ( !remaining ) {
+			deferred.resolveWith( resolveContexts, resolveValues );
+		}
+
+		return deferred.promise();
+	}
+});
+
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+	// Add the callback
+	jQuery.ready.promise().done( fn );
+
+	return this;
+};
+
+jQuery.extend({
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Hold (or release) the ready event
+	holdReady: function( hold ) {
+		if ( hold ) {
+			jQuery.readyWait++;
+		} else {
+			jQuery.ready( true );
+		}
+	},
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+
+		// Trigger any bound ready events
+		if ( jQuery.fn.triggerHandler ) {
+			jQuery( document ).triggerHandler( "ready" );
+			jQuery( document ).off( "ready" );
+		}
+	}
+});
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+	document.removeEventListener( "DOMContentLoaded", completed, false );
+	window.removeEventListener( "load", completed, false );
+	jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+	if ( !readyList ) {
+
+		readyList = jQuery.Deferred();
+
+		// Catch cases where $(document).ready() is called after the browser event has already occurred.
+		// We once tried to use readyState "interactive" here, but it caused issues like the one
+		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+		if ( document.readyState === "complete" ) {
+			// Handle it asynchronously to allow scripts the opportunity to delay ready
+			setTimeout( jQuery.ready );
+
+		} else {
+
+			// Use the handy event callback
+			document.addEventListener( "DOMContentLoaded", completed, false );
+
+			// A fallback to window.onload, that will always work
+			window.addEventListener( "load", completed, false );
+		}
+	}
+	return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+	var i = 0,
+		len = elems.length,
+		bulk = key == null;
+
+	// Sets many values
+	if ( jQuery.type( key ) === "object" ) {
+		chainable = true;
+		for ( i in key ) {
+			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+		}
+
+	// Sets one value
+	} else if ( value !== undefined ) {
+		chainable = true;
+
+		if ( !jQuery.isFunction( value ) ) {
+			raw = true;
+		}
+
+		if ( bulk ) {
+			// Bulk operations run against the entire set
+			if ( raw ) {
+				fn.call( elems, value );
+				fn = null;
+
+			// ...except when executing function values
+			} else {
+				bulk = fn;
+				fn = function( elem, key, value ) {
+					return bulk.call( jQuery( elem ), value );
+				};
+			}
+		}
+
+		if ( fn ) {
+			for ( ; i < len; i++ ) {
+				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+			}
+		}
+	}
+
+	return chainable ?
+		elems :
+
+		// Gets
+		bulk ?
+			fn.call( elems ) :
+			len ? fn( elems[0], key ) : emptyGet;
+};
+
+
+/**
+ * Determines whether an object can have data
+ */
+jQuery.acceptData = function( owner ) {
+	// Accepts only:
+	//  - Node
+	//    - Node.ELEMENT_NODE
+	//    - Node.DOCUMENT_NODE
+	//  - Object
+	//    - Any
+	/* jshint -W018 */
+	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+function Data() {
+	// Support: Android<4,
+	// Old WebKit does not have Object.preventExtensions/freeze method,
+	// return new empty object instead with no [[set]] accessor
+	Object.defineProperty( this.cache = {}, 0, {
+		get: function() {
+			return {};
+		}
+	});
+
+	this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+Data.accepts = jQuery.acceptData;
+
+Data.prototype = {
+	key: function( owner ) {
+		// We can accept data for non-element nodes in modern browsers,
+		// but we should not, see #8335.
+		// Always return the key for a frozen object.
+		if ( !Data.accepts( owner ) ) {
+			return 0;
+		}
+
+		var descriptor = {},
+			// Check if the owner object already has a cache key
+			unlock = owner[ this.expando ];
+
+		// If not, create one
+		if ( !unlock ) {
+			unlock = Data.uid++;
+
+			// Secure it in a non-enumerable, non-writable property
+			try {
+				descriptor[ this.expando ] = { value: unlock };
+				Object.defineProperties( owner, descriptor );
+
+			// Support: Android<4
+			// Fallback to a less secure definition
+			} catch ( e ) {
+				descriptor[ this.expando ] = unlock;
+				jQuery.extend( owner, descriptor );
+			}
+		}
+
+		// Ensure the cache object
+		if ( !this.cache[ unlock ] ) {
+			this.cache[ unlock ] = {};
+		}
+
+		return unlock;
+	},
+	set: function( owner, data, value ) {
+		var prop,
+			// There may be an unlock assigned to this node,
+			// if there is no entry for this "owner", create one inline
+			// and set the unlock as though an owner entry had always existed
+			unlock = this.key( owner ),
+			cache = this.cache[ unlock ];
+
+		// Handle: [ owner, key, value ] args
+		if ( typeof data === "string" ) {
+			cache[ data ] = value;
+
+		// Handle: [ owner, { properties } ] args
+		} else {
+			// Fresh assignments by object are shallow copied
+			if ( jQuery.isEmptyObject( cache ) ) {
+				jQuery.extend( this.cache[ unlock ], data );
+			// Otherwise, copy the properties one-by-one to the cache object
+			} else {
+				for ( prop in data ) {
+					cache[ prop ] = data[ prop ];
+				}
+			}
+		}
+		return cache;
+	},
+	get: function( owner, key ) {
+		// Either a valid cache is found, or will be created.
+		// New caches will be created and the unlock returned,
+		// allowing direct access to the newly created
+		// empty data object. A valid owner object must be provided.
+		var cache = this.cache[ this.key( owner ) ];
+
+		return key === undefined ?
+			cache : cache[ key ];
+	},
+	access: function( owner, key, value ) {
+		var stored;
+		// In cases where either:
+		//
+		//   1. No key was specified
+		//   2. A string key was specified, but no value provided
+		//
+		// Take the "read" path and allow the get method to determine
+		// which value to return, respectively either:
+		//
+		//   1. The entire cache object
+		//   2. The data stored at the key
+		//
+		if ( key === undefined ||
+				((key && typeof key === "string") && value === undefined) ) {
+
+			stored = this.get( owner, key );
+
+			return stored !== undefined ?
+				stored : this.get( owner, jQuery.camelCase(key) );
+		}
+
+		// [*]When the key is not a string, or both a key and value
+		// are specified, set or extend (existing objects) with either:
+		//
+		//   1. An object of properties
+		//   2. A key and value
+		//
+		this.set( owner, key, value );
+
+		// Since the "set" path can have two possible entry points
+		// return the expected data based on which path was taken[*]
+		return value !== undefined ? value : key;
+	},
+	remove: function( owner, key ) {
+		var i, name, camel,
+			unlock = this.key( owner ),
+			cache = this.cache[ unlock ];
+
+		if ( key === undefined ) {
+			this.cache[ unlock ] = {};
+
+		} else {
+			// Support array or space separated string of keys
+			if ( jQuery.isArray( key ) ) {
+				// If "name" is an array of keys...
+				// When data is initially created, via ("key", "val") signature,
+				// keys will be converted to camelCase.
+				// Since there is no way to tell _how_ a key was added, remove
+				// both plain key and camelCase key. #12786
+				// This will only penalize the array argument path.
+				name = key.concat( key.map( jQuery.camelCase ) );
+			} else {
+				camel = jQuery.camelCase( key );
+				// Try the string as a key before any manipulation
+				if ( key in cache ) {
+					name = [ key, camel ];
+				} else {
+					// If a key with the spaces exists, use it.
+					// Otherwise, create an array by matching non-whitespace
+					name = camel;
+					name = name in cache ?
+						[ name ] : ( name.match( rnotwhite ) || [] );
+				}
+			}
+
+			i = name.length;
+			while ( i-- ) {
+				delete cache[ name[ i ] ];
+			}
+		}
+	},
+	hasData: function( owner ) {
+		return !jQuery.isEmptyObject(
+			this.cache[ owner[ this.expando ] ] || {}
+		);
+	},
+	discard: function( owner ) {
+		if ( owner[ this.expando ] ) {
+			delete this.cache[ owner[ this.expando ] ];
+		}
+	}
+};
+var data_priv = new Data();
+
+var data_user = new Data();
+
+
+
+//	Implementation Summary
+//
+//	1. Enforce API surface and semantic compatibility with 1.9.x branch
+//	2. Improve the module's maintainability by reducing the storage
+//		paths to a single mechanism.
+//	3. Use the same single mechanism to support "private" and "user" data.
+//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//	5. Avoid exposing implementation details on user objects (eg. expando properties)
+//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+	rmultiDash = /([A-Z])/g;
+
+function dataAttr( elem, key, data ) {
+	var name;
+
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+		name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = data === "true" ? true :
+					data === "false" ? false :
+					data === "null" ? null :
+					// Only convert to a number if it doesn't change the string
+					+data + "" === data ? +data :
+					rbrace.test( data ) ? jQuery.parseJSON( data ) :
+					data;
+			} catch( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			data_user.set( elem, key, data );
+		} else {
+			data = undefined;
+		}
+	}
+	return data;
+}
+
+jQuery.extend({
+	hasData: function( elem ) {
+		return data_user.hasData( elem ) || data_priv.hasData( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return data_user.access( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		data_user.remove( elem, name );
+	},
+
+	// TODO: Now that all calls to _data and _removeData have been replaced
+	// with direct calls to data_priv methods, these can be deprecated.
+	_data: function( elem, name, data ) {
+		return data_priv.access( elem, name, data );
+	},
+
+	_removeData: function( elem, name ) {
+		data_priv.remove( elem, name );
+	}
+});
+
+jQuery.fn.extend({
+	data: function( key, value ) {
+		var i, name, data,
+			elem = this[ 0 ],
+			attrs = elem && elem.attributes;
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = data_user.get( elem );
+
+				if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
+					i = attrs.length;
+					while ( i-- ) {
+
+						// Support: IE11+
+						// The attrs elements can be null (#14894)
+						if ( attrs[ i ] ) {
+							name = attrs[ i ].name;
+							if ( name.indexOf( "data-" ) === 0 ) {
+								name = jQuery.camelCase( name.slice(5) );
+								dataAttr( elem, name, data[ name ] );
+							}
+						}
+					}
+					data_priv.set( elem, "hasDataAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each(function() {
+				data_user.set( this, key );
+			});
+		}
+
+		return access( this, function( value ) {
+			var data,
+				camelKey = jQuery.camelCase( key );
+
+			// The calling jQuery object (element matches) is not empty
+			// (and therefore has an element appears at this[ 0 ]) and the
+			// `value` parameter was not undefined. An empty jQuery object
+			// will result in `undefined` for elem = this[ 0 ] which will
+			// throw an exception if an attempt to read a data cache is made.
+			if ( elem && value === undefined ) {
+				// Attempt to get data from the cache
+				// with the key as-is
+				data = data_user.get( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to get data from the cache
+				// with the key camelized
+				data = data_user.get( elem, camelKey );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to "discover" the data in
+				// HTML5 custom data-* attrs
+				data = dataAttr( elem, camelKey, undefined );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// We tried really hard, but the data doesn't exist.
+				return;
+			}
+
+			// Set the data...
+			this.each(function() {
+				// First, attempt to store a copy or reference of any
+				// data that might've been store with a camelCased key.
+				var data = data_user.get( this, camelKey );
+
+				// For HTML5 data-* attribute interop, we have to
+				// store property names with dashes in a camelCase form.
+				// This might not apply to all properties...*
+				data_user.set( this, camelKey, value );
+
+				// *... In the case of properties that might _actually_
+				// have dashes, we need to also store a copy of that
+				// unchanged property.
+				if ( key.indexOf("-") !== -1 && data !== undefined ) {
+					data_user.set( this, key, value );
+				}
+			});
+		}, null, value, arguments.length > 1, null, true );
+	},
+
+	removeData: function( key ) {
+		return this.each(function() {
+			data_user.remove( this, key );
+		});
+	}
+});
+
+
+jQuery.extend({
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = data_priv.get( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || jQuery.isArray( data ) ) {
+					queue = data_priv.access( elem, type, jQuery.makeArray(data) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// Clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// Not public - generate a queueHooks object, or return the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return data_priv.get( elem, key ) || data_priv.access( elem, key, {
+			empty: jQuery.Callbacks("once memory").add(function() {
+				data_priv.remove( elem, [ type + "queue", key ] );
+			})
+		});
+	}
+});
+
+jQuery.fn.extend({
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[0], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each(function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// Ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[0] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			});
+	},
+	dequeue: function( type ) {
+		return this.each(function() {
+			jQuery.dequeue( this, type );
+		});
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while ( i-- ) {
+			tmp = data_priv.get( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+});
+var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHidden = function( elem, el ) {
+		// isHidden might be called from jQuery#filter function;
+		// in that case, element will be second argument
+		elem = el || elem;
+		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+	};
+
+var rcheckableType = (/^(?:checkbox|radio)$/i);
+
+
+
+(function() {
+	var fragment = document.createDocumentFragment(),
+		div = fragment.appendChild( document.createElement( "div" ) ),
+		input = document.createElement( "input" );
+
+	// Support: Safari<=5.1
+	// Check state lost if the name is set (#11217)
+	// Support: Windows Web Apps (WWA)
+	// `name` and `type` must use .setAttribute for WWA (#14901)
+	input.setAttribute( "type", "radio" );
+	input.setAttribute( "checked", "checked" );
+	input.setAttribute( "name", "t" );
+
+	div.appendChild( input );
+
+	// Support: Safari<=5.1, Android<4.2
+	// Older WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE<=11+
+	// Make sure textarea (and checkbox) defaultValue is properly cloned
+	div.innerHTML = "<textarea>x</textarea>";
+	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+})();
+var strundefined = typeof undefined;
+
+
+
+support.focusinBubbles = "onfocusin" in window;
+
+
+var
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
+	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var handleObjIn, eventHandle, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = data_priv.get( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !(events = elemData.events) ) {
+			events = elemData.events = {};
+		}
+		if ( !(eventHandle = elemData.handle) ) {
+			eventHandle = elemData.handle = function( e ) {
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
+					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+			};
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( rnotwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend({
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join(".")
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !(handlers = events[ type ]) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener if the special events handler returns false
+				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle, false );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var j, origCount, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = data_priv.hasData( elem ) && data_priv.get( elem );
+
+		if ( !elemData || !(events = elemData.events) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( rnotwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			delete elemData.handle;
+			data_priv.remove( elem, "events" );
+		}
+	},
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+
+		var i, cur, tmp, bubbleType, ontype, handle, special,
+			eventPath = [ elem || document ],
+			type = hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+		cur = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf(".") >= 0 ) {
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split(".");
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf(":") < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join(".");
+		event.namespace_re = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === (elem.ownerDocument || document) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
+				event.result = handle.apply( cur, data );
+				if ( event.result === false ) {
+					event.preventDefault();
+				}
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+				jQuery.acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name name as the event.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					elem[ type ]();
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	dispatch: function( event ) {
+
+		// Make a writable jQuery.Event from the native event object
+		event = jQuery.event.fix( event );
+
+		var i, j, ret, matched, handleObj,
+			handlerQueue = [],
+			args = slice.call( arguments ),
+			handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[0] = event;
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
+				// a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+							.apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( (event.result = ret) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var i, matches, sel, handleObj,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		// Black-hole SVG <use> instance trees (#13180)
+		// Avoid non-left-click bubbling in Firefox (#3861)
+		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+			for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.disabled !== true || event.type !== "click" ) {
+					matches = [];
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matches[ sel ] === undefined ) {
+							matches[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) >= 0 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matches[ sel ] ) {
+							matches.push( handleObj );
+						}
+					}
+					if ( matches.length ) {
+						handlerQueue.push({ elem: cur, handlers: matches });
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+		}
+
+		return handlerQueue;
+	},
+
+	// Includes some event props shared by KeyEvent and MouseEvent
+	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+	fixHooks: {},
+
+	keyHooks: {
+		props: "char charCode key keyCode".split(" "),
+		filter: function( event, original ) {
+
+			// Add which for key events
+			if ( event.which == null ) {
+				event.which = original.charCode != null ? original.charCode : original.keyCode;
+			}
+
+			return event;
+		}
+	},
+
+	mouseHooks: {
+		props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+		filter: function( event, original ) {
+			var eventDoc, doc, body,
+				button = original.button;
+
+			// Calculate pageX/Y if missing and clientX/Y available
+			if ( event.pageX == null && original.clientX != null ) {
+				eventDoc = event.target.ownerDocument || document;
+				doc = eventDoc.documentElement;
+				body = eventDoc.body;
+
+				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+			}
+
+			// Add which for click: 1 === left; 2 === middle; 3 === right
+			// Note: button is not normalized, so don't use it
+			if ( !event.which && button !== undefined ) {
+				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+			}
+
+			return event;
+		}
+	},
+
+	fix: function( event ) {
+		if ( event[ jQuery.expando ] ) {
+			return event;
+		}
+
+		// Create a writable copy of the event object and normalize some properties
+		var i, prop, copy,
+			type = event.type,
+			originalEvent = event,
+			fixHook = this.fixHooks[ type ];
+
+		if ( !fixHook ) {
+			this.fixHooks[ type ] = fixHook =
+				rmouseEvent.test( type ) ? this.mouseHooks :
+				rkeyEvent.test( type ) ? this.keyHooks :
+				{};
+		}
+		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+		event = new jQuery.Event( originalEvent );
+
+		i = copy.length;
+		while ( i-- ) {
+			prop = copy[ i ];
+			event[ prop ] = originalEvent[ prop ];
+		}
+
+		// Support: Cordova 2.5 (WebKit) (#13255)
+		// All events should have a target; Cordova deviceready doesn't
+		if ( !event.target ) {
+			event.target = document;
+		}
+
+		// Support: Safari 6.0+, Chrome<28
+		// Target should not be a text node (#504, #13143)
+		if ( event.target.nodeType === 3 ) {
+			event.target = event.target.parentNode;
+		}
+
+		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+	},
+
+	special: {
+		load: {
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					this.focus();
+					return false;
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return jQuery.nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Support: Firefox 20+
+				// Firefox doesn't alert if the returnValue field is not set.
+				if ( event.result !== undefined && event.originalEvent ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	},
+
+	simulate: function( type, elem, event, bubble ) {
+		// Piggyback on a donor event to simulate a different one.
+		// Fake originalEvent to avoid donor's stopPropagation, but if the
+		// simulated event prevents default then we do the same on the donor.
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true,
+				originalEvent: {}
+			}
+		);
+		if ( bubble ) {
+			jQuery.event.trigger( e, null, elem );
+		} else {
+			jQuery.event.dispatch.call( elem, e );
+		}
+		if ( e.isDefaultPrevented() ) {
+			event.preventDefault();
+		}
+	}
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+	if ( elem.removeEventListener ) {
+		elem.removeEventListener( type, handle, false );
+	}
+};
+
+jQuery.Event = function( src, props ) {
+	// Allow instantiation without the 'new' keyword
+	if ( !(this instanceof jQuery.Event) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = src.defaultPrevented ||
+				src.defaultPrevented === undefined &&
+				// Support: Android<4.0
+				src.returnValue === false ?
+			returnTrue :
+			returnFalse;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+
+		if ( e && e.preventDefault ) {
+			e.preventDefault();
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+
+		if ( e && e.stopPropagation ) {
+			e.stopPropagation();
+		}
+	},
+	stopImmediatePropagation: function() {
+		var e = this.originalEvent;
+
+		this.isImmediatePropagationStopped = returnTrue;
+
+		if ( e && e.stopImmediatePropagation ) {
+			e.stopImmediatePropagation();
+		}
+
+		this.stopPropagation();
+	}
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// Support: Chrome 15+
+jQuery.each({
+	mouseenter: "mouseover",
+	mouseleave: "mouseout",
+	pointerenter: "pointerover",
+	pointerleave: "pointerout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mousenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+});
+
+// Support: Firefox, Chrome, Safari
+// Create "bubbling" focus and blur events
+if ( !support.focusinBubbles ) {
+	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler on the document while someone wants focusin/focusout
+		var handler = function( event ) {
+				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+			};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				var doc = this.ownerDocument || this,
+					attaches = data_priv.access( doc, fix );
+
+				if ( !attaches ) {
+					doc.addEventListener( orig, handler, true );
+				}
+				data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
+			},
+			teardown: function() {
+				var doc = this.ownerDocument || this,
+					attaches = data_priv.access( doc, fix ) - 1;
+
+				if ( !attaches ) {
+					doc.removeEventListener( orig, handler, true );
+					data_priv.remove( doc, fix );
+
+				} else {
+					data_priv.access( doc, fix, attaches );
+				}
+			}
+		};
+	});
+}
+
+jQuery.fn.extend({
+
+	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+		var origFn, type;
+
+		// Types can be a map of types/handlers
+		if ( typeof types === "object" ) {
+			// ( types-Object, selector, data )
+			if ( typeof selector !== "string" ) {
+				// ( types-Object, data )
+				data = data || selector;
+				selector = undefined;
+			}
+			for ( type in types ) {
+				this.on( type, selector, data, types[ type ], one );
+			}
+			return this;
+		}
+
+		if ( data == null && fn == null ) {
+			// ( types, fn )
+			fn = selector;
+			data = selector = undefined;
+		} else if ( fn == null ) {
+			if ( typeof selector === "string" ) {
+				// ( types, selector, fn )
+				fn = data;
+				data = undefined;
+			} else {
+				// ( types, data, fn )
+				fn = data;
+				data = selector;
+				selector = undefined;
+			}
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		} else if ( !fn ) {
+			return this;
+		}
+
+		if ( one === 1 ) {
+			origFn = fn;
+			fn = function( event ) {
+				// Can use an empty set, since event contains the info
+				jQuery().off( event );
+				return origFn.apply( this, arguments );
+			};
+			// Use same guid so caller can remove using origFn
+			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+		}
+		return this.each( function() {
+			jQuery.event.add( this, types, fn, data, selector );
+		});
+	},
+	one: function( types, selector, data, fn ) {
+		return this.on( types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each(function() {
+			jQuery.event.remove( this, types, fn, selector );
+		});
+	},
+
+	trigger: function( type, data ) {
+		return this.each(function() {
+			jQuery.event.trigger( type, data, this );
+		});
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[0];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+});
+
+
+var
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+	rtagName = /<([\w:]+)/,
+	rhtml = /<|&#?\w+;/,
+	rnoInnerhtml = /<(?:script|style|link)/i,
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptType = /^$|\/(?:java|ecma)script/i,
+	rscriptTypeMasked = /^true\/(.*)/,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+	// We have to close these tags to support XHTML (#13200)
+	wrapMap = {
+
+		// Support: IE9
+		option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+		thead: [ 1, "<table>", "</table>" ],
+		col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+		_default: [ 0, "", "" ]
+	};
+
+// Support: IE9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: 1.x compatibility
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+	return jQuery.nodeName( elem, "table" ) &&
+		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+		elem.getElementsByTagName("tbody")[0] ||
+			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+		elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	var match = rscriptTypeMasked.exec( elem.type );
+
+	if ( match ) {
+		elem.type = match[ 1 ];
+	} else {
+		elem.removeAttribute("type");
+	}
+
+	return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		data_priv.set(
+			elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
+		);
+	}
+}
+
+function cloneCopyEvent( src, dest ) {
+	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// 1. Copy private data: events, handlers, etc.
+	if ( data_priv.hasData( src ) ) {
+		pdataOld = data_priv.access( src );
+		pdataCur = data_priv.set( dest, pdataOld );
+		events = pdataOld.events;
+
+		if ( events ) {
+			delete pdataCur.handle;
+			pdataCur.events = {};
+
+			for ( type in events ) {
+				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+					jQuery.event.add( dest, type, events[ type ][ i ] );
+				}
+			}
+		}
+	}
+
+	// 2. Copy user data
+	if ( data_user.hasData( src ) ) {
+		udataOld = data_user.access( src );
+		udataCur = jQuery.extend( {}, udataOld );
+
+		data_user.set( dest, udataCur );
+	}
+}
+
+function getAll( context, tag ) {
+	var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
+			context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
+			[];
+
+	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+		jQuery.merge( [ context ], ret ) :
+		ret;
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+	var nodeName = dest.nodeName.toLowerCase();
+
+	// Fails to persist the checked state of a cloned checkbox or radio button.
+	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+		dest.checked = src.checked;
+
+	// Fails to return the selected option to the default selected state when cloning options
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+jQuery.extend({
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var i, l, srcElements, destElements,
+			clone = elem.cloneNode( true ),
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		// Fix IE cloning issues
+		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+				!jQuery.isXMLDoc( elem ) ) {
+
+			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			for ( i = 0, l = srcElements.length; i < l; i++ ) {
+				fixInput( srcElements[ i ], destElements[ i ] );
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0, l = srcElements.length; i < l; i++ ) {
+					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		// Return the cloned set
+		return clone;
+	},
+
+	buildFragment: function( elems, context, scripts, selection ) {
+		var elem, tmp, tag, wrap, contains, j,
+			fragment = context.createDocumentFragment(),
+			nodes = [],
+			i = 0,
+			l = elems.length;
+
+		for ( ; i < l; i++ ) {
+			elem = elems[ i ];
+
+			if ( elem || elem === 0 ) {
+
+				// Add nodes directly
+				if ( jQuery.type( elem ) === "object" ) {
+					// Support: QtWebKit, PhantomJS
+					// push.apply(_, arraylike) throws on ancient WebKit
+					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+				// Convert non-html into a text node
+				} else if ( !rhtml.test( elem ) ) {
+					nodes.push( context.createTextNode( elem ) );
+
+				// Convert html into DOM nodes
+				} else {
+					tmp = tmp || fragment.appendChild( context.createElement("div") );
+
+					// Deserialize a standard representation
+					tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+					wrap = wrapMap[ tag ] || wrapMap._default;
+					tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
+
+					// Descend through wrappers to the right content
+					j = wrap[ 0 ];
+					while ( j-- ) {
+						tmp = tmp.lastChild;
+					}
+
+					// Support: QtWebKit, PhantomJS
+					// push.apply(_, arraylike) throws on ancient WebKit
+					jQuery.merge( nodes, tmp.childNodes );
+
+					// Remember the top-level container
+					tmp = fragment.firstChild;
+
+					// Ensure the created nodes are orphaned (#12392)
+					tmp.textContent = "";
+				}
+			}
+		}
+
+		// Remove wrapper from fragment
+		fragment.textContent = "";
+
+		i = 0;
+		while ( (elem = nodes[ i++ ]) ) {
+
+			// #4087 - If origin and destination elements are the same, and this is
+			// that element, do not do anything
+			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+				continue;
+			}
+
+			contains = jQuery.contains( elem.ownerDocument, elem );
+
+			// Append to fragment
+			tmp = getAll( fragment.appendChild( elem ), "script" );
+
+			// Preserve script evaluation history
+			if ( contains ) {
+				setGlobalEval( tmp );
+			}
+
+			// Capture executables
+			if ( scripts ) {
+				j = 0;
+				while ( (elem = tmp[ j++ ]) ) {
+					if ( rscriptType.test( elem.type || "" ) ) {
+						scripts.push( elem );
+					}
+				}
+			}
+		}
+
+		return fragment;
+	},
+
+	cleanData: function( elems ) {
+		var data, elem, type, key,
+			special = jQuery.event.special,
+			i = 0;
+
+		for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+			if ( jQuery.acceptData( elem ) ) {
+				key = elem[ data_priv.expando ];
+
+				if ( key && (data = data_priv.cache[ key ]) ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+					if ( data_priv.cache[ key ] ) {
+						// Discard any remaining `private` data
+						delete data_priv.cache[ key ];
+					}
+				}
+			}
+			// Discard any remaining `user` data
+			delete data_user.cache[ elem[ data_user.expando ] ];
+		}
+	}
+});
+
+jQuery.fn.extend({
+	text: function( value ) {
+		return access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().each(function() {
+					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+						this.textContent = value;
+					}
+				});
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		});
+	},
+
+	prepend: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		});
+	},
+
+	before: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		});
+	},
+
+	after: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		});
+	},
+
+	remove: function( selector, keepData /* Internal Use Only */ ) {
+		var elem,
+			elems = selector ? jQuery.filter( selector, this ) : this,
+			i = 0;
+
+		for ( ; (elem = elems[i]) != null; i++ ) {
+			if ( !keepData && elem.nodeType === 1 ) {
+				jQuery.cleanData( getAll( elem ) );
+			}
+
+			if ( elem.parentNode ) {
+				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+					setGlobalEval( getAll( elem, "script" ) );
+				}
+				elem.parentNode.removeChild( elem );
+			}
+		}
+
+		return this;
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; (elem = this[i]) != null; i++ ) {
+			if ( elem.nodeType === 1 ) {
+
+				// Prevent memory leaks
+				jQuery.cleanData( getAll( elem, false ) );
+
+				// Remove any remaining nodes
+				elem.textContent = "";
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map(function() {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		});
+	},
+
+	html: function( value ) {
+		return access( this, function( value ) {
+			var elem = this[ 0 ] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined && elem.nodeType === 1 ) {
+				return elem.innerHTML;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+				value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+				try {
+					for ( ; i < l; i++ ) {
+						elem = this[ i ] || {};
+
+						// Remove element nodes and prevent memory leaks
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch( e ) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var arg = arguments[ 0 ];
+
+		// Make the changes, replacing each context element with the new content
+		this.domManip( arguments, function( elem ) {
+			arg = this.parentNode;
+
+			jQuery.cleanData( getAll( this ) );
+
+			if ( arg ) {
+				arg.replaceChild( elem, this );
+			}
+		});
+
+		// Force removal if there was no new content (e.g., from empty arguments)
+		return arg && (arg.length || arg.nodeType) ? this : this.remove();
+	},
+
+	detach: function( selector ) {
+		return this.remove( selector, true );
+	},
+
+	domManip: function( args, callback ) {
+
+		// Flatten any nested arrays
+		args = concat.apply( [], args );
+
+		var fragment, first, scripts, hasScripts, node, doc,
+			i = 0,
+			l = this.length,
+			set = this,
+			iNoClone = l - 1,
+			value = args[ 0 ],
+			isFunction = jQuery.isFunction( value );
+
+		// We can't cloneNode fragments that contain checked, in WebKit
+		if ( isFunction ||
+				( l > 1 && typeof value === "string" &&
+					!support.checkClone && rchecked.test( value ) ) ) {
+			return this.each(function( index ) {
+				var self = set.eq( index );
+				if ( isFunction ) {
+					args[ 0 ] = value.call( this, index, self.html() );
+				}
+				self.domManip( args, callback );
+			});
+		}
+
+		if ( l ) {
+			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+			first = fragment.firstChild;
+
+			if ( fragment.childNodes.length === 1 ) {
+				fragment = first;
+			}
+
+			if ( first ) {
+				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+				hasScripts = scripts.length;
+
+				// Use the original fragment for the last item instead of the first because it can end up
+				// being emptied incorrectly in certain situations (#8070).
+				for ( ; i < l; i++ ) {
+					node = fragment;
+
+					if ( i !== iNoClone ) {
+						node = jQuery.clone( node, true, true );
+
+						// Keep references to cloned scripts for later restoration
+						if ( hasScripts ) {
+							// Support: QtWebKit
+							// jQuery.merge because push.apply(_, arraylike) throws
+							jQuery.merge( scripts, getAll( node, "script" ) );
+						}
+					}
+
+					callback.call( this[ i ], node, i );
+				}
+
+				if ( hasScripts ) {
+					doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+					// Reenable scripts
+					jQuery.map( scripts, restoreScript );
+
+					// Evaluate executable scripts on first document insertion
+					for ( i = 0; i < hasScripts; i++ ) {
+						node = scripts[ i ];
+						if ( rscriptType.test( node.type || "" ) &&
+							!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+							if ( node.src ) {
+								// Optional AJAX dependency, but won't run scripts if not present
+								if ( jQuery._evalUrl ) {
+									jQuery._evalUrl( node.src );
+								}
+							} else {
+								jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+							}
+						}
+					}
+				}
+			}
+		}
+
+		return this;
+	}
+});
+
+jQuery.each({
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1,
+			i = 0;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone( true );
+			jQuery( insert[ i ] )[ original ]( elems );
+
+			// Support: QtWebKit
+			// .get() because push.apply(_, arraylike) throws
+			push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+});
+
+
+var iframe,
+	elemdisplay = {};
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+	var style,
+		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+		// getDefaultComputedStyle might be reliably used only on attached element
+		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
+
+			// Use of this method is a temporary fix (more like optimization) until something better comes along,
+			// since it was removed from specification and supported only in FF
+			style.display : jQuery.css( elem[ 0 ], "display" );
+
+	// We don't have any data stored on the element,
+	// so use "detach" method as fast way to get rid of the element
+	elem.detach();
+
+	return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+	var doc = document,
+		display = elemdisplay[ nodeName ];
+
+	if ( !display ) {
+		display = actualDisplay( nodeName, doc );
+
+		// If the simple way fails, read from inside an iframe
+		if ( display === "none" || !display ) {
+
+			// Use the already-created iframe if possible
+			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
+
+			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+			doc = iframe[ 0 ].contentDocument;
+
+			// Support: IE
+			doc.write();
+			doc.close();
+
+			display = actualDisplay( nodeName, doc );
+			iframe.detach();
+		}
+
+		// Store the correct default display
+		elemdisplay[ nodeName ] = display;
+	}
+
+	return display;
+}
+var rmargin = (/^margin/);
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+		// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
+		// IE throws on elements created in popups
+		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+		if ( elem.ownerDocument.defaultView.opener ) {
+			return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+		}
+
+		return window.getComputedStyle( elem, null );
+	};
+
+
+
+function curCSS( elem, name, computed ) {
+	var width, minWidth, maxWidth, ret,
+		style = elem.style;
+
+	computed = computed || getStyles( elem );
+
+	// Support: IE9
+	// getPropertyValue is only needed for .css('filter') (#12537)
+	if ( computed ) {
+		ret = computed.getPropertyValue( name ) || computed[ name ];
+	}
+
+	if ( computed ) {
+
+		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+			ret = jQuery.style( elem, name );
+		}
+
+		// Support: iOS < 6
+		// A tribute to the "awesome hack by Dean Edwards"
+		// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+		// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+		if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+			// Remember the original values
+			width = style.width;
+			minWidth = style.minWidth;
+			maxWidth = style.maxWidth;
+
+			// Put in the new values to get a computed value out
+			style.minWidth = style.maxWidth = style.width = ret;
+			ret = computed.width;
+
+			// Revert the changed values
+			style.width = width;
+			style.minWidth = minWidth;
+			style.maxWidth = maxWidth;
+		}
+	}
+
+	return ret !== undefined ?
+		// Support: IE
+		// IE returns zIndex value as an integer.
+		ret + "" :
+		ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+	// Define the hook, we'll check on the first run if it's really needed.
+	return {
+		get: function() {
+			if ( conditionFn() ) {
+				// Hook not needed (or it's not possible to use it due
+				// to missing dependency), remove it.
+				delete this.get;
+				return;
+			}
+
+			// Hook needed; redefine it so that the support test is not executed again.
+			return (this.get = hookFn).apply( this, arguments );
+		}
+	};
+}
+
+
+(function() {
+	var pixelPositionVal, boxSizingReliableVal,
+		docElem = document.documentElement,
+		container = document.createElement( "div" ),
+		div = document.createElement( "div" );
+
+	if ( !div.style ) {
+		return;
+	}
+
+	// Support: IE9-11+
+	// Style of cloned element affects source element cloned (#8908)
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
+		"position:absolute";
+	container.appendChild( div );
+
+	// Executing both pixelPosition & boxSizingReliable tests require only one layout
+	// so they're executed at the same time to save the second computation.
+	function computePixelPositionAndBoxSizingReliable() {
+		div.style.cssText =
+			// Support: Firefox<29, Android 2.3
+			// Vendor-prefix box-sizing
+			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+			"border:1px;padding:1px;width:4px;position:absolute";
+		div.innerHTML = "";
+		docElem.appendChild( container );
+
+		var divStyle = window.getComputedStyle( div, null );
+		pixelPositionVal = divStyle.top !== "1%";
+		boxSizingReliableVal = divStyle.width === "4px";
+
+		docElem.removeChild( container );
+	}
+
+	// Support: node.js jsdom
+	// Don't assume that getComputedStyle is a property of the global object
+	if ( window.getComputedStyle ) {
+		jQuery.extend( support, {
+			pixelPosition: function() {
+
+				// This test is executed only once but we still do memoizing
+				// since we can use the boxSizingReliable pre-computing.
+				// No need to check if the test was already performed, though.
+				computePixelPositionAndBoxSizingReliable();
+				return pixelPositionVal;
+			},
+			boxSizingReliable: function() {
+				if ( boxSizingReliableVal == null ) {
+					computePixelPositionAndBoxSizingReliable();
+				}
+				return boxSizingReliableVal;
+			},
+			reliableMarginRight: function() {
+
+				// Support: Android 2.3
+				// Check if div with explicit width and no margin-right incorrectly
+				// gets computed margin-right based on width of container. (#3333)
+				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+				// This support function is only executed once so no memoizing is needed.
+				var ret,
+					marginDiv = div.appendChild( document.createElement( "div" ) );
+
+				// Reset CSS: box-sizing; display; margin; border; padding
+				marginDiv.style.cssText = div.style.cssText =
+					// Support: Firefox<29, Android 2.3
+					// Vendor-prefix box-sizing
+					"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+					"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+				marginDiv.style.marginRight = marginDiv.style.width = "0";
+				div.style.width = "1px";
+				docElem.appendChild( container );
+
+				ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
+
+				docElem.removeChild( container );
+				div.removeChild( marginDiv );
+
+				return ret;
+			}
+		});
+	}
+})();
+
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+jQuery.swap = function( elem, options, callback, args ) {
+	var ret, name,
+		old = {};
+
+	// Remember the old values, and insert the new ones
+	for ( name in options ) {
+		old[ name ] = elem.style[ name ];
+		elem.style[ name ] = options[ name ];
+	}
+
+	ret = callback.apply( elem, args || [] );
+
+	// Revert the old values
+	for ( name in options ) {
+		elem.style[ name ] = old[ name ];
+	}
+
+	return ret;
+};
+
+
+var
+	// Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
+	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
+
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: "0",
+		fontWeight: "400"
+	},
+
+	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+	// Shortcut for names that are not vendor prefixed
+	if ( name in style ) {
+		return name;
+	}
+
+	// Check for vendor prefixed names
+	var capName = name[0].toUpperCase() + name.slice(1),
+		origName = name,
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in style ) {
+			return name;
+		}
+	}
+
+	return origName;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+	var matches = rnumsplit.exec( value );
+	return matches ?
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+		value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+	var i = extra === ( isBorderBox ? "border" : "content" ) ?
+		// If we already have the right measurement, avoid augmentation
+		4 :
+		// Otherwise initialize for horizontal or vertical properties
+		name === "width" ? 1 : 0,
+
+		val = 0;
+
+	for ( ; i < 4; i += 2 ) {
+		// Both box models exclude margin, so add it if we want it
+		if ( extra === "margin" ) {
+			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+		}
+
+		if ( isBorderBox ) {
+			// border-box includes padding, so remove it if we want content
+			if ( extra === "content" ) {
+				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// At this point, extra isn't border nor margin, so remove border
+			if ( extra !== "margin" ) {
+				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		} else {
+			// At this point, extra isn't content, so add padding
+			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// At this point, extra isn't content nor padding, so add border
+			if ( extra !== "padding" ) {
+				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+	// Start with offset property, which is equivalent to the border-box value
+	var valueIsBorderBox = true,
+		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+		styles = getStyles( elem ),
+		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
+	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+	if ( val <= 0 || val == null ) {
+		// Fall back to computed then uncomputed css if necessary
+		val = curCSS( elem, name, styles );
+		if ( val < 0 || val == null ) {
+			val = elem.style[ name ];
+		}
+
+		// Computed unit is not pixels. Stop here and return.
+		if ( rnumnonpx.test(val) ) {
+			return val;
+		}
+
+		// Check for style in case a browser which returns unreliable values
+		// for getComputedStyle silently falls back to the reliable elem.style
+		valueIsBorderBox = isBorderBox &&
+			( support.boxSizingReliable() || val === elem.style[ name ] );
+
+		// Normalize "", auto, and prepare for extra
+		val = parseFloat( val ) || 0;
+	}
+
+	// Use the active box-sizing model to add/subtract irrelevant styles
+	return ( val +
+		augmentWidthOrHeight(
+			elem,
+			name,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles
+		)
+	) + "px";
+}
+
+function showHide( elements, show ) {
+	var display, elem, hidden,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		values[ index ] = data_priv.get( elem, "olddisplay" );
+		display = elem.style.display;
+		if ( show ) {
+			// Reset the inline display of this element to learn if it is
+			// being hidden by cascaded rules or not
+			if ( !values[ index ] && display === "none" ) {
+				elem.style.display = "";
+			}
+
+			// Set elements which have been overridden with display: none
+			// in a stylesheet to whatever the default browser style is
+			// for such an element
+			if ( elem.style.display === "" && isHidden( elem ) ) {
+				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+			}
+		} else {
+			hidden = isHidden( elem );
+
+			if ( display !== "none" || !hidden ) {
+				data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+			}
+		}
+	}
+
+	// Set the display of most of the elements in a second loop
+	// to avoid the constant reflow
+	for ( index = 0; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+			elem.style.display = show ? values[ index ] || "" : "none";
+		}
+	}
+
+	return elements;
+}
+
+jQuery.extend({
+
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"columnCount": true,
+		"fillOpacity": true,
+		"flexGrow": true,
+		"flexShrink": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		"float": "cssFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = jQuery.camelCase( name ),
+			style = elem.style;
+
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+		// Gets hook for the prefixed version, then unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// Convert "+=" or "-=" to relative numbers (#7345)
+			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that null and NaN values aren't set (#7116)
+			if ( value == null || value !== value ) {
+				return;
+			}
+
+			// If a number, add 'px' to the (except for certain CSS properties)
+			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+				value += "px";
+			}
+
+			// Support: IE9-11+
+			// background-* props affect original clone's values
+			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+				style[ name ] = value;
+			}
+
+		} else {
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var val, num, hooks,
+			origName = jQuery.camelCase( name );
+
+		// Make sure that we're working with the right name
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+		// Try prefixed name followed by the unprefixed name
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		// Convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Make numeric if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+		}
+		return val;
+	}
+});
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+
+				// Certain elements can have dimension info if we invisibly show them
+				// but it must have a current display style that would benefit
+				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
+					jQuery.swap( elem, cssShow, function() {
+						return getWidthOrHeight( elem, name, extra );
+					}) :
+					getWidthOrHeight( elem, name, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var styles = extra && getStyles( elem );
+			return setPositiveNumber( elem, value, extra ?
+				augmentWidthOrHeight(
+					elem,
+					name,
+					extra,
+					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+					styles
+				) : 0
+			);
+		}
+	};
+});
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+	function( elem, computed ) {
+		if ( computed ) {
+			return jQuery.swap( elem, { "display": "inline-block" },
+				curCSS, [ elem, "marginRight" ] );
+		}
+	}
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// Assumes a single number if not a string
+				parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( !rmargin.test( prefix ) ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+});
+
+jQuery.fn.extend({
+	css: function( name, value ) {
+		return access( this, function( elem, name, value ) {
+			var styles, len,
+				map = {},
+				i = 0;
+
+			if ( jQuery.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	},
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each(function() {
+			if ( isHidden( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		});
+	}
+});
+
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || "swing";
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			if ( tween.elem[ tween.prop ] != null &&
+				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// Passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails.
+			// Simple values such as "10px" are parsed to Float;
+			// complex values such as "rotate(1rad)" are returned as-is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+			// Use step hook for back compat.
+			// Use cssHook if its there.
+			// Use .style if available and use plain properties where available.
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p * Math.PI ) / 2;
+	}
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+	fxNow, timerId,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
+	rrun = /queueHooks$/,
+	animationPrefilters = [ defaultPrefilter ],
+	tweeners = {
+		"*": [ function( prop, value ) {
+			var tween = this.createTween( prop, value ),
+				target = tween.cur(),
+				parts = rfxnum.exec( value ),
+				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+				// Starting value computation is required for potential unit mismatches
+				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+				scale = 1,
+				maxIterations = 20;
+
+			if ( start && start[ 3 ] !== unit ) {
+				// Trust units reported by jQuery.css
+				unit = unit || start[ 3 ];
+
+				// Make sure we update the tween properties later on
+				parts = parts || [];
+
+				// Iteratively approximate from a nonzero starting point
+				start = +target || 1;
+
+				do {
+					// If previous iteration zeroed out, double until we get *something*.
+					// Use string for doubling so we don't accidentally see scale as unchanged below
+					scale = scale || ".5";
+
+					// Adjust and apply
+					start = start / scale;
+					jQuery.style( tween.elem, prop, start + unit );
+
+				// Update scale, tolerating zero or NaN from tween.cur(),
+				// break the loop if scale is unchanged or perfect, or if we've just had enough
+				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+			}
+
+			// Update tween properties
+			if ( parts ) {
+				start = tween.start = +start || +target || 0;
+				tween.unit = unit;
+				// If a +=/-= token was provided, we're doing a relative animation
+				tween.end = parts[ 1 ] ?
+					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+					+parts[ 2 ];
+			}
+
+			return tween;
+		} ]
+	};
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	setTimeout(function() {
+		fxNow = undefined;
+	});
+	return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		i = 0,
+		attrs = { height: type };
+
+	// If we include width, step value is 1 to do all cssExpand values,
+	// otherwise step value is 2 to skip over Left and Right
+	includeWidth = includeWidth ? 1 : 0;
+	for ( ; i < 4 ; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+			// We're done with this property
+			return tween;
+		}
+	}
+}
+
+function defaultPrefilter( elem, props, opts ) {
+	/* jshint validthis: true */
+	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHidden( elem ),
+		dataShow = data_priv.get( elem, "fxshow" );
+
+	// Handle queue: false promises
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always(function() {
+			// Ensure the complete handler is called before this completes
+			anim.always(function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			});
+		});
+	}
+
+	// Height/width overflow pass
+	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+		// Make sure that nothing sneaks out
+		// Record all 3 overflow attributes because IE9-10 do not
+		// change the overflow attribute when overflowX and
+		// overflowY are set to the same value
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Set display property to inline-block for height/width
+		// animations on inline elements that are having width/height animated
+		display = jQuery.css( elem, "display" );
+
+		// Test default display if display is currently "none"
+		checkDisplay = display === "none" ?
+			data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+			style.display = "inline-block";
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		anim.always(function() {
+			style.overflow = opts.overflow[ 0 ];
+			style.overflowX = opts.overflow[ 1 ];
+			style.overflowY = opts.overflow[ 2 ];
+		});
+	}
+
+	// show/hide pass
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.exec( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+
+				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
+				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+					hidden = true;
+				} else {
+					continue;
+				}
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+		// Any non-fx value stops us from restoring the original display value
+		} else {
+			display = undefined;
+		}
+	}
+
+	if ( !jQuery.isEmptyObject( orig ) ) {
+		if ( dataShow ) {
+			if ( "hidden" in dataShow ) {
+				hidden = dataShow.hidden;
+			}
+		} else {
+			dataShow = data_priv.access( elem, "fxshow", {} );
+		}
+
+		// Store state if its toggle - enables .stop().toggle() to "reverse"
+		if ( toggle ) {
+			dataShow.hidden = !hidden;
+		}
+		if ( hidden ) {
+			jQuery( elem ).show();
+		} else {
+			anim.done(function() {
+				jQuery( elem ).hide();
+			});
+		}
+		anim.done(function() {
+			var prop;
+
+			data_priv.remove( elem, "fxshow" );
+			for ( prop in orig ) {
+				jQuery.style( elem, prop, orig[ prop ] );
+			}
+		});
+		for ( prop in orig ) {
+			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+			if ( !( prop in dataShow ) ) {
+				dataShow[ prop ] = tween.start;
+				if ( hidden ) {
+					tween.end = tween.start;
+					tween.start = prop === "width" || prop === "height" ? 1 : 0;
+				}
+			}
+		}
+
+	// If this is a noop like .hide().hide(), restore an overwritten display value
+	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
+		style.display = display;
+	}
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = jQuery.camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( jQuery.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// Not quite $.extend, this won't overwrite existing keys.
+			// Reusing 'index' because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = animationPrefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+			// Don't match elem in the :animated selector
+			delete tick.elem;
+		}),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+				// Support: Android 2.3
+				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length ; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+			if ( percent < 1 && length ) {
+				return remaining;
+			} else {
+				deferred.resolveWith( elem, [ animation ] );
+				return false;
+			}
+		},
+		animation = deferred.promise({
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, { specialEasing: {} }, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+					// If we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length ; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// Resolve when we played the last frame; otherwise, reject
+				if ( gotoEnd ) {
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		}),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length ; index++ ) {
+		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( jQuery.isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		})
+	);
+
+	// attach callbacks from options
+	return animation.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweener: function( props, callback ) {
+		if ( jQuery.isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.split(" ");
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length ; index++ ) {
+			prop = props[ index ];
+			tweeners[ prop ] = tweeners[ prop ] || [];
+			tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			animationPrefilters.unshift( callback );
+		} else {
+			animationPrefilters.push( callback );
+		}
+	}
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			jQuery.isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+	};
+
+	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+	// Normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( jQuery.isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.fn.extend({
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// Show any hidden elements after setting opacity to 0
+		return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+			// Animate to the value specified
+			.end().animate({ opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || data_priv.get( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each(function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = data_priv.get( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Start the next in the queue if the last step wasn't forced.
+			// Timers currently will call their complete callbacks, which
+			// will dequeue but only if they were gotoEnd.
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		});
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each(function() {
+			var index,
+				data = data_priv.get( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// Enable finishing flag on private data
+			data.finish = true;
+
+			// Empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// Look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// Turn off finishing flag
+			delete data.finish;
+		});
+	}
+});
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+	slideDown: genFx("show"),
+	slideUp: genFx("hide"),
+	slideToggle: genFx("toggle"),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+});
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+	var timer,
+		i = 0,
+		timers = jQuery.timers;
+
+	fxNow = jQuery.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+		// Checks the timer has not already been removed
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	jQuery.timers.push( timer );
+	if ( timer() ) {
+		jQuery.fx.start();
+	} else {
+		jQuery.timers.pop();
+	}
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+	if ( !timerId ) {
+		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+	}
+};
+
+jQuery.fx.stop = function() {
+	clearInterval( timerId );
+	timerId = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+	// Default speed
+	_default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+	type = type || "fx";
+
+	return this.queue( type, function( next, hooks ) {
+		var timeout = setTimeout( next, time );
+		hooks.stop = function() {
+			clearTimeout( timeout );
+		};
+	});
+};
+
+
+(function() {
+	var input = document.createElement( "input" ),
+		select = document.createElement( "select" ),
+		opt = select.appendChild( document.createElement( "option" ) );
+
+	input.type = "checkbox";
+
+	// Support: iOS<=5.1, Android<=4.2+
+	// Default value for a checkbox should be "on"
+	support.checkOn = input.value !== "";
+
+	// Support: IE<=11+
+	// Must access selectedIndex to make default options select
+	support.optSelected = opt.selected;
+
+	// Support: Android<=2.3
+	// Options inside disabled selects are incorrectly marked as disabled
+	select.disabled = true;
+	support.optDisabled = !opt.disabled;
+
+	// Support: IE<=11+
+	// An input loses its value after becoming a radio
+	input = document.createElement( "input" );
+	input.value = "t";
+	input.type = "radio";
+	support.radioValue = input.value === "t";
+})();
+
+
+var nodeHook, boolHook,
+	attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend({
+	attr: function( name, value ) {
+		return access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each(function() {
+			jQuery.removeAttr( this, name );
+		});
+	}
+});
+
+jQuery.extend({
+	attr: function( elem, name, value ) {
+		var hooks, ret,
+			nType = elem.nodeType;
+
+		// don't get/set attributes on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === strundefined ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// All attributes are lowercase
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			name = name.toLowerCase();
+			hooks = jQuery.attrHooks[ name ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+		}
+
+		if ( value !== undefined ) {
+
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+
+			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+				return ret;
+
+			} else {
+				elem.setAttribute( name, value + "" );
+				return value;
+			}
+
+		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+			return ret;
+
+		} else {
+			ret = jQuery.find.attr( elem, name );
+
+			// Non-existent attributes return null, we normalize to undefined
+			return ret == null ?
+				undefined :
+				ret;
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name, propName,
+			i = 0,
+			attrNames = value && value.match( rnotwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( (name = attrNames[i++]) ) {
+				propName = jQuery.propFix[ name ] || name;
+
+				// Boolean attributes get special treatment (#10870)
+				if ( jQuery.expr.match.bool.test( name ) ) {
+					// Set corresponding property to false
+					elem[ propName ] = false;
+				}
+
+				elem.removeAttribute( name );
+			}
+		}
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !support.radioValue && value === "radio" &&
+					jQuery.nodeName( elem, "input" ) ) {
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	}
+});
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			elem.setAttribute( name, name );
+		}
+		return name;
+	}
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = attrHandle[ name ] || jQuery.find.attr;
+
+	attrHandle[ name ] = function( elem, name, isXML ) {
+		var ret, handle;
+		if ( !isXML ) {
+			// Avoid an infinite loop by temporarily removing this function from the getter
+			handle = attrHandle[ name ];
+			attrHandle[ name ] = ret;
+			ret = getter( elem, name, isXML ) != null ?
+				name.toLowerCase() :
+				null;
+			attrHandle[ name ] = handle;
+		}
+		return ret;
+	};
+});
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i;
+
+jQuery.fn.extend({
+	prop: function( name, value ) {
+		return access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		return this.each(function() {
+			delete this[ jQuery.propFix[ name ] || name ];
+		});
+	}
+});
+
+jQuery.extend({
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	},
+
+	prop: function( elem, name, value ) {
+		var ret, hooks, notxml,
+			nType = elem.nodeType;
+
+		// Don't get/set properties on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+		if ( notxml ) {
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+				ret :
+				( elem[ name ] = value );
+
+		} else {
+			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+				ret :
+				elem[ name ];
+		}
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+				return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
+					elem.tabIndex :
+					-1;
+			}
+		}
+	}
+});
+
+if ( !support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+			var parent = elem.parentNode;
+			if ( parent && parent.parentNode ) {
+				parent.parentNode.selectedIndex;
+			}
+			return null;
+		}
+	};
+}
+
+jQuery.each([
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+jQuery.fn.extend({
+	addClass: function( value ) {
+		var classes, elem, cur, clazz, j, finalValue,
+			proceed = typeof value === "string" && value,
+			i = 0,
+			len = this.length;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).addClass( value.call( this, j, this.className ) );
+			});
+		}
+
+		if ( proceed ) {
+			// The disjunction here is for better compressibility (see removeClass)
+			classes = ( value || "" ).match( rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					" "
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+
+					// only assign if different to avoid unneeded rendering.
+					finalValue = jQuery.trim( cur );
+					if ( elem.className !== finalValue ) {
+						elem.className = finalValue;
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, clazz, j, finalValue,
+			proceed = arguments.length === 0 || typeof value === "string" && value,
+			i = 0,
+			len = this.length;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, this.className ) );
+			});
+		}
+		if ( proceed ) {
+			classes = ( value || "" ).match( rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					""
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = value ? jQuery.trim( cur ) : "";
+					if ( elem.className !== finalValue ) {
+						elem.className = finalValue;
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value;
+
+		if ( typeof stateVal === "boolean" && type === "string" ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+			});
+		}
+
+		return this.each(function() {
+			if ( type === "string" ) {
+				// Toggle individual class names
+				var className,
+					i = 0,
+					self = jQuery( this ),
+					classNames = value.match( rnotwhite ) || [];
+
+				while ( (className = classNames[ i++ ]) ) {
+					// Check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( type === strundefined || type === "boolean" ) {
+				if ( this.className ) {
+					// store className if set
+					data_priv.set( this, "__className__", this.className );
+				}
+
+				// If the element has a class name or if we're passed `false`,
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
+			}
+		});
+	},
+
+	hasClass: function( selector ) {
+		var className = " " + selector + " ",
+			i = 0,
+			l = this.length;
+		for ( ; i < l; i++ ) {
+			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+});
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend({
+	val: function( value ) {
+		var hooks, ret, isFunction,
+			elem = this[0];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				return typeof ret === "string" ?
+					// Handle most common string cases
+					ret.replace(rreturn, "") :
+					// Handle cases where value is null/undef or number
+					ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each(function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+
+			} else if ( typeof val === "number" ) {
+				val += "";
+
+			} else if ( jQuery.isArray( val ) ) {
+				val = jQuery.map( val, function( value ) {
+					return value == null ? "" : value + "";
+				});
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		});
+	}
+});
+
+jQuery.extend({
+	valHooks: {
+		option: {
+			get: function( elem ) {
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+					// Support: IE10-11+
+					// option.text throws exceptions (#14686, #14858)
+					jQuery.trim( jQuery.text( elem ) );
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one" || index < 0,
+					values = one ? null : [],
+					max = one ? index + 1 : options.length,
+					i = index < 0 ?
+						max :
+						one ? index : 0;
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// IE6-9 doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+							// Don't return options that are disabled or in a disabled optgroup
+							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
+						optionSet = true;
+					}
+				}
+
+				// Force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	}
+});
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( jQuery.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+			}
+		}
+	};
+	if ( !support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			return elem.getAttribute("value") === null ? "on" : elem.value;
+		};
+	}
+});
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+});
+
+jQuery.fn.extend({
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	},
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+	}
+});
+
+
+var nonce = jQuery.now();
+
+var rquery = (/\?/);
+
+
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+	return JSON.parse( data + "" );
+};
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+	var xml, tmp;
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+
+	// Support: IE9
+	try {
+		tmp = new DOMParser();
+		xml = tmp.parseFromString( data, "text/xml" );
+	} catch ( e ) {
+		xml = undefined;
+	}
+
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+		jQuery.error( "Invalid XML: " + data );
+	}
+	return xml;
+};
+
+
+var
+	rhash = /#.*$/,
+	rts = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat( "*" ),
+
+	// Document location
+	ajaxLocation = window.location.href,
+
+	// Segment location into parts
+	ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+		if ( jQuery.isFunction( func ) ) {
+			// For each dataType in the dataTypeExpression
+			while ( (dataType = dataTypes[i++]) ) {
+				// Prepend if requested
+				if ( dataType[0] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+				// Otherwise append
+				} else {
+					(structure[ dataType ] = structure[ dataType ] || []).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		});
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var ct, type, finalDataType, firstDataType,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while ( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+		// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s[ "throws" ] ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+
+jQuery.extend({
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: ajaxLocation,
+		type: "GET",
+		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /xml/,
+			html: /html/,
+			json: /json/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": jQuery.parseJSON,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var transport,
+			// URL without anti-cache param
+			cacheURL,
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+			// timeout handle
+			timeoutTimer,
+			// Cross-domain detection vars
+			parts,
+			// To know if global events are to be dispatched
+			fireGlobals,
+			// Loop variable
+			i,
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+			// Callbacks context
+			callbackContext = s.context || s,
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+				jQuery( callbackContext ) :
+				jQuery.event,
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks("once memory"),
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+			// The jqXHR state
+			state = 0,
+			// Default abort message
+			strAbort = "canceled",
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( state === 2 ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( (match = rheaders.exec( responseHeadersString )) ) {
+								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return state === 2 ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					var lname = name.toLowerCase();
+					if ( !state ) {
+						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( !state ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( state < 2 ) {
+							for ( code in map ) {
+								// Lazy-add the new callback in a way that preserves old ones
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						} else {
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR ).complete = completeDeferred.add;
+		jqXHR.success = jqXHR.done;
+		jqXHR.error = jqXHR.fail;
+
+		// Remove hash character (#7531: and string promotion)
+		// Add protocol if not provided (prefilters might expect it)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
+			.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+		// A cross-domain request is in order when we have a protocol:host:port mismatch
+		if ( s.crossDomain == null ) {
+			parts = rurl.exec( s.url.toLowerCase() );
+			s.crossDomain = !!( parts &&
+				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+			);
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( state === 2 ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+		fireGlobals = jQuery.event && s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger("ajaxStart");
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		cacheURL = s.url;
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add anti-cache in url if needed
+			if ( s.cache === false ) {
+				s.url = rts.test( cacheURL ) ?
+
+					// If there is already a '_' parameter, set its value
+					cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+					// Otherwise add one to the end
+					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+			}
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// Aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		for ( i in { success: 1, error: 1, complete: 1 } ) {
+			jqXHR[ i ]( s[ i ] );
+		}
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = setTimeout(function() {
+					jqXHR.abort("timeout");
+				}, s.timeout );
+			}
+
+			try {
+				state = 1;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+				// Propagate exception as error if not done
+				if ( state < 2 ) {
+					done( -1, e );
+				// Simply rethrow otherwise
+				} else {
+					throw e;
+				}
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Called once
+			if ( state === 2 ) {
+				return;
+			}
+
+			// State is "done" now
+			state = 2;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader("Last-Modified");
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader("etag");
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+				// Extract error from statusText and normalize for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger("ajaxStop");
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+		// Shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		return jQuery.ajax({
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		});
+	};
+});
+
+
+jQuery._evalUrl = function( url ) {
+	return jQuery.ajax({
+		url: url,
+		type: "GET",
+		dataType: "script",
+		async: false,
+		global: false,
+		"throws": true
+	});
+};
+
+
+jQuery.fn.extend({
+	wrapAll: function( html ) {
+		var wrap;
+
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).wrapAll( html.call(this, i) );
+			});
+		}
+
+		if ( this[ 0 ] ) {
+
+			// The elements to wrap the target around
+			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+			if ( this[ 0 ].parentNode ) {
+				wrap.insertBefore( this[ 0 ] );
+			}
+
+			wrap.map(function() {
+				var elem = this;
+
+				while ( elem.firstElementChild ) {
+					elem = elem.firstElementChild;
+				}
+
+				return elem;
+			}).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).wrapInner( html.call(this, i) );
+			});
+		}
+
+		return this.each(function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		});
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each(function( i ) {
+			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+		});
+	},
+
+	unwrap: function() {
+		return this.parent().each(function() {
+			if ( !jQuery.nodeName( this, "body" ) ) {
+				jQuery( this ).replaceWith( this.childNodes );
+			}
+		}).end();
+	}
+});
+
+
+jQuery.expr.filters.hidden = function( elem ) {
+	// Support: Opera <= 12.12
+	// Opera reports offsetWidths and offsetHeights less than zero on some elements
+	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
+};
+jQuery.expr.filters.visible = function( elem ) {
+	return !jQuery.expr.filters.hidden( elem );
+};
+
+
+
+
+var r20 = /%20/g,
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( jQuery.isArray( obj ) ) {
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+			}
+		});
+
+	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, value ) {
+			// If value is a function, invoke it and return its value
+			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+		};
+
+	// Set traditional to true for jQuery <= 1.3.2 behavior.
+	if ( traditional === undefined ) {
+		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+	}
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		});
+
+	} else {
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend({
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map(function() {
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		})
+		.filter(function() {
+			var type = this.type;
+
+			// Use .is( ":disabled" ) so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !rcheckableType.test( type ) );
+		})
+		.map(function( i, elem ) {
+			var val = jQuery( this ).val();
+
+			return val == null ?
+				null :
+				jQuery.isArray( val ) ?
+					jQuery.map( val, function( val ) {
+						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+					}) :
+					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		}).get();
+	}
+});
+
+
+jQuery.ajaxSettings.xhr = function() {
+	try {
+		return new XMLHttpRequest();
+	} catch( e ) {}
+};
+
+var xhrId = 0,
+	xhrCallbacks = {},
+	xhrSuccessStatus = {
+		// file protocol always yields status code 0, assume 200
+		0: 200,
+		// Support: IE9
+		// #1450: sometimes IE returns 1223 when it should be 204
+		1223: 204
+	},
+	xhrSupported = jQuery.ajaxSettings.xhr();
+
+// Support: IE9
+// Open requests must be manually aborted on unload (#5280)
+// See https://support.microsoft.com/kb/2856746 for more info
+if ( window.attachEvent ) {
+	window.attachEvent( "onunload", function() {
+		for ( var key in xhrCallbacks ) {
+			xhrCallbacks[ key ]();
+		}
+	});
+}
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport(function( options ) {
+	var callback;
+
+	// Cross domain only allowed if supported through XMLHttpRequest
+	if ( support.cors || xhrSupported && !options.crossDomain ) {
+		return {
+			send: function( headers, complete ) {
+				var i,
+					xhr = options.xhr(),
+					id = ++xhrId;
+
+				xhr.open( options.type, options.url, options.async, options.username, options.password );
+
+				// Apply custom fields if provided
+				if ( options.xhrFields ) {
+					for ( i in options.xhrFields ) {
+						xhr[ i ] = options.xhrFields[ i ];
+					}
+				}
+
+				// Override mime type if needed
+				if ( options.mimeType && xhr.overrideMimeType ) {
+					xhr.overrideMimeType( options.mimeType );
+				}
+
+				// X-Requested-With header
+				// For cross-domain requests, seeing as conditions for a preflight are
+				// akin to a jigsaw puzzle, we simply never set it to be sure.
+				// (it can always be set on a per-request basis or even using ajaxSetup)
+				// For same-domain requests, won't change header if already provided.
+				if ( !options.crossDomain && !headers["X-Requested-With"] ) {
+					headers["X-Requested-With"] = "XMLHttpRequest";
+				}
+
+				// Set headers
+				for ( i in headers ) {
+					xhr.setRequestHeader( i, headers[ i ] );
+				}
+
+				// Callback
+				callback = function( type ) {
+					return function() {
+						if ( callback ) {
+							delete xhrCallbacks[ id ];
+							callback = xhr.onload = xhr.onerror = null;
+
+							if ( type === "abort" ) {
+								xhr.abort();
+							} else if ( type === "error" ) {
+								complete(
+									// file: protocol always yields status 0; see #8605, #14207
+									xhr.status,
+									xhr.statusText
+								);
+							} else {
+								complete(
+									xhrSuccessStatus[ xhr.status ] || xhr.status,
+									xhr.statusText,
+									// Support: IE9
+									// Accessing binary-data responseText throws an exception
+									// (#11426)
+									typeof xhr.responseText === "string" ? {
+										text: xhr.responseText
+									} : undefined,
+									xhr.getAllResponseHeaders()
+								);
+							}
+						}
+					};
+				};
+
+				// Listen to events
+				xhr.onload = callback();
+				xhr.onerror = callback("error");
+
+				// Create the abort callback
+				callback = xhrCallbacks[ id ] = callback("abort");
+
+				try {
+					// Do send the request (this may raise an exception)
+					xhr.send( options.hasContent && options.data || null );
+				} catch ( e ) {
+					// #14683: Only rethrow if this hasn't been notified as an error yet
+					if ( callback ) {
+						throw e;
+					}
+				}
+			},
+
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+	accepts: {
+		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /(?:java|ecma)script/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+});
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+	}
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+		var script, callback;
+		return {
+			send: function( _, complete ) {
+				script = jQuery("<script>").prop({
+					async: true,
+					charset: s.scriptCharset,
+					src: s.url
+				}).on(
+					"load error",
+					callback = function( evt ) {
+						script.remove();
+						callback = null;
+						if ( evt ) {
+							complete( evt.type === "error" ? 404 : 200, evt.type );
+						}
+					}
+				);
+				document.head.appendChild( script[ 0 ] );
+			},
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+});
+
+
+
+
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters["script json"] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always(function() {
+			// Restore preexisting value
+			window[ callbackName ] = overwritten;
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+				// make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		});
+
+		// Delegate to script
+		return "script";
+	}
+});
+
+
+
+
+// data: string of html
+// context (optional): If specified, the fragment will be created in this context, defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+	if ( typeof context === "boolean" ) {
+		keepScripts = context;
+		context = false;
+	}
+	context = context || document;
+
+	var parsed = rsingleTag.exec( data ),
+		scripts = !keepScripts && [];
+
+	// Single tag
+	if ( parsed ) {
+		return [ context.createElement( parsed[1] ) ];
+	}
+
+	parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+	if ( scripts && scripts.length ) {
+		jQuery( scripts ).remove();
+	}
+
+	return jQuery.merge( [], parsed.childNodes );
+};
+
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+	if ( typeof url !== "string" && _load ) {
+		return _load.apply( this, arguments );
+	}
+
+	var selector, type, response,
+		self = this,
+		off = url.indexOf(" ");
+
+	if ( off >= 0 ) {
+		selector = jQuery.trim( url.slice( off ) );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( jQuery.isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax({
+			url: url,
+
+			// if "type" variable is undefined, then "GET" method will be used
+			type: type,
+			dataType: "html",
+			data: params
+		}).done(function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		}).complete( callback && function( jqXHR, status ) {
+			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+		});
+	}
+
+	return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+	jQuery.fn[ type ] = function( fn ) {
+		return this.on( type, fn );
+	};
+});
+
+
+
+
+jQuery.expr.filters.animated = function( elem ) {
+	return jQuery.grep(jQuery.timers, function( fn ) {
+		return elem === fn.elem;
+	}).length;
+};
+
+
+
+
+var docElem = window.document.documentElement;
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+	setOffset: function( elem, options, i ) {
+		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+			position = jQuery.css( elem, "position" ),
+			curElem = jQuery( elem ),
+			props = {};
+
+		// Set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		curOffset = curElem.offset();
+		curCSSTop = jQuery.css( elem, "top" );
+		curCSSLeft = jQuery.css( elem, "left" );
+		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+			( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
+
+		// Need to be able to calculate position if either
+		// top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+			options = options.call( elem, i, curOffset );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+jQuery.fn.extend({
+	offset: function( options ) {
+		if ( arguments.length ) {
+			return options === undefined ?
+				this :
+				this.each(function( i ) {
+					jQuery.offset.setOffset( this, options, i );
+				});
+		}
+
+		var docElem, win,
+			elem = this[ 0 ],
+			box = { top: 0, left: 0 },
+			doc = elem && elem.ownerDocument;
+
+		if ( !doc ) {
+			return;
+		}
+
+		docElem = doc.documentElement;
+
+		// Make sure it's not a disconnected DOM node
+		if ( !jQuery.contains( docElem, elem ) ) {
+			return box;
+		}
+
+		// Support: BlackBerry 5, iOS 3 (original iPhone)
+		// If we don't have gBCR, just use 0,0 rather than error
+		if ( typeof elem.getBoundingClientRect !== strundefined ) {
+			box = elem.getBoundingClientRect();
+		}
+		win = getWindow( doc );
+		return {
+			top: box.top + win.pageYOffset - docElem.clientTop,
+			left: box.left + win.pageXOffset - docElem.clientLeft
+		};
+	},
+
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset,
+			elem = this[ 0 ],
+			parentOffset = { top: 0, left: 0 };
+
+		// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+			// Assume getBoundingClientRect is there when computed position is fixed
+			offset = elem.getBoundingClientRect();
+
+		} else {
+			// Get *real* offsetParent
+			offsetParent = this.offsetParent();
+
+			// Get correct offsets
+			offset = this.offset();
+			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+				parentOffset = offsetParent.offset();
+			}
+
+			// Add offsetParent borders
+			parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+		}
+
+		// Subtract parent offsets and element margins
+		return {
+			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+		};
+	},
+
+	offsetParent: function() {
+		return this.map(function() {
+			var offsetParent = this.offsetParent || docElem;
+
+			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+
+			return offsetParent || docElem;
+		});
+	}
+});
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+	var top = "pageYOffset" === prop;
+
+	jQuery.fn[ method ] = function( val ) {
+		return access( this, function( elem, method, val ) {
+			var win = getWindow( elem );
+
+			if ( val === undefined ) {
+				return win ? win[ prop ] : elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : window.pageXOffset,
+					top ? val : window.pageYOffset
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length, null );
+	};
+});
+
+// Support: Safari<7+, Chrome<37+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+		function( elem, computed ) {
+			if ( computed ) {
+				computed = curCSS( elem, prop );
+				// If curCSS returns percentage, fallback to offset
+				return rnumnonpx.test( computed ) ?
+					jQuery( elem ).position()[ prop ] + "px" :
+					computed;
+			}
+		}
+	);
+});
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+		// Margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( jQuery.isWindow( elem ) ) {
+					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+					// isn't a whole lot we can do. See pull request at this URL for discussion:
+					// https://github.com/jquery/jquery/pull/764
+					return elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+					// whichever is greatest
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable, null );
+		};
+	});
+});
+
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+	return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+	define( "jquery", [], function() {
+		return jQuery;
+	});
+}
+
+
+
+
+var
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+	if ( window.$ === jQuery ) {
+		window.$ = _$;
+	}
+
+	if ( deep && window.jQuery === jQuery ) {
+		window.jQuery = _jQuery;
+	}
+
+	return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === strundefined ) {
+	window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+
+}));
+
+!function(a){!function(){var a=function(b){var c=new a.Index;return c.pipeline.add(a.trimmer,a.stopWordFilter,a.stemmer),b&&b.call(c,c),c};a.version="0.7.0",a.utils={},a.utils.warn=function(a){return function(b){a.console&&console.warn&&console.warn(b)}}(this),a.utils.asString=function(a){return void 0===a||null===a?"":a.toString()},a.EventEmitter=function(){this.events={}},a.EventEmitter.prototype.addListener=function(){var a=Array.prototype.slice.call(arguments),b=a.pop(),c=a;if("function"!=typeof b)throw new TypeError("last argument must be a function");c.forEach(function(a){this.hasHandler(a)||(this.events[a]=[]),this.events[a].push(b)},this)},a.EventEmitter.prototype.removeListener=function(a,b){if(this.hasHandler(a)){var c=this.events[a].indexOf(b);this.events[a].splice(c,1),this.events[a].length||delete this.events[a]}},a.EventEmitter.prototype.emit=function(a){if(this.hasHandler(a)){var b=Array.prototype.slice.call(arguments,1);this.events[a].forEach(function(a){a.apply(void 0,b)})}},a.EventEmitter.prototype.hasHandler=function(a){return a in this.events},a.tokenizer=function(b){return arguments.length&&null!=b&&void 0!=b?Array.isArray(b)?b.map(function(b){return a.utils.asString(b).toLowerCase()}):b.toString().trim().toLowerCase().split(a.tokenizer.seperator):[]},a.tokenizer.seperator=/[\s\-]+/,a.tokenizer.load=function(a){var b=this.registeredFunctions[a];if(!b)throw new Error("Cannot load un-registered function: "+a);return b},a.tokenizer.label="default",a.tokenizer.registeredFunctions={default:a.tokenizer},a.tokenizer.registerFunction=function(b,c){c in this.registeredFunctions&&a.utils.warn("Overwriting existing tokenizer: "+c),b.label=c,this.registeredFunctions[c]=b},a.Pipeline=function(){this._stack=[]},a.Pipeline.registeredFunctions={},a.Pipeline.registerFunction=function(b,c){c in this.registeredFunctions&&a.utils.warn("Overwriting existing registered function: "+c),b.label=c,a.Pipeline.registeredFunctions[b.label]=b},a.Pipeline.warnIfFunctionNotRegistered=function(b){var c=b.label&&b.label in this.registeredFunctions;c||a.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",b)},a.Pipeline.load=function(b){var c=new a.Pipeline;return b.forEach(function(b){var d=a.Pipeline.registeredFunctions[b];if(!d)throw new Error("Cannot load un-registered function: "+b);c.add(d)}),c},a.Pipeline.prototype.add=function(){var b=Array.prototype.slice.call(arguments);b.forEach(function(b){a.Pipeline.warnIfFunctionNotRegistered(b),this._stack.push(b)},this)},a.Pipeline.prototype.after=function(b,c){a.Pipeline.warnIfFunctionNotRegistered(c);var d=this._stack.indexOf(b);if(-1==d)throw new Error("Cannot find existingFn");d+=1,this._stack.splice(d,0,c)},a.Pipeline.prototype.before=function(b,c){a.Pipeline.warnIfFunctionNotRegistered(c);var d=this._stack.indexOf(b);if(-1==d)throw new Error("Cannot find existingFn");this._stack.splice(d,0,c)},a.Pipeline.prototype.remove=function(a){var b=this._stack.indexOf(a);-1!=b&&this._stack.splice(b,1)},a.Pipeline.prototype.run=function(a){for(var b=[],c=a.length,d=this._stack.length,e=0;c>e;e++){for(var f=a[e],g=0;d>g&&(f=this._stack[g](f,e,a),void 0!==f&&""!==f);g++);void 0!==f&&""!==f&&b.push(f)}return b},a.Pipeline.prototype.reset=function(){this._stack=[]},a.Pipeline.prototype.toJSON=function(){return this._stack.map(function(b){return a.Pipeline.warnIfFunctionNotRegistered(b),b.label})},a.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},a.Vector.Node=function(a,b,c){this.idx=a,this.val=b,this.next=c},a.Vector.prototype.insert=function(b,c){this._magnitude=void 0;var d=this.list;if(!d)return this.list=new a.Vector.Node(b,c,d),this.length++;if(b<d.idx)return this.list=new a.Vector.Node(b,c,d),this.length++;for(var e=d,f=d.next;void 0!=f;){if(b<f.idx)return e.next=new a.Vector.Node(b,c,f),this.length++;e=f,f=f.next}return e.next=new a.Vector.Node(b,c,f),this.length++},a.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var a,b=this.list,c=0;b;)a=b.val,c+=a*a,b=b.next;return this._magnitude=Math.sqrt(c)},a.Vector.prototype.dot=function(a){for(var b=this.list,c=a.list,d=0;b&&c;)b.idx<c.idx?b=b.next:b.idx>c.idx?c=c.next:(d+=b.val*c.val,b=b.next,c=c.next);return d},a.Vector.prototype.similarity=function(a){return this.dot(a)/(this.magnitude()*a.magnitude())},a.SortedSet=function(){this.length=0,this.elements=[]},a.SortedSet.load=function(a){var b=new this;return b.elements=a,b.length=a.length,b},a.SortedSet.prototype.add=function(){var a,b;for(a=0;a<arguments.length;a++)b=arguments[a],~this.indexOf(b)||this.elements.splice(this.locationFor(b),0,b);this.length=this.elements.length},a.SortedSet.prototype.toArray=function(){return this.elements.slice()},a.SortedSet.prototype.map=function(a,b){return this.elements.map(a,b)},a.SortedSet.prototype.forEach=function(a,b){return this.elements.forEach(a,b)},a.SortedSet.prototype.indexOf=function(a){for(var b=0,c=this.elements.length,d=c-b,e=b+Math.floor(d/2),f=this.elements[e];d>1;){if(f===a)return e;a>f&&(b=e),f>a&&(c=e),d=c-b,e=b+Math.floor(d/2),f=this.elements[e]}return f===a?e:-1},a.SortedSet.prototype.locationFor=function(a){for(var b=0,c=this.elements.length,d=c-b,e=b+Math.floor(d/2),f=this.elements[e];d>1;)a>f&&(b=e),f>a&&(c=e),d=c-b,e=b+Math.floor(d/2),f=this.elements[e];return f>a?e:a>f?e+1:void 0},a.SortedSet.prototype.intersect=function(b){for(var c=new a.SortedSet,d=0,e=0,f=this.length,g=b.length,h=this.elements,i=b.elements;!(d>f-1||e>g-1);)h[d]!==i[e]?h[d]<i[e]?d++:h[d]>i[e]&&e++:(c.add(h[d]),d++,e++);return c},a.SortedSet.prototype.clone=function(){var b=new a.SortedSet;return b.elements=this.toArray(),b.length=b.elements.length,b},a.SortedSet.prototype.union=function(a){var b,c,d;this.length>=a.length?(b=this,c=a):(b=a,c=this),d=b.clone();for(var e=0,f=c.toArray();e<f.length;e++)d.add(f[e]);return d},a.SortedSet.prototype.toJSON=function(){return this.toArray()},a.Index=function(){this._fields=[],this._ref="id",this.pipeline=new a.Pipeline,this.documentStore=new a.Store,this.tokenStore=new a.TokenStore,this.corpusTokens=new a.SortedSet,this.eventEmitter=new a.EventEmitter,this.tokenizerFn=a.tokenizer,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},a.Index.prototype.on=function(){var a=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,a)},a.Index.prototype.off=function(a,b){return this.eventEmitter.removeListener(a,b)},a.Index.load=function(b){b.version!==a.version&&a.utils.warn("version mismatch: current "+a.version+" importing "+b.version);var c=new this;return c._fields=b.fields,c._ref=b.ref,c.tokenizer=a.tokenizer.load(b.tokenizer),c.documentStore=a.Store.load(b.documentStore),c.tokenStore=a.TokenStore.load(b.tokenStore),c.corpusTokens=a.SortedSet.load(b.corpusTokens),c.pipeline=a.Pipeline.load(b.pipeline),c},a.Index.prototype.field=function(a,b){var b=b||{},c={name:a,boost:b.boost||1};return this._fields.push(c),this},a.Index.prototype.ref=function(a){return this._ref=a,this},a.Index.prototype.tokenizer=function(b){var c=b.label&&b.label in a.tokenizer.registeredFunctions;return c||a.utils.warn("Function is not a registered tokenizer. This may cause problems when serialising the index"),this.tokenizerFn=b,this},a.Index.prototype.add=function(b,c){var d={},e=new a.SortedSet,f=b[this._ref],c=void 0===c||c;this._fields.forEach(function(a){var c=this.pipeline.run(this.tokenizerFn(b[a.name]));d[a.name]=c;for(var f=0;f<c.length;f++){var g=c[f];e.add(g),this.corpusTokens.add(g)}},this),this.documentStore.set(f,e);for(var g=0;g<e.length;g++){for(var h=e.elements[g],i=0,j=0;j<this._fields.length;j++){var k=this._fields[j],l=d[k.name],m=l.length;if(m){for(var n=0,o=0;m>o;o++)l[o]===h&&n++;i+=n/m*k.boost}}this.tokenStore.add(h,{ref:f,tf:i})}c&&this.eventEmitter.emit("add",b,this)},a.Index.prototype.remove=function(a,b){var c=a[this._ref],b=void 0===b||b;if(this.documentStore.has(c)){var d=this.documentStore.get(c);this.documentStore.remove(c),d.forEach(function(a){this.tokenStore.remove(a,c)},this),b&&this.eventEmitter.emit("remove",a,this)}},a.Index.prototype.update=function(a,b){var b=void 0===b||b;this.remove(a,!1),this.add(a,!1),b&&this.eventEmitter.emit("update",a,this)},a.Index.prototype.idf=function(a){var b="@"+a;if(Object.prototype.hasOwnProperty.call(this._idfCache,b))return this._idfCache[b];var c=this.tokenStore.count(a),d=1;return c>0&&(d=1+Math.log(this.documentStore.length/c)),this._idfCache[b]=d},a.Index.prototype.search=function(b){var c=this.pipeline.run(this.tokenizerFn(b)),d=new a.Vector,e=[],f=this._fields.reduce(function(a,b){return a+b.boost},0),g=c.some(function(a){return this.tokenStore.has(a)},this);if(!g)return[];c.forEach(function(b,c,g){var h=1/g.length*this._fields.length*f,i=this,j=this.tokenStore.expand(b).reduce(function(c,e){var f=i.corpusTokens.indexOf(e),g=i.idf(e),j=1,k=new a.SortedSet;if(e!==b){var l=Math.max(3,e.length-b.length);j=1/Math.log(l)}f>-1&&d.insert(f,h*g*j);for(var m=i.tokenStore.get(e),n=Object.keys(m),o=n.length,p=0;o>p;p++)k.add(m[n[p]].ref);return c.union(k)},new a.SortedSet);e.push(j)},this);var h=e.reduce(function(a,b){return a.intersect(b)});return h.map(function(a){return{ref:a,score:d.similarity(this.documentVector(a))}},this).sort(function(a,b){return b.score-a.score})},a.Index.prototype.documentVector=function(b){for(var c=this.documentStore.get(b),d=c.length,e=new a.Vector,f=0;d>f;f++){var g=c.elements[f],h=this.tokenStore.get(g)[b].tf,i=this.idf(g);e.insert(this.corpusTokens.indexOf(g),h*i)}return e},a.Index.prototype.toJSON=function(){return{version:a.version,fields:this._fields,ref:this._ref,tokenizer:this.tokenizerFn.label,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},a.Index.prototype.use=function(a){var b=Array.prototype.slice.call(arguments,1);b.unshift(this),a.apply(this,b)},a.Store=function(){this.store={},this.length=0},a.Store.load=function(b){var c=new this;return c.length=b.length,c.store=Object.keys(b.store).reduce(function(c,d){return c[d]=a.SortedSet.load(b.store[d]),c},{}),c},a.Store.prototype.set=function(a,b){this.has(a)||this.length++,this.store[a]=b},a.Store.prototype.get=function(a){return this.store[a]},a.Store.prototype.has=function(a){return a in this.store},a.Store.prototype.remove=function(a){this.has(a)&&(delete this.store[a],this.length--)},a.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},a.stemmer=function(){var a={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},b={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},c="[^aeiou]",d="[aeiouy]",e=c+"[^aeiouy]*",f=d+"[aeiou]*",g="^("+e+")?"+f+e,h="^("+e+")?"+f+e+"("+f+")?$",i="^("+e+")?"+f+e+f+e,j="^("+e+")?"+d,k=new RegExp(g),l=new RegExp(i),m=new RegExp(h),n=new RegExp(j),o=/^(.+?)(ss|i)es$/,p=/^(.+?)([^s])s$/,q=/^(.+?)eed$/,r=/^(.+?)(ed|ing)$/,s=/.$/,t=/(at|bl|iz)$/,u=new RegExp("([^aeiouylsz])\\1$"),v=new RegExp("^"+e+d+"[^aeiouwxy]$"),w=/^(.+?[^aeiou])y$/,x=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,y=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,z=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,A=/^(.+?)(s|t)(ion)$/,B=/^(.+?)e$/,C=/ll$/,D=new RegExp("^"+e+d+"[^aeiouwxy]$"),E=function(c){var d,e,f,g,h,i,j;if(c.length<3)return c;if(f=c.substr(0,1),"y"==f&&(c=f.toUpperCase()+c.substr(1)),g=o,h=p,g.test(c)?c=c.replace(g,"$1$2"):h.test(c)&&(c=c.replace(h,"$1$2")),g=q,h=r,g.test(c)){var E=g.exec(c);g=k,g.test(E[1])&&(g=s,c=c.replace(g,""))}else if(h.test(c)){var E=h.exec(c);d=E[1],h=n,h.test(d)&&(c=d,h=t,i=u,j=v,h.test(c)?c+="e":i.test(c)?(g=s,c=c.replace(g,"")):j.test(c)&&(c+="e"))}if(g=w,g.test(c)){var E=g.exec(c);d=E[1],c=d+"i"}if(g=x,g.test(c)){var E=g.exec(c);d=E[1],e=E[2],g=k,g.test(d)&&(c=d+a[e])}if(g=y,g.test(c)){var E=g.exec(c);d=E[1],e=E[2],g=k,g.test(d)&&(c=d+b[e])}if(g=z,h=A,g.test(c)){var E=g.exec(c);d=E[1],g=l,g.test(d)&&(c=d)}else if(h.test(c)){var E=h.exec(c);d=E[1]+E[2],h=l,h.test(d)&&(c=d)}if(g=B,g.test(c)){var E=g.exec(c);d=E[1],g=l,h=m,i=D,(g.test(d)||h.test(d)&&!i.test(d))&&(c=d)}return g=C,h=l,g.test(c)&&h.test(c)&&(g=s,c=c.replace(g,"")),"y"==f&&(c=f.toLowerCase()+c.substr(1)),c};return E}(),a.Pipeline.registerFunction(a.stemmer,"stemmer"),a.generateStopWordFilter=function(a){var b=a.reduce(function(a,b){return a[b]=b,a},{});return function(a){return a&&b[a]!==a?a:void 0}},a.stopWordFilter=a.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),a.Pipeline.registerFunction(a.stopWordFilter,"stopWordFilter"),a.trimmer=function(a){return a.replace(/^\W+/,"").replace(/\W+$/,"")},a.Pipeline.registerFunction(a.trimmer,"trimmer"),a.TokenStore=function(){this.root={docs:{}},this.length=0},a.TokenStore.load=function(a){var b=new this;return b.root=a.root,b.length=a.length,b},a.TokenStore.prototype.add=function(a,b,c){var c=c||this.root,d=a.charAt(0),e=a.slice(1);return d in c||(c[d]={docs:{}}),0===e.length?(c[d].docs[b.ref]=b,void(this.length+=1)):this.add(e,b,c[d])},a.TokenStore.prototype.has=function(a){if(!a)return!1;for(var b=this.root,c=0;c<a.length;c++){if(!b[a.charAt(c)])return!1;b=b[a.charAt(c)]}return!0},a.TokenStore.prototype.getNode=function(a){if(!a)return{};for(var b=this.root,c=0;c<a.length;c++){if(!b[a.charAt(c)])return{};b=b[a.charAt(c)]}return b},a.TokenStore.prototype.get=function(a,b){return this.getNode(a,b).docs||{}},a.TokenStore.prototype.count=function(a,b){return Object.keys(this.get(a,b)).length},a.TokenStore.prototype.remove=function(a,b){if(a){for(var c=this.root,d=0;d<a.length;d++){if(!(a.charAt(d)in c))return;c=c[a.charAt(d)]}delete c.docs[b]}},a.TokenStore.prototype.expand=function(a,b){var c=this.getNode(a),d=c.docs||{},b=b||[];return Object.keys(d).length&&b.push(a),Object.keys(c).forEach(function(c){"docs"!==c&&b.concat(this.expand(a+c,b))},this),b},a.TokenStore.prototype.toJSON=function(){return{root:this.root,length:this.length}},function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b():a.lunr=b()}(this,function(){return a})}(),a.fn.ghostHunter=function(b){var d=a.extend({},a.fn.ghostHunter.defaults,b);if(d.results)return c.init(this,d),c},a.fn.ghostHunter.defaults={resultsData:!1,onPageLoad:!1,onKeyUp:!1,result_template:"<a href='{{link}}'><p><h2>{{title}}</h2><h4>{{prettyPubDate}}</h4></p></a>",info_template:"<p>Number of posts found: {{amount}}</p>",displaySearchInfo:!0,zeroResultsInfo:!0,before:!1,onComplete:!1,includepages:!1,filterfields:!1};var b=function(a){var b=new Date(a),c=["January","February","March","April","May","June","July","August","September","October","November","December"];return b.getDate()+" "+c[b.getMonth()]+" "+b.getFullYear()},c={isInit:!1,init:function(a,b){var c=this;this.target=a,this.results=b.results,this.blogData={},this.result_template=b.result_template,this.info_template=b.info_template,this.zeroResultsInfo=b.zeroResultsInfo,this.displaySearchInfo=b.displaySearchInfo,this.before=b.before,this.onComplete=b.onComplete,this.includepages=b.includepages,this.filterfields=b.filterfields,this.index=lunr(function(){this.field("title",{boost:10}),this.field("description"),this.field("link"),this.field("markdown",{boost:5}),this.field("pubDate"),this.field("tag"),this.ref("id")}),b.onPageLoad?c.loadAPI():a.focus(function(){c.loadAPI()}),a.closest("form").submit(function(b){b.preventDefault(),c.find(a.val())}),b.onKeyUp&&a.keyup(function(){c.find(a.val())})},loadAPI:function(){if(this.isInit)return!1;var c=this.index,d=this.blogData;obj={limit:"all",include:"tags"},this.includepages&&(obj.filter="(page:true,page:false)"),a.get(ghost.url.api("posts",obj)).done(function(a){searchData=a.posts,searchData.forEach(function(a){var e=a.tags.map(function(a){return a.name});null==a.meta_description&&(a.meta_description="");var f=e.join(", ");f.length<1&&(f="undefined");var g={id:String(a.id),title:String(a.title),description:String(a.meta_description),markdown:String(a.markdown),pubDate:String(a.created_at),tag:f,link:String(a.url)};g.prettyPubDate=b(g.pubDate);var h=b(g.pubDate);c.add(g),d[a.id]={title:a.title,description:a.meta_description,pubDate:h,link:a.url}})}),this.isInit=!0},find:function(b){var c=this.index.search(b),d=a(this.results),e=[];d.empty(),this.before&&this.before(),(this.zeroResultsInfo||c.length>0)&&this.displaySearchInfo&&d.append(this.format(this.info_template,{amount:c.length}));for(var f=0;f<c.length;f++){var g=c[f].ref,h=this.blogData[g];d.append(this.format(this.result_template,h)),e.push(h)}this.onComplete&&this.onComplete(e)},clear:function(){a(this.results).empty(),this.target.val("")},format:function(a,b){return a.replace(/{{([^{}]*)}}/g,function(a,c){var d=b[c];return"string"==typeof d||"number"==typeof d?d:a})}}}(jQuery);
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){
+this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
+
+/* **********************************************
+     Begin prism-core.js
+********************************************** */
+
+var _self = (typeof window !== 'undefined')
+	? window   // if in browser
+	: (
+		(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)
+		? self // if in worker
+		: {}   // if in node js
+	);
+
+/**
+ * Prism: Lightweight, robust, elegant syntax highlighting
+ * MIT license http://www.opensource.org/licenses/mit-license.php/
+ * @author Lea Verou http://lea.verou.me
+ */
+
+var Prism = (function(){
+
+// Private helper vars
+var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i;
+
+var _ = _self.Prism = {
+	util: {
+		encode: function (tokens) {
+			if (tokens instanceof Token) {
+				return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);
+			} else if (_.util.type(tokens) === 'Array') {
+				return tokens.map(_.util.encode);
+			} else {
+				return tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\u00a0/g, ' ');
+			}
+		},
+
+		type: function (o) {
+			return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1];
+		},
+
+		// Deep clone a language definition (e.g. to extend it)
+		clone: function (o) {
+			var type = _.util.type(o);
+
+			switch (type) {
+				case 'Object':
+					var clone = {};
+
+					for (var key in o) {
+						if (o.hasOwnProperty(key)) {
+							clone[key] = _.util.clone(o[key]);
+						}
+					}
+
+					return clone;
+
+				case 'Array':
+					// Check for existence for IE8
+					return o.map && o.map(function(v) { return _.util.clone(v); });
+			}
+
+			return o;
+		}
+	},
+
+	languages: {
+		extend: function (id, redef) {
+			var lang = _.util.clone(_.languages[id]);
+
+			for (var key in redef) {
+				lang[key] = redef[key];
+			}
+
+			return lang;
+		},
+
+		/**
+		 * Insert a token before another token in a language literal
+		 * As this needs to recreate the object (we cannot actually insert before keys in object literals),
+		 * we cannot just provide an object, we need anobject and a key.
+		 * @param inside The key (or language id) of the parent
+		 * @param before The key to insert before. If not provided, the function appends instead.
+		 * @param insert Object with the key/value pairs to insert
+		 * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.
+		 */
+		insertBefore: function (inside, before, insert, root) {
+			root = root || _.languages;
+			var grammar = root[inside];
+			
+			if (arguments.length == 2) {
+				insert = arguments[1];
+				
+				for (var newToken in insert) {
+					if (insert.hasOwnProperty(newToken)) {
+						grammar[newToken] = insert[newToken];
+					}
+				}
+				
+				return grammar;
+			}
+			
+			var ret = {};
+
+			for (var token in grammar) {
+
+				if (grammar.hasOwnProperty(token)) {
+
+					if (token == before) {
+
+						for (var newToken in insert) {
+
+							if (insert.hasOwnProperty(newToken)) {
+								ret[newToken] = insert[newToken];
+							}
+						}
+					}
+
+					ret[token] = grammar[token];
+				}
+			}
+			
+			// Update references in other language definitions
+			_.languages.DFS(_.languages, function(key, value) {
+				if (value === root[inside] && key != inside) {
+					this[key] = ret;
+				}
+			});
+
+			return root[inside] = ret;
+		},
+
+		// Traverse a language definition with Depth First Search
+		DFS: function(o, callback, type) {
+			for (var i in o) {
+				if (o.hasOwnProperty(i)) {
+					callback.call(o, i, o[i], type || i);
+
+					if (_.util.type(o[i]) === 'Object') {
+						_.languages.DFS(o[i], callback);
+					}
+					else if (_.util.type(o[i]) === 'Array') {
+						_.languages.DFS(o[i], callback, i);
+					}
+				}
+			}
+		}
+	},
+	plugins: {},
+	
+	highlightAll: function(async, callback) {
+		var elements = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');
+
+		for (var i=0, element; element = elements[i++];) {
+			_.highlightElement(element, async === true, callback);
+		}
+	},
+
+	highlightElement: function(element, async, callback) {
+		// Find language
+		var language, grammar, parent = element;
+
+		while (parent && !lang.test(parent.className)) {
+			parent = parent.parentNode;
+		}
+
+		if (parent) {
+			language = (parent.className.match(lang) || [,''])[1];
+			grammar = _.languages[language];
+		}
+
+		// Set language on the element, if not present
+		element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
+
+		// Set language on the parent, for styling
+		parent = element.parentNode;
+
+		if (/pre/i.test(parent.nodeName)) {
+			parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
+		}
+
+		var code = element.textContent;
+
+		var env = {
+			element: element,
+			language: language,
+			grammar: grammar,
+			code: code
+		};
+
+		if (!code || !grammar) {
+			_.hooks.run('complete', env);
+			return;
+		}
+
+		_.hooks.run('before-highlight', env);
+
+		if (async && _self.Worker) {
+			var worker = new Worker(_.filename);
+
+			worker.onmessage = function(evt) {
+				env.highlightedCode = evt.data;
+
+				_.hooks.run('before-insert', env);
+
+				env.element.innerHTML = env.highlightedCode;
+
+				callback && callback.call(env.element);
+				_.hooks.run('after-highlight', env);
+				_.hooks.run('complete', env);
+			};
+
+			worker.postMessage(JSON.stringify({
+				language: env.language,
+				code: env.code,
+				immediateClose: true
+			}));
+		}
+		else {
+			env.highlightedCode = _.highlight(env.code, env.grammar, env.language);
+
+			_.hooks.run('before-insert', env);
+
+			env.element.innerHTML = env.highlightedCode;
+
+			callback && callback.call(element);
+
+			_.hooks.run('after-highlight', env);
+			_.hooks.run('complete', env);
+		}
+	},
+
+	highlight: function (text, grammar, language) {
+		var tokens = _.tokenize(text, grammar);
+		return Token.stringify(_.util.encode(tokens), language);
+	},
+
+	tokenize: function(text, grammar, language) {
+		var Token = _.Token;
+
+		var strarr = [text];
+
+		var rest = grammar.rest;
+
+		if (rest) {
+			for (var token in rest) {
+				grammar[token] = rest[token];
+			}
+
+			delete grammar.rest;
+		}
+
+		tokenloop: for (var token in grammar) {
+			if(!grammar.hasOwnProperty(token) || !grammar[token]) {
+				continue;
+			}
+
+			var patterns = grammar[token];
+			patterns = (_.util.type(patterns) === "Array") ? patterns : [patterns];
+
+			for (var j = 0; j < patterns.length; ++j) {
+				var pattern = patterns[j],
+					inside = pattern.inside,
+					lookbehind = !!pattern.lookbehind,
+					lookbehindLength = 0,
+					alias = pattern.alias;
+
+				pattern = pattern.pattern || pattern;
+
+				for (var i=0; i<strarr.length; i++) { // Don’t cache length as it changes during the loop
+
+					var str = strarr[i];
+
+					if (strarr.length > text.length) {
+						// Something went terribly wrong, ABORT, ABORT!
+						break tokenloop;
+					}
+
+					if (str instanceof Token) {
+						continue;
+					}
+
+					pattern.lastIndex = 0;
+
+					var match = pattern.exec(str);
+
+					if (match) {
+						if(lookbehind) {
+							lookbehindLength = match[1].length;
+						}
+
+						var from = match.index - 1 + lookbehindLength,
+							match = match[0].slice(lookbehindLength),
+							len = match.length,
+							to = from + len,
+							before = str.slice(0, from + 1),
+							after = str.slice(to + 1);
+
+						var args = [i, 1];
+
+						if (before) {
+							args.push(before);
+						}
+
+						var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias);
+
+						args.push(wrapped);
+
+						if (after) {
+							args.push(after);
+						}
+
+						Array.prototype.splice.apply(strarr, args);
+					}
+				}
+			}
+		}
+
+		return strarr;
+	},
+
+	hooks: {
+		all: {},
+
+		add: function (name, callback) {
+			var hooks = _.hooks.all;
+
+			hooks[name] = hooks[name] || [];
+
+			hooks[name].push(callback);
+		},
+
+		run: function (name, env) {
+			var callbacks = _.hooks.all[name];
+
+			if (!callbacks || !callbacks.length) {
+				return;
+			}
+
+			for (var i=0, callback; callback = callbacks[i++];) {
+				callback(env);
+			}
+		}
+	}
+};
+
+var Token = _.Token = function(type, content, alias) {
+	this.type = type;
+	this.content = content;
+	this.alias = alias;
+};
+
+Token.stringify = function(o, language, parent) {
+	if (typeof o == 'string') {
+		return o;
+	}
+
+	if (_.util.type(o) === 'Array') {
+		return o.map(function(element) {
+			return Token.stringify(element, language, o);
+		}).join('');
+	}
+
+	var env = {
+		type: o.type,
+		content: Token.stringify(o.content, language, parent),
+		tag: 'span',
+		classes: ['token', o.type],
+		attributes: {},
+		language: language,
+		parent: parent
+	};
+
+	if (env.type == 'comment') {
+		env.attributes['spellcheck'] = 'true';
+	}
+
+	if (o.alias) {
+		var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];
+		Array.prototype.push.apply(env.classes, aliases);
+	}
+
+	_.hooks.run('wrap', env);
+
+	var attributes = '';
+
+	for (var name in env.attributes) {
+		attributes += (attributes ? ' ' : '') + name + '="' + (env.attributes[name] || '') + '"';
+	}
+
+	return '<' + env.tag + ' class="' + env.classes.join(' ') + '" ' + attributes + '>' + env.content + '</' + env.tag + '>';
+
+};
+
+if (!_self.document) {
+	if (!_self.addEventListener) {
+		// in Node.js
+		return _self.Prism;
+	}
+ 	// In worker
+	_self.addEventListener('message', function(evt) {
+		var message = JSON.parse(evt.data),
+		    lang = message.language,
+		    code = message.code,
+		    immediateClose = message.immediateClose;
+
+		_self.postMessage(_.highlight(code, _.languages[lang], lang));
+		if (immediateClose) {
+			_self.close();
+		}
+	}, false);
+
+	return _self.Prism;
+}
+
+// Get current script and highlight
+var script = document.getElementsByTagName('script');
+
+script = script[script.length - 1];
+
+if (script) {
+	_.filename = script.src;
+
+	if (document.addEventListener && !script.hasAttribute('data-manual')) {
+		document.addEventListener('DOMContentLoaded', _.highlightAll);
+	}
+}
+
+return _self.Prism;
+
+})();
+
+if (typeof module !== 'undefined' && module.exports) {
+	module.exports = Prism;
+}
+
+// hack for components to work correctly in node.js
+if (typeof global !== 'undefined') {
+	global.Prism = Prism;
+}
+
+
+/* **********************************************
+     Begin prism-markup.js
+********************************************** */
+
+Prism.languages.markup = {
+	'comment': /<!--[\w\W]*?-->/,
+	'prolog': /<\?[\w\W]+?\?>/,
+	'doctype': /<!DOCTYPE[\w\W]+?>/,
+	'cdata': /<!\[CDATA\[[\w\W]*?]]>/i,
+	'tag': {
+		pattern: /<\/?(?!\d)[^\s>\/=.$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,
+		inside: {
+			'tag': {
+				pattern: /^<\/?[^\s>\/]+/i,
+				inside: {
+					'punctuation': /^<\/?/,
+					'namespace': /^[^\s>\/:]+:/
+				}
+			},
+			'attr-value': {
+				pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,
+				inside: {
+					'punctuation': /[=>"']/
+				}
+			},
+			'punctuation': /\/?>/,
+			'attr-name': {
+				pattern: /[^\s>\/]+/,
+				inside: {
+					'namespace': /^[^\s>\/:]+:/
+				}
+			}
+
+		}
+	},
+	'entity': /&#?[\da-z]{1,8};/i
+};
+
+// Plugin to make entity title show the real entity, idea by Roman Komarov
+Prism.hooks.add('wrap', function(env) {
+
+	if (env.type === 'entity') {
+		env.attributes['title'] = env.content.replace(/&amp;/, '&');
+	}
+});
+
+Prism.languages.xml = Prism.languages.markup;
+Prism.languages.html = Prism.languages.markup;
+Prism.languages.mathml = Prism.languages.markup;
+Prism.languages.svg = Prism.languages.markup;
+
+
+/* **********************************************
+     Begin prism-css.js
+********************************************** */
+
+Prism.languages.css = {
+	'comment': /\/\*[\w\W]*?\*\//,
+	'atrule': {
+		pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i,
+		inside: {
+			'rule': /@[\w-]+/
+			// See rest below
+		}
+	},
+	'url': /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
+	'selector': /[^\{\}\s][^\{\};]*?(?=\s*\{)/,
+	'string': /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,
+	'property': /(\b|\B)[\w-]+(?=\s*:)/i,
+	'important': /\B!important\b/i,
+	'function': /[-a-z0-9]+(?=\()/i,
+	'punctuation': /[(){};:]/
+};
+
+Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);
+
+if (Prism.languages.markup) {
+	Prism.languages.insertBefore('markup', 'tag', {
+		'style': {
+			pattern: /(<style[\w\W]*?>)[\w\W]*?(?=<\/style>)/i,
+			lookbehind: true,
+			inside: Prism.languages.css,
+			alias: 'language-css'
+		}
+	});
+	
+	Prism.languages.insertBefore('inside', 'attr-value', {
+		'style-attr': {
+			pattern: /\s*style=("|').*?\1/i,
+			inside: {
+				'attr-name': {
+					pattern: /^\s*style/i,
+					inside: Prism.languages.markup.tag.inside
+				},
+				'punctuation': /^\s*=\s*['"]|['"]\s*$/,
+				'attr-value': {
+					pattern: /.+/i,
+					inside: Prism.languages.css
+				}
+			},
+			alias: 'language-css'
+		}
+	}, Prism.languages.markup.tag);
+}
+
+/* **********************************************
+     Begin prism-clike.js
+********************************************** */
+
+Prism.languages.clike = {
+	'comment': [
+		{
+			pattern: /(^|[^\\])\/\*[\w\W]*?\*\//,
+			lookbehind: true
+		},
+		{
+			pattern: /(^|[^\\:])\/\/.*/,
+			lookbehind: true
+		}
+	],
+	'string': /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
+	'class-name': {
+		pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
+		lookbehind: true,
+		inside: {
+			punctuation: /(\.|\\)/
+		}
+	},
+	'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
+	'boolean': /\b(true|false)\b/,
+	'function': /[a-z0-9_]+(?=\()/i,
+	'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,
+	'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
+	'punctuation': /[{}[\];(),.:]/
+};
+
+
+/* **********************************************
+     Begin prism-javascript.js
+********************************************** */
+
+Prism.languages.javascript = Prism.languages.extend('clike', {
+	'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,
+	'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
+	// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
+	'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i
+});
+
+Prism.languages.insertBefore('javascript', 'keyword', {
+	'regex': {
+		pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
+		lookbehind: true
+	}
+});
+
+Prism.languages.insertBefore('javascript', 'class-name', {
+	'template-string': {
+		pattern: /`(?:\\`|\\?[^`])*`/,
+		inside: {
+			'interpolation': {
+				pattern: /\$\{[^}]+\}/,
+				inside: {
+					'interpolation-punctuation': {
+						pattern: /^\$\{|\}$/,
+						alias: 'punctuation'
+					},
+					rest: Prism.languages.javascript
+				}
+			},
+			'string': /[\s\S]+/
+		}
+	}
+});
+
+if (Prism.languages.markup) {
+	Prism.languages.insertBefore('markup', 'tag', {
+		'script': {
+			pattern: /(<script[\w\W]*?>)[\w\W]*?(?=<\/script>)/i,
+			lookbehind: true,
+			inside: Prism.languages.javascript,
+			alias: 'language-javascript'
+		}
+	});
+}
+
+Prism.languages.js = Prism.languages.javascript;
+
+/* **********************************************
+     Begin prism-file-highlight.js
+********************************************** */
+
+(function () {
+	if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
+		return;
+	}
+
+	self.Prism.fileHighlight = function() {
+
+		var Extensions = {
+			'js': 'javascript',
+			'html': 'markup',
+			'svg': 'markup',
+			'xml': 'markup',
+			'py': 'python',
+			'rb': 'ruby',
+			'ps1': 'powershell',
+			'psm1': 'powershell'
+		};
+
+		if(Array.prototype.forEach) { // Check to prevent error in IE8
+			Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {
+				var src = pre.getAttribute('data-src');
+
+				var language, parent = pre;
+				var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i;
+				while (parent && !lang.test(parent.className)) {
+					parent = parent.parentNode;
+				}
+
+				if (parent) {
+					language = (pre.className.match(lang) || [, ''])[1];
+				}
+
+				if (!language) {
+					var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
+					language = Extensions[extension] || extension;
+				}
+
+				var code = document.createElement('code');
+				code.className = 'language-' + language;
+
+				pre.textContent = '';
+
+				code.textContent = 'Loading…';
+
+				pre.appendChild(code);
+
+				var xhr = new XMLHttpRequest();
+
+				xhr.open('GET', src, true);
+
+				xhr.onreadystatechange = function () {
+					if (xhr.readyState == 4) {
+
+						if (xhr.status < 400 && xhr.responseText) {
+							code.textContent = xhr.responseText;
+
+							Prism.highlightElement(code);
+						}
+						else if (xhr.status >= 400) {
+							code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
+						}
+						else {
+							code.textContent = '✖ Error: File does not exist or is empty';
+						}
+					}
+				};
+
+				xhr.send(null);
+			});
+		}
+
+	};
+
+	self.Prism.fileHighlight();
+
+})();
diff --git a/source/javascripts/ie/backgroundsize.min.htc b/source/javascripts/ie/backgroundsize.min.htc
new file mode 100644
index 0000000..9b2592e
--- /dev/null
+++ b/source/javascripts/ie/backgroundsize.min.htc
@@ -0,0 +1,7 @@
+<component lightWeight="true">
+<attach event="onpropertychange" onevent="handlePropertychange()" />
+<attach event="ondetach" onevent="restore()" />
+<attach event="onresize" for="window" onevent="handleResize()" />
+<script type="text/javascript">
+var rsrc=/url\(["']?(.*?)["']?\)/,positions={top:0,left:0,bottom:1,right:1,center:0.5},doc=element.document;init(); function init(){var b=doc.createElement("div"),a=doc.createElement("img"),c,d;b.style.position="absolute";b.style.zIndex=-1;b.style.top=0;b.style.right=0;b.style.left=0;b.style.bottom=0;b.style.overflow="hidden";a.style.position="absolute";a.style.width=a.style.width="auto";b.appendChild(a);element.insertBefore(b,element.firstChild);d=[element.currentStyle.backgroundPositionX,element.currentStyle.backgroundPositionY];element.bgsExpando=c={wrapper:b,img:a,backgroundSize:element.currentStyle["background-size"], backgroundPositionX:positions[d[0]]||parseFloat(d[0])/100,backgroundPositionY:positions[d[1]]||parseFloat(d[1])/100};"auto"==element.currentStyle.zIndex&&(element.style.zIndex=0);"static"==element.currentStyle.position&&(element.style.position="relative");refreshDisplay(element,c)&&(refreshDimensions(element,c),refreshBackgroundImage(element,c,function(){updateBackground(element,c)}))} function refreshDisplay(b,a){var c=b.currentStyle.display;c!=a.display&&(a.display=c,a.somethingChanged=!0);return"none"!=c}function refreshDimensions(b,a){var c=b.offsetWidth-(parseFloat(b.currentStyle.borderLeftWidth)||0)-(parseFloat(b.currentStyle.borderRightWidth)||0),d=b.offsetHeight-(parseFloat(b.currentStyle.borderTopWidth)||0)-(parseFloat(b.currentStyle.borderBottomWidth)||0);if(c!=a.innerWidth||d!=a.innerHeight)a.innerWidth=c,a.innerHeight=d,a.somethingChanged=!0} function refreshBackgroundImage(b,a,c){var d=a.img,e=(rsrc.exec(b.currentStyle.backgroundImage)||[])[1];if(e&&e!=a.backgroundSrc){a.backgroundSrc=e;a.somethingChanged=!0;d.onload=function(){var b=d.width,e=d.height;1==b&&1==e||(a.imgWidth=b,a.imgHeight=e,a.constrain=!1,c(),d.style.visibility="visible",d.onload=null)};d.style.visibility="hidden";d.src=a.backgroundSrc;if(d.readyState||d.complete)d.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",d.src=a.backgroundSrc;a.ignoreNextPropertyChange= !0;b.style.backgroundImage="none"}else c()} function updateBackground(b,a){if(a.somethingChanged){var c=a.img,d=a.innerWidth/a.innerHeight,e=a.imgWidth/a.imgHeight,f=a.constrain;"contain"==a.backgroundSize?e>d?(a.constrain=d="width",e=Math.floor((a.innerHeight-a.innerWidth/e)*a.backgroundPositionY),c.style.top=e+"px",d!=f&&(c.style.width="100%",c.style.height="auto",c.style.left=0)):(a.constrain=d="height",e=Math.floor((a.innerWidth-a.innerHeight*e)*a.backgroundPositionX),c.style.left=e+"px",d!=f&&(c.style.width="auto",c.style.height="100%", c.style.top=0)):"cover"==a.backgroundSize&&(e>d?(a.constrain=d="height",e=Math.floor((a.innerHeight*e-a.innerWidth)*a.backgroundPositionX),c.style.left=-e+"px",d!=f&&(c.style.width="auto",c.style.height="100%",c.style.top=0)):(a.constrain=d="width",e=Math.floor((a.innerWidth/e-a.innerHeight)*a.backgroundPositionY),c.style.top=-e+"px",d!=f&&(c.style.width="100%",c.style.height="auto",c.style.left=0)));a.somethingChanged=!1}} function handlePropertychange(){var b=element.bgsExpando;b.ignoreNextPropertyChange?b.ignoreNextPropertyChange=!1:refreshDisplay(element,b)&&(refreshDimensions(element,b),refreshBackgroundImage(element,b,function(){updateBackground(element,b)}))}function handleResize(){var b=element.bgsExpando;"none"!=b.display&&(refreshDimensions(element,b),updateBackground(element,b))} function restore(){var b=element.bgsExpando;try{element.style.backgroundImage="url('"+b.backgroundSrc+"')",element.removeChild(b.wrapper),element.bgsExpando=null}catch(a){}};
+</script>
\ No newline at end of file
diff --git a/source/javascripts/ie/html5.js b/source/javascripts/ie/html5.js
new file mode 100644
index 0000000..a788916
--- /dev/null
+++ b/source/javascripts/ie/html5.js
@@ -0,0 +1,7 @@
+/*! HTML5 Shiv v3.6 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */
+/* Source: https://github.com/aFarkas/html5shiv */
+(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
+a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
+c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");
+var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,
+b){a||(a=f);if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
\ No newline at end of file
diff --git a/source/javascripts/ie/html5shiv.js b/source/javascripts/ie/html5shiv.js
new file mode 100644
index 0000000..dcf351c
--- /dev/null
+++ b/source/javascripts/ie/html5shiv.js
@@ -0,0 +1,8 @@
+/*
+ HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
+a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
+c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
+"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
+for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
diff --git a/source/javascripts/ie/respond.min.js b/source/javascripts/ie/respond.min.js
new file mode 100644
index 0000000..e8d6207
--- /dev/null
+++ b/source/javascripts/ie/respond.min.js
@@ -0,0 +1,6 @@
+/*! Respond.js v1.4.2: min/max-width media query polyfill
+ * Copyright 2014 Scott Jehl
+ * Licensed under MIT
+ * http://j.mp/respondjs */
+
+!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;b<t.length;b++){var c=t[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!p[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(w(c.styleSheet.rawCssText,e,f),p[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!s||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}x()};y(),c.update=y,c.getEmValue=u,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
\ No newline at end of file
diff --git a/source/javascripts/jquery.min.js b/source/javascripts/jquery.min.js
new file mode 100644
index 0000000..0f60b7b
--- /dev/null
+++ b/source/javascripts/jquery.min.js
@@ -0,0 +1,5 @@
+/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
+
+return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){
+return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/source/javascripts/jquery.scrollex.min.js b/source/javascripts/jquery.scrollex.min.js
new file mode 100644
index 0000000..ac907cc
--- /dev/null
+++ b/source/javascripts/jquery.scrollex.min.js
@@ -0,0 +1,2 @@
+/* jquery.scrollex v0.2.1 | (c) n33 | n33.co @n33co | MIT */
+!function(t){function e(t,e,n){return"string"==typeof t&&("%"==t.slice(-1)?t=parseInt(t.substring(0,t.length-1))/100*e:"vh"==t.slice(-2)?t=parseInt(t.substring(0,t.length-2))/100*n:"px"==t.slice(-2)&&(t=parseInt(t.substring(0,t.length-2)))),t}var n=t(window),i=1,o={};n.on("scroll",function(){var e=n.scrollTop();t.map(o,function(t){window.clearTimeout(t.timeoutId),t.timeoutId=window.setTimeout(function(){t.handler(e)},t.options.delay)})}).on("load",function(){n.trigger("scroll")}),jQuery.fn.scrollex=function(l){var s=t(this);if(0==this.length)return s;if(this.length>1){for(var r=0;r<this.length;r++)t(this[r]).scrollex(l);return s}if(s.data("_scrollexId"))return s;var a,u,h,c,p;switch(a=i++,u=jQuery.extend({top:0,bottom:0,delay:0,mode:"default",enter:null,leave:null,initialize:null,terminate:null,scroll:null},l),u.mode){case"top":h=function(t,e,n,i,o){return t>=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n<this.length;n++)t(this[n]).unscrollex();return e}var i,l;return(i=e.data("_scrollexId"))?(l=o[i],window.clearTimeout(l.timeoutId),delete o[i],e.removeData("_scrollexId"),l.options.terminate&&l.options.terminate.apply(this),e):e}}(jQuery);
\ No newline at end of file
diff --git a/source/javascripts/jquery.scrolly.min.js b/source/javascripts/jquery.scrolly.min.js
new file mode 100644
index 0000000..bcb08ff
--- /dev/null
+++ b/source/javascripts/jquery.scrolly.min.js
@@ -0,0 +1,2 @@
+/* jquery.scrolly v1.0.0-dev | (c) n33 | n33.co @n33co | MIT */
+(function(e){function u(s,o){var u,a,f;if((u=e(s))[t]==0)return n;a=u[i]()[r];switch(o.anchor){case"middle":f=a-(e(window).height()-u.outerHeight())/2;break;default:case r:f=Math.max(a,0)}return typeof o[i]=="function"?f-=o[i]():f-=o[i],f}var t="length",n=null,r="top",i="offset",s="click.scrolly",o=e(window);e.fn.scrolly=function(i){var o,a,f,l,c=e(this);if(this[t]==0)return c;if(this[t]>1){for(o=0;o<this[t];o++)e(this[o]).scrolly(i);return c}l=n,f=c.attr("href");if(f.charAt(0)!="#"||f[t]<2)return c;a=jQuery.extend({anchor:r,easing:"swing",offset:0,parent:e("body,html"),pollOnce:!1,speed:1e3},i),a.pollOnce&&(l=u(f,a)),c.off(s).on(s,function(e){var t=l!==n?l:u(f,a);t!==n&&(e.preventDefault(),a.parent.stop().animate({scrollTop:t},a.speed,a.easing))})}})(jQuery);
\ No newline at end of file
diff --git a/source/javascripts/katex.js b/source/javascripts/katex.js
new file mode 100644
index 0000000..e104be9
--- /dev/null
+++ b/source/javascripts/katex.js
@@ -0,0 +1,9075 @@
+(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.katex = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+/* eslint no-console:0 */
+/**
+ * This is the main entry point for KaTeX. Here, we expose functions for
+ * rendering expressions either to DOM nodes or to markup strings.
+ *
+ * We also expose the ParseError class to check if errors thrown from KaTeX are
+ * errors in the expression, or errors in javascript handling.
+ */
+
+var ParseError = require("./src/ParseError");
+var Settings = require("./src/Settings");
+
+var buildTree = require("./src/buildTree");
+var parseTree = require("./src/parseTree");
+var utils = require("./src/utils");
+
+/**
+ * Parse and build an expression, and place that expression in the DOM node
+ * given.
+ */
+var render = function(expression, baseNode, options) {
+    utils.clearNode(baseNode);
+
+    var settings = new Settings(options);
+
+    var tree = parseTree(expression, settings);
+    var node = buildTree(tree, expression, settings).toNode();
+
+    baseNode.appendChild(node);
+};
+
+// KaTeX's styles don't work properly in quirks mode. Print out an error, and
+// disable rendering.
+if (typeof document !== "undefined") {
+    if (document.compatMode !== "CSS1Compat") {
+        typeof console !== "undefined" && console.warn(
+            "Warning: KaTeX doesn't work in quirks mode. Make sure your " +
+                "website has a suitable doctype.");
+
+        render = function() {
+            throw new ParseError("KaTeX doesn't work in quirks mode.");
+        };
+    }
+}
+
+/**
+ * Parse and build an expression, and return the markup for that.
+ */
+var renderToString = function(expression, options) {
+    var settings = new Settings(options);
+
+    var tree = parseTree(expression, settings);
+    return buildTree(tree, expression, settings).toMarkup();
+};
+
+/**
+ * Parse an expression and return the parse tree.
+ */
+var generateParseTree = function(expression, options) {
+    var settings = new Settings(options);
+    return parseTree(expression, settings);
+};
+
+module.exports = {
+    render: render,
+    renderToString: renderToString,
+    /**
+     * NOTE: This method is not currently recommended for public use.
+     * The internal tree representation is unstable and is very likely
+     * to change. Use at your own risk.
+     */
+    __parse: generateParseTree,
+    ParseError: ParseError
+};
+
+},{"./src/ParseError":6,"./src/Settings":8,"./src/buildTree":13,"./src/parseTree":22,"./src/utils":25}],2:[function(require,module,exports){
+/** @flow */
+
+"use strict";
+
+function getRelocatable(re) {
+  // In the future, this could use a WeakMap instead of an expando.
+  if (!re.__matchAtRelocatable) {
+    // Disjunctions are the lowest-precedence operator, so we can make any
+    // pattern match the empty string by appending `|()` to it:
+    // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-patterns
+    var source = re.source + "|()";
+
+    // We always make the new regex global.
+    var flags = "g" + (re.ignoreCase ? "i" : "") + (re.multiline ? "m" : "") + (re.unicode ? "u" : "")
+    // sticky (/.../y) doesn't make sense in conjunction with our relocation
+    // logic, so we ignore it here.
+    ;
+
+    re.__matchAtRelocatable = new RegExp(source, flags);
+  }
+  return re.__matchAtRelocatable;
+}
+
+function matchAt(re, str, pos) {
+  if (re.global || re.sticky) {
+    throw new Error("matchAt(...): Only non-global regexes are supported");
+  }
+  var reloc = getRelocatable(re);
+  reloc.lastIndex = pos;
+  var match = reloc.exec(str);
+  // Last capturing group is our sentinel that indicates whether the regex
+  // matched at the given location.
+  if (match[match.length - 1] == null) {
+    // Original regex matched.
+    match.length = match.length - 1;
+    return match;
+  } else {
+    return null;
+  }
+}
+
+module.exports = matchAt;
+},{}],3:[function(require,module,exports){
+/**
+ * The Lexer class handles tokenizing the input in various ways. Since our
+ * parser expects us to be able to backtrack, the lexer allows lexing from any
+ * given starting point.
+ *
+ * Its main exposed function is the `lex` function, which takes a position to
+ * lex from and a type of token to lex. It defers to the appropriate `_innerLex`
+ * function.
+ *
+ * The various `_innerLex` functions perform the actual lexing of different
+ * kinds.
+ */
+
+var matchAt = require("match-at");
+
+var ParseError = require("./ParseError");
+
+// The main lexer class
+function Lexer(input) {
+    this.input = input;
+    this.pos = 0;
+}
+
+/**
+ * The resulting token returned from `lex`.
+ *
+ * It consists of the token text plus some position information.
+ * The position information is essentially a range in an input string,
+ * but instead of referencing the bare input string, we refer to the lexer.
+ * That way it is possible to attach extra metadata to the input string,
+ * like for example a file name or similar.
+ *
+ * The position information (all three parameters) is optional,
+ * so it is OK to construct synthetic tokens if appropriate.
+ * Not providing available position information may lead to
+ * degraded error reporting, though.
+ *
+ * @param {string}  text   the text of this token
+ * @param {number=} start  the start offset, zero-based inclusive
+ * @param {number=} end    the end offset, zero-based exclusive
+ * @param {Lexer=}  lexer  the lexer which in turn holds the input string
+ */
+function Token(text, start, end, lexer) {
+    this.text = text;
+    this.start = start;
+    this.end = end;
+    this.lexer = lexer;
+}
+
+/**
+ * Given a pair of tokens (this and endToken), compute a “Token” encompassing
+ * the whole input range enclosed by these two.
+ *
+ * @param {Token}  endToken  last token of the range, inclusive
+ * @param {string} text      the text of the newly constructed token
+ */
+Token.prototype.range = function(endToken, text) {
+    if (endToken.lexer !== this.lexer) {
+        return new Token(text); // sorry, no position information available
+    }
+    return new Token(text, this.start, endToken.end, this.lexer);
+};
+
+/* The following tokenRegex
+ * - matches typical whitespace (but not NBSP etc.) using its first group
+ * - does not match any control character \x00-\x1f except whitespace
+ * - does not match a bare backslash
+ * - matches any ASCII character except those just mentioned
+ * - does not match the BMP private use area \uE000-\uF8FF
+ * - does not match bare surrogate code units
+ * - matches any BMP character except for those just described
+ * - matches any valid Unicode surrogate pair
+ * - matches a backslash followed by one or more letters
+ * - matches a backslash followed by any BMP character, including newline
+ * Just because the Lexer matches something doesn't mean it's valid input:
+ * If there is no matching function or symbol definition, the Parser will
+ * still reject the input.
+ */
+var tokenRegex = new RegExp(
+    "([ \r\n\t]+)|" +                                 // whitespace
+    "([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" +  // single codepoint
+    "|[\uD800-\uDBFF][\uDC00-\uDFFF]" +               // surrogate pair
+    "|\\\\(?:[a-zA-Z]+|[^\uD800-\uDFFF])" +           // function name
+    ")"
+);
+
+/**
+ * This function lexes a single token.
+ */
+Lexer.prototype.lex = function() {
+    var input = this.input;
+    var pos = this.pos;
+    if (pos === input.length) {
+        return new Token("EOF", pos, pos, this);
+    }
+    var match = matchAt(tokenRegex, input, pos);
+    if (match === null) {
+        throw new ParseError(
+            "Unexpected character: '" + input[pos] + "'",
+            new Token(input[pos], pos, pos + 1, this));
+    }
+    var text = match[2] || " ";
+    var start = this.pos;
+    this.pos += match[0].length;
+    var end = this.pos;
+    return new Token(text, start, end, this);
+};
+
+module.exports = Lexer;
+
+},{"./ParseError":6,"match-at":2}],4:[function(require,module,exports){
+/**
+ * This file contains the “gullet” where macros are expanded
+ * until only non-macro tokens remain.
+ */
+
+var Lexer = require("./Lexer");
+
+function MacroExpander(input, macros) {
+    this.lexer = new Lexer(input);
+    this.macros = macros;
+    this.stack = []; // contains tokens in REVERSE order
+    this.discardedWhiteSpace = [];
+}
+
+/**
+ * Recursively expand first token, then return first non-expandable token.
+ */
+MacroExpander.prototype.nextToken = function() {
+    for (;;) {
+        if (this.stack.length === 0) {
+            this.stack.push(this.lexer.lex());
+        }
+        var topToken = this.stack.pop();
+        var name = topToken.text;
+        if (!(name.charAt(0) === "\\" && this.macros.hasOwnProperty(name))) {
+            return topToken;
+        }
+        var expansion = this.macros[name];
+        if (typeof expansion === "string") {
+            var bodyLexer = new Lexer(expansion);
+            expansion = [];
+            var tok = bodyLexer.lex();
+            while (tok.text !== "EOF") {
+                expansion.push(tok);
+                tok = bodyLexer.lex();
+            }
+            expansion.reverse(); // to fit in with stack using push and pop
+            this.macros[name] = expansion;
+        }
+        this.stack = this.stack.concat(expansion);
+    }
+};
+
+MacroExpander.prototype.get = function(ignoreSpace) {
+    this.discardedWhiteSpace = [];
+    var token = this.nextToken();
+    if (ignoreSpace) {
+        while (token.text === " ") {
+            this.discardedWhiteSpace.push(token);
+            token = this.nextToken();
+        }
+    }
+    return token;
+};
+
+/**
+ * Undo the effect of the preceding call to the get method.
+ * A call to this method MUST be immediately preceded and immediately followed
+ * by a call to get.  Only used during mode switching, i.e. after one token
+ * was got in the old mode but should get got again in a new mode
+ * with possibly different whitespace handling.
+ */
+MacroExpander.prototype.unget = function(token) {
+    this.stack.push(token);
+    while (this.discardedWhiteSpace.length !== 0) {
+        this.stack.push(this.discardedWhiteSpace.pop());
+    }
+};
+
+module.exports = MacroExpander;
+
+},{"./Lexer":3}],5:[function(require,module,exports){
+/**
+ * This file contains information about the options that the Parser carries
+ * around with it while parsing. Data is held in an `Options` object, and when
+ * recursing, a new `Options` object can be created with the `.with*` and
+ * `.reset` functions.
+ */
+
+/**
+ * This is the main options class. It contains the style, size, color, and font
+ * of the current parse level. It also contains the style and size of the parent
+ * parse level, so size changes can be handled efficiently.
+ *
+ * Each of the `.with*` and `.reset` functions passes its current style and size
+ * as the parentStyle and parentSize of the new options class, so parent
+ * handling is taken care of automatically.
+ */
+function Options(data) {
+    this.style = data.style;
+    this.color = data.color;
+    this.size = data.size;
+    this.phantom = data.phantom;
+    this.font = data.font;
+
+    if (data.parentStyle === undefined) {
+        this.parentStyle = data.style;
+    } else {
+        this.parentStyle = data.parentStyle;
+    }
+
+    if (data.parentSize === undefined) {
+        this.parentSize = data.size;
+    } else {
+        this.parentSize = data.parentSize;
+    }
+}
+
+/**
+ * Returns a new options object with the same properties as "this".  Properties
+ * from "extension" will be copied to the new options object.
+ */
+Options.prototype.extend = function(extension) {
+    var data = {
+        style: this.style,
+        size: this.size,
+        color: this.color,
+        parentStyle: this.style,
+        parentSize: this.size,
+        phantom: this.phantom,
+        font: this.font
+    };
+
+    for (var key in extension) {
+        if (extension.hasOwnProperty(key)) {
+            data[key] = extension[key];
+        }
+    }
+
+    return new Options(data);
+};
+
+/**
+ * Create a new options object with the given style.
+ */
+Options.prototype.withStyle = function(style) {
+    return this.extend({
+        style: style
+    });
+};
+
+/**
+ * Create a new options object with the given size.
+ */
+Options.prototype.withSize = function(size) {
+    return this.extend({
+        size: size
+    });
+};
+
+/**
+ * Create a new options object with the given color.
+ */
+Options.prototype.withColor = function(color) {
+    return this.extend({
+        color: color
+    });
+};
+
+/**
+ * Create a new options object with "phantom" set to true.
+ */
+Options.prototype.withPhantom = function() {
+    return this.extend({
+        phantom: true
+    });
+};
+
+/**
+ * Create a new options objects with the give font.
+ */
+Options.prototype.withFont = function(font) {
+    return this.extend({
+        font: font || this.font
+    });
+};
+
+/**
+ * Create a new options object with the same style, size, and color. This is
+ * used so that parent style and size changes are handled correctly.
+ */
+Options.prototype.reset = function() {
+    return this.extend({});
+};
+
+/**
+ * A map of color names to CSS colors.
+ * TODO(emily): Remove this when we have real macros
+ */
+var colorMap = {
+    "katex-blue": "#6495ed",
+    "katex-orange": "#ffa500",
+    "katex-pink": "#ff00af",
+    "katex-red": "#df0030",
+    "katex-green": "#28ae7b",
+    "katex-gray": "gray",
+    "katex-purple": "#9d38bd",
+    "katex-blueA": "#ccfaff",
+    "katex-blueB": "#80f6ff",
+    "katex-blueC": "#63d9ea",
+    "katex-blueD": "#11accd",
+    "katex-blueE": "#0c7f99",
+    "katex-tealA": "#94fff5",
+    "katex-tealB": "#26edd5",
+    "katex-tealC": "#01d1c1",
+    "katex-tealD": "#01a995",
+    "katex-tealE": "#208170",
+    "katex-greenA": "#b6ffb0",
+    "katex-greenB": "#8af281",
+    "katex-greenC": "#74cf70",
+    "katex-greenD": "#1fab54",
+    "katex-greenE": "#0d923f",
+    "katex-goldA": "#ffd0a9",
+    "katex-goldB": "#ffbb71",
+    "katex-goldC": "#ff9c39",
+    "katex-goldD": "#e07d10",
+    "katex-goldE": "#a75a05",
+    "katex-redA": "#fca9a9",
+    "katex-redB": "#ff8482",
+    "katex-redC": "#f9685d",
+    "katex-redD": "#e84d39",
+    "katex-redE": "#bc2612",
+    "katex-maroonA": "#ffbde0",
+    "katex-maroonB": "#ff92c6",
+    "katex-maroonC": "#ed5fa6",
+    "katex-maroonD": "#ca337c",
+    "katex-maroonE": "#9e034e",
+    "katex-purpleA": "#ddd7ff",
+    "katex-purpleB": "#c6b9fc",
+    "katex-purpleC": "#aa87ff",
+    "katex-purpleD": "#7854ab",
+    "katex-purpleE": "#543b78",
+    "katex-mintA": "#f5f9e8",
+    "katex-mintB": "#edf2df",
+    "katex-mintC": "#e0e5cc",
+    "katex-grayA": "#f6f7f7",
+    "katex-grayB": "#f0f1f2",
+    "katex-grayC": "#e3e5e6",
+    "katex-grayD": "#d6d8da",
+    "katex-grayE": "#babec2",
+    "katex-grayF": "#888d93",
+    "katex-grayG": "#626569",
+    "katex-grayH": "#3b3e40",
+    "katex-grayI": "#21242c",
+    "katex-kaBlue": "#314453",
+    "katex-kaGreen": "#71B307"
+};
+
+/**
+ * Gets the CSS color of the current options object, accounting for the
+ * `colorMap`.
+ */
+Options.prototype.getColor = function() {
+    if (this.phantom) {
+        return "transparent";
+    } else {
+        return colorMap[this.color] || this.color;
+    }
+};
+
+module.exports = Options;
+
+},{}],6:[function(require,module,exports){
+/**
+ * This is the ParseError class, which is the main error thrown by KaTeX
+ * functions when something has gone wrong. This is used to distinguish internal
+ * errors from errors in the expression that the user provided.
+ *
+ * If possible, a caller should provide a Token or ParseNode with information
+ * about where in the source string the problem occurred.
+ *
+ * @param {string} message  The error message
+ * @param {(Token|ParseNode)=} token  An object providing position information
+ */
+function ParseError(message, token) {
+    var error = "KaTeX parse error: " + message;
+    var start;
+    var end;
+
+    if (token && token.lexer && token.start <= token.end) {
+        // If we have the input and a position, make the error a bit fancier
+
+        // Get the input
+        var input = token.lexer.input;
+
+        // Prepend some information
+        start = token.start;
+        end = token.end;
+        if (start === input.length) {
+            error += " at end of input: ";
+        } else {
+            error += " at position " + (start + 1) + ": ";
+        }
+
+        // Underline token in question using combining underscores
+        var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332");
+
+        // Extract some context from the input and add it to the error
+        var left;
+        if (start > 15) {
+            left = "…" + input.slice(start - 15, start);
+        } else {
+            left = input.slice(0, start);
+        }
+        var right;
+        if (end + 15 < input.length) {
+            right = input.slice(end, end + 15) + "…";
+        } else {
+            right = input.slice(end);
+        }
+        error += left + underlined + right;
+    }
+
+    // Some hackery to make ParseError a prototype of Error
+    // See http://stackoverflow.com/a/8460753
+    var self = new Error(error);
+    self.name = "ParseError";
+    self.__proto__ = ParseError.prototype;
+
+    self.position = start;
+    return self;
+}
+
+// More hackery
+ParseError.prototype.__proto__ = Error.prototype;
+
+module.exports = ParseError;
+
+},{}],7:[function(require,module,exports){
+/* eslint no-constant-condition:0 */
+var functions = require("./functions");
+var environments = require("./environments");
+var MacroExpander = require("./MacroExpander");
+var symbols = require("./symbols");
+var utils = require("./utils");
+var cjkRegex = require("./unicodeRegexes").cjkRegex;
+
+var parseData = require("./parseData");
+var ParseError = require("./ParseError");
+
+/**
+ * This file contains the parser used to parse out a TeX expression from the
+ * input. Since TeX isn't context-free, standard parsers don't work particularly
+ * well.
+ *
+ * The strategy of this parser is as such:
+ *
+ * The main functions (the `.parse...` ones) take a position in the current
+ * parse string to parse tokens from. The lexer (found in Lexer.js, stored at
+ * this.lexer) also supports pulling out tokens at arbitrary places. When
+ * individual tokens are needed at a position, the lexer is called to pull out a
+ * token, which is then used.
+ *
+ * The parser has a property called "mode" indicating the mode that
+ * the parser is currently in. Currently it has to be one of "math" or
+ * "text", which denotes whether the current environment is a math-y
+ * one or a text-y one (e.g. inside \text). Currently, this serves to
+ * limit the functions which can be used in text mode.
+ *
+ * The main functions then return an object which contains the useful data that
+ * was parsed at its given point, and a new position at the end of the parsed
+ * data. The main functions can call each other and continue the parsing by
+ * using the returned position as a new starting point.
+ *
+ * There are also extra `.handle...` functions, which pull out some reused
+ * functionality into self-contained functions.
+ *
+ * The earlier functions return ParseNodes.
+ * The later functions (which are called deeper in the parse) sometimes return
+ * ParseFuncOrArgument, which contain a ParseNode as well as some data about
+ * whether the parsed object is a function which is missing some arguments, or a
+ * standalone object which can be used as an argument to another function.
+ */
+
+/**
+ * Main Parser class
+ */
+function Parser(input, settings) {
+    // Create a new macro expander (gullet) and (indirectly via that) also a
+    // new lexer (mouth) for this parser (stomach, in the language of TeX)
+    this.gullet = new MacroExpander(input, settings.macros);
+    // Store the settings for use in parsing
+    this.settings = settings;
+    // Count leftright depth (for \middle errors)
+    this.leftrightDepth = 0;
+}
+
+var ParseNode = parseData.ParseNode;
+
+/**
+ * An initial function (without its arguments), or an argument to a function.
+ * The `result` argument should be a ParseNode.
+ */
+function ParseFuncOrArgument(result, isFunction, token) {
+    this.result = result;
+    // Is this a function (i.e. is it something defined in functions.js)?
+    this.isFunction = isFunction;
+    this.token = token;
+}
+
+/**
+ * Checks a result to make sure it has the right type, and throws an
+ * appropriate error otherwise.
+ *
+ * @param {boolean=} consume whether to consume the expected token,
+ *                           defaults to true
+ */
+Parser.prototype.expect = function(text, consume) {
+    if (this.nextToken.text !== text) {
+        throw new ParseError(
+            "Expected '" + text + "', got '" + this.nextToken.text + "'",
+            this.nextToken
+        );
+    }
+    if (consume !== false) {
+        this.consume();
+    }
+};
+
+/**
+ * Considers the current look ahead token as consumed,
+ * and fetches the one after that as the new look ahead.
+ */
+Parser.prototype.consume = function() {
+    this.nextToken = this.gullet.get(this.mode === "math");
+};
+
+Parser.prototype.switchMode = function(newMode) {
+    this.gullet.unget(this.nextToken);
+    this.mode = newMode;
+    this.consume();
+};
+
+/**
+ * Main parsing function, which parses an entire input.
+ *
+ * @return {?Array.<ParseNode>}
+ */
+Parser.prototype.parse = function() {
+    // Try to parse the input
+    this.mode = "math";
+    this.consume();
+    var parse = this.parseInput();
+    return parse;
+};
+
+/**
+ * Parses an entire input tree.
+ */
+Parser.prototype.parseInput = function() {
+    // Parse an expression
+    var expression = this.parseExpression(false);
+    // If we succeeded, make sure there's an EOF at the end
+    this.expect("EOF", false);
+    return expression;
+};
+
+var endOfExpression = ["}", "\\end", "\\right", "&", "\\\\", "\\cr"];
+
+/**
+ * Parses an "expression", which is a list of atoms.
+ *
+ * @param {boolean} breakOnInfix  Should the parsing stop when we hit infix
+ *                  nodes? This happens when functions have higher precendence
+ *                  than infix nodes in implicit parses.
+ *
+ * @param {?string} breakOnTokenText  The text of the token that the expression
+ *                  should end with, or `null` if something else should end the
+ *                  expression.
+ *
+ * @return {ParseNode}
+ */
+Parser.prototype.parseExpression = function(breakOnInfix, breakOnTokenText) {
+    var body = [];
+    // Keep adding atoms to the body until we can't parse any more atoms (either
+    // we reached the end, a }, or a \right)
+    while (true) {
+        var lex = this.nextToken;
+        if (endOfExpression.indexOf(lex.text) !== -1) {
+            break;
+        }
+        if (breakOnTokenText && lex.text === breakOnTokenText) {
+            break;
+        }
+        if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) {
+            break;
+        }
+        var atom = this.parseAtom();
+        if (!atom) {
+            if (!this.settings.throwOnError && lex.text[0] === "\\") {
+                var errorNode = this.handleUnsupportedCmd();
+                body.push(errorNode);
+                continue;
+            }
+
+            break;
+        }
+        body.push(atom);
+    }
+    return this.handleInfixNodes(body);
+};
+
+/**
+ * Rewrites infix operators such as \over with corresponding commands such
+ * as \frac.
+ *
+ * There can only be one infix operator per group.  If there's more than one
+ * then the expression is ambiguous.  This can be resolved by adding {}.
+ *
+ * @returns {Array}
+ */
+Parser.prototype.handleInfixNodes = function(body) {
+    var overIndex = -1;
+    var funcName;
+
+    for (var i = 0; i < body.length; i++) {
+        var node = body[i];
+        if (node.type === "infix") {
+            if (overIndex !== -1) {
+                throw new ParseError(
+                    "only one infix operator per group",
+                    node.value.token);
+            }
+            overIndex = i;
+            funcName = node.value.replaceWith;
+        }
+    }
+
+    if (overIndex !== -1) {
+        var numerNode;
+        var denomNode;
+
+        var numerBody = body.slice(0, overIndex);
+        var denomBody = body.slice(overIndex + 1);
+
+        if (numerBody.length === 1 && numerBody[0].type === "ordgroup") {
+            numerNode = numerBody[0];
+        } else {
+            numerNode = new ParseNode("ordgroup", numerBody, this.mode);
+        }
+
+        if (denomBody.length === 1 && denomBody[0].type === "ordgroup") {
+            denomNode = denomBody[0];
+        } else {
+            denomNode = new ParseNode("ordgroup", denomBody, this.mode);
+        }
+
+        var value = this.callFunction(
+            funcName, [numerNode, denomNode], null);
+        return [new ParseNode(value.type, value, this.mode)];
+    } else {
+        return body;
+    }
+};
+
+// The greediness of a superscript or subscript
+var SUPSUB_GREEDINESS = 1;
+
+/**
+ * Handle a subscript or superscript with nice errors.
+ */
+Parser.prototype.handleSupSubscript = function(name) {
+    var symbolToken = this.nextToken;
+    var symbol = symbolToken.text;
+    this.consume();
+    var group = this.parseGroup();
+
+    if (!group) {
+        if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") {
+            return this.handleUnsupportedCmd();
+        } else {
+            throw new ParseError(
+                "Expected group after '" + symbol + "'",
+                symbolToken
+            );
+        }
+    } else if (group.isFunction) {
+        // ^ and _ have a greediness, so handle interactions with functions'
+        // greediness
+        var funcGreediness = functions[group.result].greediness;
+        if (funcGreediness > SUPSUB_GREEDINESS) {
+            return this.parseFunction(group);
+        } else {
+            throw new ParseError(
+                "Got function '" + group.result + "' with no arguments " +
+                    "as " + name, symbolToken);
+        }
+    } else {
+        return group.result;
+    }
+};
+
+/**
+ * Converts the textual input of an unsupported command into a text node
+ * contained within a color node whose color is determined by errorColor
+ */
+Parser.prototype.handleUnsupportedCmd = function() {
+    var text = this.nextToken.text;
+    var textordArray = [];
+
+    for (var i = 0; i < text.length; i++) {
+        textordArray.push(new ParseNode("textord", text[i], "text"));
+    }
+
+    var textNode = new ParseNode(
+        "text",
+        {
+            body: textordArray,
+            type: "text"
+        },
+        this.mode);
+
+    var colorNode = new ParseNode(
+        "color",
+        {
+            color: this.settings.errorColor,
+            value: [textNode],
+            type: "color"
+        },
+        this.mode);
+
+    this.consume();
+    return colorNode;
+};
+
+/**
+ * Parses a group with optional super/subscripts.
+ *
+ * @return {?ParseNode}
+ */
+Parser.prototype.parseAtom = function() {
+    // The body of an atom is an implicit group, so that things like
+    // \left(x\right)^2 work correctly.
+    var base = this.parseImplicitGroup();
+
+    // In text mode, we don't have superscripts or subscripts
+    if (this.mode === "text") {
+        return base;
+    }
+
+    // Note that base may be empty (i.e. null) at this point.
+
+    var superscript;
+    var subscript;
+    while (true) {
+        // Lex the first token
+        var lex = this.nextToken;
+
+        if (lex.text === "\\limits" || lex.text === "\\nolimits") {
+            // We got a limit control
+            if (!base || base.type !== "op") {
+                throw new ParseError(
+                    "Limit controls must follow a math operator",
+                    lex);
+            } else {
+                var limits = lex.text === "\\limits";
+                base.value.limits = limits;
+                base.value.alwaysHandleSupSub = true;
+            }
+            this.consume();
+        } else if (lex.text === "^") {
+            // We got a superscript start
+            if (superscript) {
+                throw new ParseError("Double superscript", lex);
+            }
+            superscript = this.handleSupSubscript("superscript");
+        } else if (lex.text === "_") {
+            // We got a subscript start
+            if (subscript) {
+                throw new ParseError("Double subscript", lex);
+            }
+            subscript = this.handleSupSubscript("subscript");
+        } else if (lex.text === "'") {
+            // We got a prime
+            var prime = new ParseNode("textord", "\\prime", this.mode);
+
+            // Many primes can be grouped together, so we handle this here
+            var primes = [prime];
+            this.consume();
+            // Keep lexing tokens until we get something that's not a prime
+            while (this.nextToken.text === "'") {
+                // For each one, add another prime to the list
+                primes.push(prime);
+                this.consume();
+            }
+            // Put them into an ordgroup as the superscript
+            superscript = new ParseNode("ordgroup", primes, this.mode);
+        } else {
+            // If it wasn't ^, _, or ', stop parsing super/subscripts
+            break;
+        }
+    }
+
+    if (superscript || subscript) {
+        // If we got either a superscript or subscript, create a supsub
+        return new ParseNode("supsub", {
+            base: base,
+            sup: superscript,
+            sub: subscript
+        }, this.mode);
+    } else {
+        // Otherwise return the original body
+        return base;
+    }
+};
+
+// A list of the size-changing functions, for use in parseImplicitGroup
+var sizeFuncs = [
+    "\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize",
+    "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"
+];
+
+// A list of the style-changing functions, for use in parseImplicitGroup
+var styleFuncs = [
+    "\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"
+];
+
+/**
+ * Parses an implicit group, which is a group that starts at the end of a
+ * specified, and ends right before a higher explicit group ends, or at EOL. It
+ * is used for functions that appear to affect the current style, like \Large or
+ * \textrm, where instead of keeping a style we just pretend that there is an
+ * implicit grouping after it until the end of the group. E.g.
+ *   small text {\Large large text} small text again
+ * It is also used for \left and \right to get the correct grouping.
+ *
+ * @return {?ParseNode}
+ */
+Parser.prototype.parseImplicitGroup = function() {
+    var start = this.parseSymbol();
+
+    if (start == null) {
+        // If we didn't get anything we handle, fall back to parseFunction
+        return this.parseFunction();
+    }
+
+    var func = start.result;
+    var body;
+
+    if (func === "\\left") {
+        // If we see a left:
+        // Parse the entire left function (including the delimiter)
+        var left = this.parseFunction(start);
+        // Parse out the implicit body
+        ++this.leftrightDepth;
+        body = this.parseExpression(false);
+        --this.leftrightDepth;
+        // Check the next token
+        this.expect("\\right", false);
+        var right = this.parseFunction();
+        return new ParseNode("leftright", {
+            body: body,
+            left: left.value.value,
+            right: right.value.value
+        }, this.mode);
+    } else if (func === "\\begin") {
+        // begin...end is similar to left...right
+        var begin = this.parseFunction(start);
+        var envName = begin.value.name;
+        if (!environments.hasOwnProperty(envName)) {
+            throw new ParseError(
+                "No such environment: " + envName, begin.value.nameGroup);
+        }
+        // Build the environment object. Arguments and other information will
+        // be made available to the begin and end methods using properties.
+        var env = environments[envName];
+        var args = this.parseArguments("\\begin{" + envName + "}", env);
+        var context = {
+            mode: this.mode,
+            envName: envName,
+            parser: this,
+            positions: args.pop()
+        };
+        var result = env.handler(context, args);
+        this.expect("\\end", false);
+        var endNameToken = this.nextToken;
+        var end = this.parseFunction();
+        if (end.value.name !== envName) {
+            throw new ParseError(
+                "Mismatch: \\begin{" + envName + "} matched " +
+                "by \\end{" + end.value.name + "}",
+                endNameToken);
+        }
+        result.position = end.position;
+        return result;
+    } else if (utils.contains(sizeFuncs, func)) {
+        // If we see a sizing function, parse out the implict body
+        body = this.parseExpression(false);
+        return new ParseNode("sizing", {
+            // Figure out what size to use based on the list of functions above
+            size: "size" + (utils.indexOf(sizeFuncs, func) + 1),
+            value: body
+        }, this.mode);
+    } else if (utils.contains(styleFuncs, func)) {
+        // If we see a styling function, parse out the implict body
+        body = this.parseExpression(true);
+        return new ParseNode("styling", {
+            // Figure out what style to use by pulling out the style from
+            // the function name
+            style: func.slice(1, func.length - 5),
+            value: body
+        }, this.mode);
+    } else {
+        // Defer to parseFunction if it's not a function we handle
+        return this.parseFunction(start);
+    }
+};
+
+/**
+ * Parses an entire function, including its base and all of its arguments.
+ * The base might either have been parsed already, in which case
+ * it is provided as an argument, or it's the next group in the input.
+ *
+ * @param {ParseFuncOrArgument=} baseGroup optional as described above
+ * @return {?ParseNode}
+ */
+Parser.prototype.parseFunction = function(baseGroup) {
+    if (!baseGroup) {
+        baseGroup = this.parseGroup();
+    }
+
+    if (baseGroup) {
+        if (baseGroup.isFunction) {
+            var func = baseGroup.result;
+            var funcData = functions[func];
+            if (this.mode === "text" && !funcData.allowedInText) {
+                throw new ParseError(
+                    "Can't use function '" + func + "' in text mode",
+                    baseGroup.token);
+            }
+
+            var args = this.parseArguments(func, funcData);
+            var token = baseGroup.token;
+            var result = this.callFunction(func, args, args.pop(), token);
+            return new ParseNode(result.type, result, this.mode);
+        } else {
+            return baseGroup.result;
+        }
+    } else {
+        return null;
+    }
+};
+
+/**
+ * Call a function handler with a suitable context and arguments.
+ */
+Parser.prototype.callFunction = function(name, args, positions, token) {
+    var context = {
+        funcName: name,
+        parser: this,
+        positions: positions,
+        token: token
+    };
+    return functions[name].handler(context, args);
+};
+
+/**
+ * Parses the arguments of a function or environment
+ *
+ * @param {string} func  "\name" or "\begin{name}"
+ * @param {{numArgs:number,numOptionalArgs:number|undefined}} funcData
+ * @return the array of arguments, with the list of positions as last element
+ */
+Parser.prototype.parseArguments = function(func, funcData) {
+    var totalArgs = funcData.numArgs + funcData.numOptionalArgs;
+    if (totalArgs === 0) {
+        return [[this.pos]];
+    }
+
+    var baseGreediness = funcData.greediness;
+    var positions = [this.pos];
+    var args = [];
+
+    for (var i = 0; i < totalArgs; i++) {
+        var nextToken = this.nextToken;
+        var argType = funcData.argTypes && funcData.argTypes[i];
+        var arg;
+        if (i < funcData.numOptionalArgs) {
+            if (argType) {
+                arg = this.parseGroupOfType(argType, true);
+            } else {
+                arg = this.parseGroup(true);
+            }
+            if (!arg) {
+                args.push(null);
+                positions.push(this.pos);
+                continue;
+            }
+        } else {
+            if (argType) {
+                arg = this.parseGroupOfType(argType);
+            } else {
+                arg = this.parseGroup();
+            }
+            if (!arg) {
+                if (!this.settings.throwOnError &&
+                    this.nextToken.text[0] === "\\") {
+                    arg = new ParseFuncOrArgument(
+                        this.handleUnsupportedCmd(this.nextToken.text),
+                        false);
+                } else {
+                    throw new ParseError(
+                        "Expected group after '" + func + "'", nextToken);
+                }
+            }
+        }
+        var argNode;
+        if (arg.isFunction) {
+            var argGreediness =
+                functions[arg.result].greediness;
+            if (argGreediness > baseGreediness) {
+                argNode = this.parseFunction(arg);
+            } else {
+                throw new ParseError(
+                    "Got function '" + arg.result + "' as " +
+                    "argument to '" + func + "'", nextToken);
+            }
+        } else {
+            argNode = arg.result;
+        }
+        args.push(argNode);
+        positions.push(this.pos);
+    }
+
+    args.push(positions);
+
+    return args;
+};
+
+
+/**
+ * Parses a group when the mode is changing.
+ *
+ * @return {?ParseFuncOrArgument}
+ */
+Parser.prototype.parseGroupOfType = function(innerMode, optional) {
+    var outerMode = this.mode;
+    // Handle `original` argTypes
+    if (innerMode === "original") {
+        innerMode = outerMode;
+    }
+
+    if (innerMode === "color") {
+        return this.parseColorGroup(optional);
+    }
+    if (innerMode === "size") {
+        return this.parseSizeGroup(optional);
+    }
+
+    this.switchMode(innerMode);
+    if (innerMode === "text") {
+        // text mode is special because it should ignore the whitespace before
+        // it
+        while (this.nextToken.text === " ") {
+            this.consume();
+        }
+    }
+    // By the time we get here, innerMode is one of "text" or "math".
+    // We switch the mode of the parser, recurse, then restore the old mode.
+    var res = this.parseGroup(optional);
+    this.switchMode(outerMode);
+    return res;
+};
+
+/**
+ * Parses a group, essentially returning the string formed by the
+ * brace-enclosed tokens plus some position information.
+ *
+ * @param {string} modeName  Used to describe the mode in error messages
+ * @param {boolean=} optional  Whether the group is optional or required
+ */
+Parser.prototype.parseStringGroup = function(modeName, optional) {
+    if (optional && this.nextToken.text !== "[") {
+        return null;
+    }
+    var outerMode = this.mode;
+    this.mode = "text";
+    this.expect(optional ? "[" : "{");
+    var str = "";
+    var firstToken = this.nextToken;
+    var lastToken = firstToken;
+    while (this.nextToken.text !== (optional ? "]" : "}")) {
+        if (this.nextToken.text === "EOF") {
+            throw new ParseError(
+                "Unexpected end of input in " + modeName,
+                firstToken.range(this.nextToken, str));
+        }
+        lastToken = this.nextToken;
+        str += lastToken.text;
+        this.consume();
+    }
+    this.mode = outerMode;
+    this.expect(optional ? "]" : "}");
+    return firstToken.range(lastToken, str);
+};
+
+/**
+ * Parses a regex-delimited group: the largest sequence of tokens
+ * whose concatenated strings match `regex`. Returns the string
+ * formed by the tokens plus some position information.
+ *
+ * @param {RegExp} regex
+ * @param {string} modeName  Used to describe the mode in error messages
+ */
+Parser.prototype.parseRegexGroup = function(regex, modeName) {
+    var outerMode = this.mode;
+    this.mode = "text";
+    var firstToken = this.nextToken;
+    var lastToken = firstToken;
+    var str = "";
+    while (this.nextToken.text !== "EOF"
+           && regex.test(str + this.nextToken.text)) {
+        lastToken = this.nextToken;
+        str += lastToken.text;
+        this.consume();
+    }
+    if (str === "") {
+        throw new ParseError(
+            "Invalid " + modeName + ": '" + firstToken.text + "'",
+            firstToken);
+    }
+    this.mode = outerMode;
+    return firstToken.range(lastToken, str);
+};
+
+/**
+ * Parses a color description.
+ */
+Parser.prototype.parseColorGroup = function(optional) {
+    var res = this.parseStringGroup("color", optional);
+    if (!res) {
+        return null;
+    }
+    var match = (/^(#[a-z0-9]+|[a-z]+)$/i).exec(res.text);
+    if (!match) {
+        throw new ParseError("Invalid color: '" + res.text + "'", res);
+    }
+    return new ParseFuncOrArgument(
+        new ParseNode("color", match[0], this.mode),
+        false);
+};
+
+/**
+ * Parses a size specification, consisting of magnitude and unit.
+ */
+Parser.prototype.parseSizeGroup = function(optional) {
+    var res;
+    if (!optional && this.nextToken.text !== "{") {
+        res = this.parseRegexGroup(
+            /^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2}$/, "size");
+    } else {
+        res = this.parseStringGroup("size", optional);
+    }
+    if (!res) {
+        return null;
+    }
+    var match = (/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/).exec(res.text);
+    if (!match) {
+        throw new ParseError("Invalid size: '" + res.text + "'", res);
+    }
+    var data = {
+        number: +(match[1] + match[2]), // sign + magnitude, cast to number
+        unit: match[3]
+    };
+    if (data.unit !== "em" && data.unit !== "ex" && data.unit !== "mu") {
+        throw new ParseError("Invalid unit: '" + data.unit + "'", res);
+    }
+    return new ParseFuncOrArgument(
+        new ParseNode("color", data, this.mode),
+        false);
+};
+
+/**
+ * If the argument is false or absent, this parses an ordinary group,
+ * which is either a single nucleus (like "x") or an expression
+ * in braces (like "{x+y}").
+ * If the argument is true, it parses either a bracket-delimited expression
+ * (like "[x+y]") or returns null to indicate the absence of a
+ * bracket-enclosed group.
+ *
+ * @param {boolean=} optional  Whether the group is optional or required
+ * @return {?ParseFuncOrArgument}
+ */
+Parser.prototype.parseGroup = function(optional) {
+    var firstToken = this.nextToken;
+    // Try to parse an open brace
+    if (this.nextToken.text === (optional ? "[" : "{")) {
+        // If we get a brace, parse an expression
+        this.consume();
+        var expression = this.parseExpression(false, optional ? "]" : null);
+        var lastToken = this.nextToken;
+        // Make sure we get a close brace
+        this.expect(optional ? "]" : "}");
+        if (this.mode === "text") {
+            this.formLigatures(expression);
+        }
+        return new ParseFuncOrArgument(
+            new ParseNode("ordgroup", expression, this.mode,
+                          firstToken, lastToken),
+            false);
+    } else {
+        // Otherwise, just return a nucleus, or nothing for an optional group
+        return optional ? null : this.parseSymbol();
+    }
+};
+
+/**
+ * Form ligature-like combinations of characters for text mode.
+ * This includes inputs like "--", "---", "``" and "''".
+ * The result will simply replace multiple textord nodes with a single
+ * character in each value by a single textord node having multiple
+ * characters in its value.  The representation is still ASCII source.
+ *
+ * @param {Array.<ParseNode>} group  the nodes of this group,
+ *                                   list will be moified in place
+ */
+Parser.prototype.formLigatures = function(group) {
+    var i;
+    var n = group.length - 1;
+    for (i = 0; i < n; ++i) {
+        var a = group[i];
+        var v = a.value;
+        if (v === "-" && group[i + 1].value === "-") {
+            if (i + 1 < n && group[i + 2].value === "-") {
+                group.splice(i, 3, new ParseNode(
+                    "textord", "---", "text", a, group[i + 2]));
+                n -= 2;
+            } else {
+                group.splice(i, 2, new ParseNode(
+                    "textord", "--", "text", a, group[i + 1]));
+                n -= 1;
+            }
+        }
+        if ((v === "'" || v === "`") && group[i + 1].value === v) {
+            group.splice(i, 2, new ParseNode(
+                "textord", v + v, "text", a, group[i + 1]));
+            n -= 1;
+        }
+    }
+};
+
+/**
+ * Parse a single symbol out of the string. Here, we handle both the functions
+ * we have defined, as well as the single character symbols
+ *
+ * @return {?ParseFuncOrArgument}
+ */
+Parser.prototype.parseSymbol = function() {
+    var nucleus = this.nextToken;
+
+    if (functions[nucleus.text]) {
+        this.consume();
+        // If there exists a function with this name, we return the function and
+        // say that it is a function.
+        return new ParseFuncOrArgument(
+            nucleus.text,
+            true, nucleus);
+    } else if (symbols[this.mode][nucleus.text]) {
+        this.consume();
+        // Otherwise if this is a no-argument function, find the type it
+        // corresponds to in the symbols map
+        return new ParseFuncOrArgument(
+            new ParseNode(symbols[this.mode][nucleus.text].group,
+                          nucleus.text, this.mode, nucleus),
+            false, nucleus);
+    } else if (this.mode === "text" && cjkRegex.test(nucleus.text)) {
+        this.consume();
+        return new ParseFuncOrArgument(
+            new ParseNode("textord", nucleus.text, this.mode, nucleus),
+            false, nucleus);
+    } else {
+        return null;
+    }
+};
+
+Parser.prototype.ParseNode = ParseNode;
+
+module.exports = Parser;
+
+},{"./MacroExpander":4,"./ParseError":6,"./environments":16,"./functions":19,"./parseData":21,"./symbols":23,"./unicodeRegexes":24,"./utils":25}],8:[function(require,module,exports){
+/**
+ * This is a module for storing settings passed into KaTeX. It correctly handles
+ * default settings.
+ */
+
+/**
+ * Helper function for getting a default value if the value is undefined
+ */
+function get(option, defaultValue) {
+    return option === undefined ? defaultValue : option;
+}
+
+/**
+ * The main Settings object
+ *
+ * The current options stored are:
+ *  - displayMode: Whether the expression should be typeset by default in
+ *                 textstyle or displaystyle (default false)
+ */
+function Settings(options) {
+    // allow null options
+    options = options || {};
+    this.displayMode = get(options.displayMode, false);
+    this.throwOnError = get(options.throwOnError, true);
+    this.errorColor = get(options.errorColor, "#cc0000");
+    this.macros = options.macros || {};
+}
+
+module.exports = Settings;
+
+},{}],9:[function(require,module,exports){
+/**
+ * This file contains information and classes for the various kinds of styles
+ * used in TeX. It provides a generic `Style` class, which holds information
+ * about a specific style. It then provides instances of all the different kinds
+ * of styles possible, and provides functions to move between them and get
+ * information about them.
+ */
+
+var sigmas = require("./fontMetrics.js").sigmas;
+
+var metrics = [{}, {}, {}];
+var i;
+for (var key in sigmas) {
+    if (sigmas.hasOwnProperty(key)) {
+        for (i = 0; i < 3; i++) {
+            metrics[i][key] = sigmas[key][i];
+        }
+    }
+}
+for (i = 0; i < 3; i++) {
+    metrics[i].emPerEx = sigmas.xHeight[i] / sigmas.quad[i];
+}
+
+/**
+ * The main style class. Contains a unique id for the style, a size (which is
+ * the same for cramped and uncramped version of a style), a cramped flag, and a
+ * size multiplier, which gives the size difference between a style and
+ * textstyle.
+ */
+function Style(id, size, multiplier, cramped) {
+    this.id = id;
+    this.size = size;
+    this.cramped = cramped;
+    this.sizeMultiplier = multiplier;
+    this.metrics = metrics[size > 0 ? size - 1 : 0];
+}
+
+/**
+ * Get the style of a superscript given a base in the current style.
+ */
+Style.prototype.sup = function() {
+    return styles[sup[this.id]];
+};
+
+/**
+ * Get the style of a subscript given a base in the current style.
+ */
+Style.prototype.sub = function() {
+    return styles[sub[this.id]];
+};
+
+/**
+ * Get the style of a fraction numerator given the fraction in the current
+ * style.
+ */
+Style.prototype.fracNum = function() {
+    return styles[fracNum[this.id]];
+};
+
+/**
+ * Get the style of a fraction denominator given the fraction in the current
+ * style.
+ */
+Style.prototype.fracDen = function() {
+    return styles[fracDen[this.id]];
+};
+
+/**
+ * Get the cramped version of a style (in particular, cramping a cramped style
+ * doesn't change the style).
+ */
+Style.prototype.cramp = function() {
+    return styles[cramp[this.id]];
+};
+
+/**
+ * HTML class name, like "displaystyle cramped"
+ */
+Style.prototype.cls = function() {
+    return sizeNames[this.size] + (this.cramped ? " cramped" : " uncramped");
+};
+
+/**
+ * HTML Reset class name, like "reset-textstyle"
+ */
+Style.prototype.reset = function() {
+    return resetNames[this.size];
+};
+
+/**
+ * Return if this style is tightly spaced (scriptstyle/scriptscriptstyle)
+ */
+Style.prototype.isTight = function() {
+    return this.size >= 2;
+};
+
+// IDs of the different styles
+var D = 0;
+var Dc = 1;
+var T = 2;
+var Tc = 3;
+var S = 4;
+var Sc = 5;
+var SS = 6;
+var SSc = 7;
+
+// String names for the different sizes
+var sizeNames = [
+    "displaystyle textstyle",
+    "textstyle",
+    "scriptstyle",
+    "scriptscriptstyle"
+];
+
+// Reset names for the different sizes
+var resetNames = [
+    "reset-textstyle",
+    "reset-textstyle",
+    "reset-scriptstyle",
+    "reset-scriptscriptstyle"
+];
+
+// Instances of the different styles
+var styles = [
+    new Style(D, 0, 1.0, false),
+    new Style(Dc, 0, 1.0, true),
+    new Style(T, 1, 1.0, false),
+    new Style(Tc, 1, 1.0, true),
+    new Style(S, 2, 0.7, false),
+    new Style(Sc, 2, 0.7, true),
+    new Style(SS, 3, 0.5, false),
+    new Style(SSc, 3, 0.5, true)
+];
+
+// Lookup tables for switching from one style to another
+var sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];
+var sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];
+var fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];
+var fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];
+var cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];
+
+// We only export some of the styles. Also, we don't export the `Style` class so
+// no more styles can be generated.
+module.exports = {
+    DISPLAY: styles[D],
+    TEXT: styles[T],
+    SCRIPT: styles[S],
+    SCRIPTSCRIPT: styles[SS]
+};
+
+},{"./fontMetrics.js":17}],10:[function(require,module,exports){
+/* eslint no-console:0 */
+/**
+ * This module contains general functions that can be used for building
+ * different kinds of domTree nodes in a consistent manner.
+ */
+
+var domTree = require("./domTree");
+var fontMetrics = require("./fontMetrics");
+var symbols = require("./symbols");
+var utils = require("./utils");
+
+var greekCapitals = [
+    "\\Gamma",
+    "\\Delta",
+    "\\Theta",
+    "\\Lambda",
+    "\\Xi",
+    "\\Pi",
+    "\\Sigma",
+    "\\Upsilon",
+    "\\Phi",
+    "\\Psi",
+    "\\Omega"
+];
+
+// The following have to be loaded from Main-Italic font, using class mainit
+var mainitLetters = [
+    "\u0131",   // dotless i, \imath
+    "\u0237",   // dotless j, \jmath
+    "\u00a3"   // \pounds
+];
+
+/**
+ * Makes a symbolNode after translation via the list of symbols in symbols.js.
+ * Correctly pulls out metrics for the character, and optionally takes a list of
+ * classes to be attached to the node.
+ *
+ * TODO: make argument order closer to makeSpan
+ * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which
+ * should if present come first in `classes`.
+ */
+var makeSymbol = function(value, fontFamily, mode, options, classes) {
+    // Replace the value with its replaced value from symbol.js
+    if (symbols[mode][value] && symbols[mode][value].replace) {
+        value = symbols[mode][value].replace;
+    }
+
+    var metrics = fontMetrics.getCharacterMetrics(value, fontFamily);
+
+    var symbolNode;
+    if (metrics) {
+        var italic = metrics.italic;
+        if (mode === "text") {
+            italic = 0;
+        }
+        symbolNode = new domTree.symbolNode(
+            value, metrics.height, metrics.depth, italic, metrics.skew,
+            classes);
+    } else {
+        // TODO(emily): Figure out a good way to only print this in development
+        typeof console !== "undefined" && console.warn(
+            "No character metrics for '" + value + "' in style '" +
+                fontFamily + "'");
+        symbolNode = new domTree.symbolNode(value, 0, 0, 0, 0, classes);
+    }
+
+    if (options) {
+        if (options.style.isTight()) {
+            symbolNode.classes.push("mtight");
+        }
+        if (options.getColor()) {
+            symbolNode.style.color = options.getColor();
+        }
+    }
+
+    return symbolNode;
+};
+
+/**
+ * Makes a symbol in Main-Regular or AMS-Regular.
+ * Used for rel, bin, open, close, inner, and punct.
+ */
+var mathsym = function(value, mode, options, classes) {
+    // Decide what font to render the symbol in by its entry in the symbols
+    // table.
+    // Have a special case for when the value = \ because the \ is used as a
+    // textord in unsupported command errors but cannot be parsed as a regular
+    // text ordinal and is therefore not present as a symbol in the symbols
+    // table for text
+    if (value === "\\" || symbols[mode][value].font === "main") {
+        return makeSymbol(value, "Main-Regular", mode, options, classes);
+    } else {
+        return makeSymbol(
+            value, "AMS-Regular", mode, options, classes.concat(["amsrm"]));
+    }
+};
+
+/**
+ * Makes a symbol in the default font for mathords and textords.
+ */
+var mathDefault = function(value, mode, options, classes, type) {
+    if (type === "mathord") {
+        return mathit(value, mode, options, classes);
+    } else if (type === "textord") {
+        return makeSymbol(
+            value, "Main-Regular", mode, options, classes.concat(["mathrm"]));
+    } else {
+        throw new Error("unexpected type: " + type + " in mathDefault");
+    }
+};
+
+/**
+ * Makes a symbol in the italic math font.
+ */
+var mathit = function(value, mode, options, classes) {
+    if (/[0-9]/.test(value.charAt(0)) ||
+            // glyphs for \imath and \jmath do not exist in Math-Italic so we
+            // need to use Main-Italic instead
+            utils.contains(mainitLetters, value) ||
+            utils.contains(greekCapitals, value)) {
+        return makeSymbol(
+            value, "Main-Italic", mode, options, classes.concat(["mainit"]));
+    } else {
+        return makeSymbol(
+            value, "Math-Italic", mode, options, classes.concat(["mathit"]));
+    }
+};
+
+/**
+ * Makes either a mathord or textord in the correct font and color.
+ */
+var makeOrd = function(group, options, type) {
+    var mode = group.mode;
+    var value = group.value;
+    if (symbols[mode][value] && symbols[mode][value].replace) {
+        value = symbols[mode][value].replace;
+    }
+
+    var classes = ["mord"];
+
+    var font = options.font;
+    if (font) {
+        if (font === "mathit" || utils.contains(mainitLetters, value)) {
+            return mathit(value, mode, options, classes);
+        } else {
+            var fontName = fontMap[font].fontName;
+            if (fontMetrics.getCharacterMetrics(value, fontName)) {
+                return makeSymbol(
+                    value, fontName, mode, options, classes.concat([font]));
+            } else {
+                return mathDefault(value, mode, options, classes, type);
+            }
+        }
+    } else {
+        return mathDefault(value, mode, options, classes, type);
+    }
+};
+
+/**
+ * Calculate the height, depth, and maxFontSize of an element based on its
+ * children.
+ */
+var sizeElementFromChildren = function(elem) {
+    var height = 0;
+    var depth = 0;
+    var maxFontSize = 0;
+
+    if (elem.children) {
+        for (var i = 0; i < elem.children.length; i++) {
+            if (elem.children[i].height > height) {
+                height = elem.children[i].height;
+            }
+            if (elem.children[i].depth > depth) {
+                depth = elem.children[i].depth;
+            }
+            if (elem.children[i].maxFontSize > maxFontSize) {
+                maxFontSize = elem.children[i].maxFontSize;
+            }
+        }
+    }
+
+    elem.height = height;
+    elem.depth = depth;
+    elem.maxFontSize = maxFontSize;
+};
+
+/**
+ * Makes a span with the given list of classes, list of children, and options.
+ *
+ * TODO: Ensure that `options` is always provided (currently some call sites
+ * don't pass it).
+ * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which
+ * should if present come first in `classes`.
+ */
+var makeSpan = function(classes, children, options) {
+    var span = new domTree.span(classes, children, options);
+
+    sizeElementFromChildren(span);
+
+    return span;
+};
+
+/**
+ * Prepends the given children to the given span, updating height, depth, and
+ * maxFontSize.
+ */
+var prependChildren = function(span, children) {
+    span.children = children.concat(span.children);
+
+    sizeElementFromChildren(span);
+};
+
+/**
+ * Makes a document fragment with the given list of children.
+ */
+var makeFragment = function(children) {
+    var fragment = new domTree.documentFragment(children);
+
+    sizeElementFromChildren(fragment);
+
+    return fragment;
+};
+
+/**
+ * Makes an element placed in each of the vlist elements to ensure that each
+ * element has the same max font size. To do this, we create a zero-width space
+ * with the correct font size.
+ */
+var makeFontSizer = function(options, fontSize) {
+    var fontSizeInner = makeSpan([], [new domTree.symbolNode("\u200b")]);
+    fontSizeInner.style.fontSize =
+        (fontSize / options.style.sizeMultiplier) + "em";
+
+    var fontSizer = makeSpan(
+        ["fontsize-ensurer", "reset-" + options.size, "size5"],
+        [fontSizeInner]);
+
+    return fontSizer;
+};
+
+/**
+ * Makes a vertical list by stacking elements and kerns on top of each other.
+ * Allows for many different ways of specifying the positioning method.
+ *
+ * Arguments:
+ *  - children: A list of child or kern nodes to be stacked on top of each other
+ *              (i.e. the first element will be at the bottom, and the last at
+ *              the top). Element nodes are specified as
+ *                {type: "elem", elem: node}
+ *              while kern nodes are specified as
+ *                {type: "kern", size: size}
+ *  - positionType: The method by which the vlist should be positioned. Valid
+ *                  values are:
+ *                   - "individualShift": The children list only contains elem
+ *                                        nodes, and each node contains an extra
+ *                                        "shift" value of how much it should be
+ *                                        shifted (note that shifting is always
+ *                                        moving downwards). positionData is
+ *                                        ignored.
+ *                   - "top": The positionData specifies the topmost point of
+ *                            the vlist (note this is expected to be a height,
+ *                            so positive values move up)
+ *                   - "bottom": The positionData specifies the bottommost point
+ *                               of the vlist (note this is expected to be a
+ *                               depth, so positive values move down
+ *                   - "shift": The vlist will be positioned such that its
+ *                              baseline is positionData away from the baseline
+ *                              of the first child. Positive values move
+ *                              downwards.
+ *                   - "firstBaseline": The vlist will be positioned such that
+ *                                      its baseline is aligned with the
+ *                                      baseline of the first child.
+ *                                      positionData is ignored. (this is
+ *                                      equivalent to "shift" with
+ *                                      positionData=0)
+ *  - positionData: Data used in different ways depending on positionType
+ *  - options: An Options object
+ *
+ */
+var makeVList = function(children, positionType, positionData, options) {
+    var depth;
+    var currPos;
+    var i;
+    if (positionType === "individualShift") {
+        var oldChildren = children;
+        children = [oldChildren[0]];
+
+        // Add in kerns to the list of children to get each element to be
+        // shifted to the correct specified shift
+        depth = -oldChildren[0].shift - oldChildren[0].elem.depth;
+        currPos = depth;
+        for (i = 1; i < oldChildren.length; i++) {
+            var diff = -oldChildren[i].shift - currPos -
+                oldChildren[i].elem.depth;
+            var size = diff -
+                (oldChildren[i - 1].elem.height +
+                 oldChildren[i - 1].elem.depth);
+
+            currPos = currPos + diff;
+
+            children.push({type: "kern", size: size});
+            children.push(oldChildren[i]);
+        }
+    } else if (positionType === "top") {
+        // We always start at the bottom, so calculate the bottom by adding up
+        // all the sizes
+        var bottom = positionData;
+        for (i = 0; i < children.length; i++) {
+            if (children[i].type === "kern") {
+                bottom -= children[i].size;
+            } else {
+                bottom -= children[i].elem.height + children[i].elem.depth;
+            }
+        }
+        depth = bottom;
+    } else if (positionType === "bottom") {
+        depth = -positionData;
+    } else if (positionType === "shift") {
+        depth = -children[0].elem.depth - positionData;
+    } else if (positionType === "firstBaseline") {
+        depth = -children[0].elem.depth;
+    } else {
+        depth = 0;
+    }
+
+    // Make the fontSizer
+    var maxFontSize = 0;
+    for (i = 0; i < children.length; i++) {
+        if (children[i].type === "elem") {
+            maxFontSize = Math.max(maxFontSize, children[i].elem.maxFontSize);
+        }
+    }
+    var fontSizer = makeFontSizer(options, maxFontSize);
+
+    // Create a new list of actual children at the correct offsets
+    var realChildren = [];
+    currPos = depth;
+    for (i = 0; i < children.length; i++) {
+        if (children[i].type === "kern") {
+            currPos += children[i].size;
+        } else {
+            var child = children[i].elem;
+
+            var shift = -child.depth - currPos;
+            currPos += child.height + child.depth;
+
+            var childWrap = makeSpan([], [fontSizer, child]);
+            childWrap.height -= shift;
+            childWrap.depth += shift;
+            childWrap.style.top = shift + "em";
+
+            realChildren.push(childWrap);
+        }
+    }
+
+    // Add in an element at the end with no offset to fix the calculation of
+    // baselines in some browsers (namely IE, sometimes safari)
+    var baselineFix = makeSpan(
+        ["baseline-fix"], [fontSizer, new domTree.symbolNode("\u200b")]);
+    realChildren.push(baselineFix);
+
+    var vlist = makeSpan(["vlist"], realChildren);
+    // Fix the final height and depth, in case there were kerns at the ends
+    // since the makeSpan calculation won't take that in to account.
+    vlist.height = Math.max(currPos, vlist.height);
+    vlist.depth = Math.max(-depth, vlist.depth);
+    return vlist;
+};
+
+// A table of size -> font size for the different sizing functions
+var sizingMultiplier = {
+    size1: 0.5,
+    size2: 0.7,
+    size3: 0.8,
+    size4: 0.9,
+    size5: 1.0,
+    size6: 1.2,
+    size7: 1.44,
+    size8: 1.73,
+    size9: 2.07,
+    size10: 2.49
+};
+
+// A map of spacing functions to their attributes, like size and corresponding
+// CSS class
+var spacingFunctions = {
+    "\\qquad": {
+        size: "2em",
+        className: "qquad"
+    },
+    "\\quad": {
+        size: "1em",
+        className: "quad"
+    },
+    "\\enspace": {
+        size: "0.5em",
+        className: "enspace"
+    },
+    "\\;": {
+        size: "0.277778em",
+        className: "thickspace"
+    },
+    "\\:": {
+        size: "0.22222em",
+        className: "mediumspace"
+    },
+    "\\,": {
+        size: "0.16667em",
+        className: "thinspace"
+    },
+    "\\!": {
+        size: "-0.16667em",
+        className: "negativethinspace"
+    }
+};
+
+/**
+ * Maps TeX font commands to objects containing:
+ * - variant: string used for "mathvariant" attribute in buildMathML.js
+ * - fontName: the "style" parameter to fontMetrics.getCharacterMetrics
+ */
+// A map between tex font commands an MathML mathvariant attribute values
+var fontMap = {
+    // styles
+    "mathbf": {
+        variant: "bold",
+        fontName: "Main-Bold"
+    },
+    "mathrm": {
+        variant: "normal",
+        fontName: "Main-Regular"
+    },
+    "textit": {
+        variant: "italic",
+        fontName: "Main-Italic"
+    },
+
+    // "mathit" is missing because it requires the use of two fonts: Main-Italic
+    // and Math-Italic.  This is handled by a special case in makeOrd which ends
+    // up calling mathit.
+
+    // families
+    "mathbb": {
+        variant: "double-struck",
+        fontName: "AMS-Regular"
+    },
+    "mathcal": {
+        variant: "script",
+        fontName: "Caligraphic-Regular"
+    },
+    "mathfrak": {
+        variant: "fraktur",
+        fontName: "Fraktur-Regular"
+    },
+    "mathscr": {
+        variant: "script",
+        fontName: "Script-Regular"
+    },
+    "mathsf": {
+        variant: "sans-serif",
+        fontName: "SansSerif-Regular"
+    },
+    "mathtt": {
+        variant: "monospace",
+        fontName: "Typewriter-Regular"
+    }
+};
+
+module.exports = {
+    fontMap: fontMap,
+    makeSymbol: makeSymbol,
+    mathsym: mathsym,
+    makeSpan: makeSpan,
+    makeFragment: makeFragment,
+    makeVList: makeVList,
+    makeOrd: makeOrd,
+    prependChildren: prependChildren,
+    sizingMultiplier: sizingMultiplier,
+    spacingFunctions: spacingFunctions
+};
+
+},{"./domTree":15,"./fontMetrics":17,"./symbols":23,"./utils":25}],11:[function(require,module,exports){
+/* eslint no-console:0 */
+/**
+ * This file does the main work of building a domTree structure from a parse
+ * tree. The entry point is the `buildHTML` function, which takes a parse tree.
+ * Then, the buildExpression, buildGroup, and various groupTypes functions are
+ * called, to produce a final HTML tree.
+ */
+
+var ParseError = require("./ParseError");
+var Style = require("./Style");
+
+var buildCommon = require("./buildCommon");
+var delimiter = require("./delimiter");
+var domTree = require("./domTree");
+var fontMetrics = require("./fontMetrics");
+var utils = require("./utils");
+
+var makeSpan = buildCommon.makeSpan;
+
+var isSpace = function(node) {
+    return node instanceof domTree.span && node.classes[0] === "mspace";
+};
+
+// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)
+// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,
+// and the text before Rule 19.
+
+var isBin = function(node) {
+    return node && node.classes[0] === "mbin";
+};
+
+var isBinLeftCanceller = function(node, isRealGroup) {
+    // TODO: This code assumes that a node's math class is the first element
+    // of its `classes` array. A later cleanup should ensure this, for
+    // instance by changing the signature of `makeSpan`.
+    if (node) {
+        return utils.contains(["mbin", "mopen", "mrel", "mop", "mpunct"],
+                              node.classes[0]);
+    } else {
+        return isRealGroup;
+    }
+};
+
+var isBinRightCanceller = function(node, isRealGroup) {
+    if (node) {
+        return utils.contains(["mrel", "mclose", "mpunct"], node.classes[0]);
+    } else {
+        return isRealGroup;
+    }
+};
+
+/**
+ * Take a list of nodes, build them in order, and return a list of the built
+ * nodes. documentFragments are flattened into their contents, so the
+ * returned list contains no fragments. `isRealGroup` is true if `expression`
+ * is a real group (no atoms will be added on either side), as opposed to
+ * a partial group (e.g. one created by \color).
+ */
+var buildExpression = function(expression, options, isRealGroup) {
+    // Parse expressions into `groups`.
+    var groups = [];
+    for (var i = 0; i < expression.length; i++) {
+        var group = expression[i];
+        var output = buildGroup(group, options);
+        if (output instanceof domTree.documentFragment) {
+            Array.prototype.push.apply(groups, output.children);
+        } else {
+            groups.push(output);
+        }
+    }
+    // At this point `groups` consists entirely of `symbolNode`s and `span`s.
+
+    // Explicit spaces (e.g., \;, \,) should be ignored with respect to atom
+    // spacing (e.g., "add thick space between mord and mrel"). Since CSS
+    // adjacency rules implement atom spacing, spaces should be invisible to
+    // CSS. So we splice them out of `groups` and into the atoms themselves.
+    var spaces = null;
+    for (i = 0; i < groups.length; i++) {
+        if (isSpace(groups[i])) {
+            spaces = spaces || [];
+            spaces.push(groups[i]);
+            groups.splice(i, 1);
+            i--;
+        } else if (spaces) {
+            if (groups[i] instanceof domTree.symbolNode) {
+                groups[i] = makeSpan([].concat(groups[i].classes), [groups[i]]);
+            }
+            buildCommon.prependChildren(groups[i], spaces);
+            spaces = null;
+        }
+    }
+    if (spaces) {
+        Array.prototype.push.apply(groups, spaces);
+    }
+
+    // Binary operators change to ordinary symbols in some contexts.
+    for (i = 0; i < groups.length; i++) {
+        if (isBin(groups[i])
+            && (isBinLeftCanceller(groups[i - 1], isRealGroup)
+                || isBinRightCanceller(groups[i + 1], isRealGroup))) {
+            groups[i].classes[0] = "mord";
+        }
+    }
+
+    return groups;
+};
+
+// Return math atom class (mclass) of a domTree.
+var getTypeOfDomTree = function(node) {
+    if (node instanceof domTree.documentFragment) {
+        if (node.children.length) {
+            return getTypeOfDomTree(
+                node.children[node.children.length - 1]);
+        }
+    } else {
+        if (utils.contains(["mord", "mop", "mbin", "mrel", "mopen", "mclose",
+            "mpunct", "minner"], node.classes[0])) {
+            return node.classes[0];
+        }
+    }
+    return null;
+};
+
+/**
+ * Sometimes, groups perform special rules when they have superscripts or
+ * subscripts attached to them. This function lets the `supsub` group know that
+ * its inner element should handle the superscripts and subscripts instead of
+ * handling them itself.
+ */
+var shouldHandleSupSub = function(group, options) {
+    if (!group) {
+        return false;
+    } else if (group.type === "op") {
+        // Operators handle supsubs differently when they have limits
+        // (e.g. `\displaystyle\sum_2^3`)
+        return group.value.limits &&
+            (options.style.size === Style.DISPLAY.size ||
+            group.value.alwaysHandleSupSub);
+    } else if (group.type === "accent") {
+        return isCharacterBox(group.value.base);
+    } else {
+        return null;
+    }
+};
+
+/**
+ * Sometimes we want to pull out the innermost element of a group. In most
+ * cases, this will just be the group itself, but when ordgroups and colors have
+ * a single element, we want to pull that out.
+ */
+var getBaseElem = function(group) {
+    if (!group) {
+        return false;
+    } else if (group.type === "ordgroup") {
+        if (group.value.length === 1) {
+            return getBaseElem(group.value[0]);
+        } else {
+            return group;
+        }
+    } else if (group.type === "color") {
+        if (group.value.value.length === 1) {
+            return getBaseElem(group.value.value[0]);
+        } else {
+            return group;
+        }
+    } else if (group.type === "font") {
+        return getBaseElem(group.value.body);
+    } else {
+        return group;
+    }
+};
+
+/**
+ * TeXbook algorithms often reference "character boxes", which are simply groups
+ * with a single character in them. To decide if something is a character box,
+ * we find its innermost group, and see if it is a single character.
+ */
+var isCharacterBox = function(group) {
+    var baseElem = getBaseElem(group);
+
+    // These are all they types of groups which hold single characters
+    return baseElem.type === "mathord" ||
+        baseElem.type === "textord" ||
+        baseElem.type === "bin" ||
+        baseElem.type === "rel" ||
+        baseElem.type === "inner" ||
+        baseElem.type === "open" ||
+        baseElem.type === "close" ||
+        baseElem.type === "punct";
+};
+
+var makeNullDelimiter = function(options, classes) {
+    return makeSpan(classes.concat([
+        "sizing", "reset-" + options.size, "size5",
+        options.style.reset(), Style.TEXT.cls(),
+        "nulldelimiter"]));
+};
+
+/**
+ * This is a map of group types to the function used to handle that type.
+ * Simpler types come at the beginning, while complicated types come afterwards.
+ */
+var groupTypes = {};
+
+groupTypes.mathord = function(group, options) {
+    return buildCommon.makeOrd(group, options, "mathord");
+};
+
+groupTypes.textord = function(group, options) {
+    return buildCommon.makeOrd(group, options, "textord");
+};
+
+groupTypes.bin = function(group, options) {
+    return buildCommon.mathsym(
+        group.value, group.mode, options, ["mbin"]);
+};
+
+groupTypes.rel = function(group, options) {
+    return buildCommon.mathsym(
+        group.value, group.mode, options, ["mrel"]);
+};
+
+groupTypes.open = function(group, options) {
+    return buildCommon.mathsym(
+        group.value, group.mode, options, ["mopen"]);
+};
+
+groupTypes.close = function(group, options) {
+    return buildCommon.mathsym(
+        group.value, group.mode, options, ["mclose"]);
+};
+
+groupTypes.inner = function(group, options) {
+    return buildCommon.mathsym(
+        group.value, group.mode, options, ["minner"]);
+};
+
+groupTypes.punct = function(group, options) {
+    return buildCommon.mathsym(
+        group.value, group.mode, options, ["mpunct"]);
+};
+
+groupTypes.ordgroup = function(group, options) {
+    return makeSpan(
+        ["mord", options.style.cls()],
+        buildExpression(group.value, options.reset(), true),
+        options
+    );
+};
+
+groupTypes.text = function(group, options) {
+    var newOptions = options.withFont(group.value.style);
+    var inner = buildExpression(group.value.body, newOptions, true);
+    for (var i = 0; i < inner.length - 1; i++) {
+        if (inner[i].tryCombine(inner[i + 1])) {
+            inner.splice(i + 1, 1);
+            i--;
+        }
+    }
+    return makeSpan(["mord", "text", newOptions.style.cls()],
+        inner, newOptions);
+};
+
+groupTypes.color = function(group, options) {
+    var elements = buildExpression(
+        group.value.value,
+        options.withColor(group.value.color),
+        false
+    );
+
+    // \color isn't supposed to affect the type of the elements it contains.
+    // To accomplish this, we wrap the results in a fragment, so the inner
+    // elements will be able to directly interact with their neighbors. For
+    // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3`
+    return new buildCommon.makeFragment(elements);
+};
+
+groupTypes.supsub = function(group, options) {
+    // Superscript and subscripts are handled in the TeXbook on page
+    // 445-446, rules 18(a-f).
+
+    // Here is where we defer to the inner group if it should handle
+    // superscripts and subscripts itself.
+    if (shouldHandleSupSub(group.value.base, options)) {
+        return groupTypes[group.value.base.type](group, options);
+    }
+
+    var base = buildGroup(group.value.base, options.reset());
+    var supmid;
+    var submid;
+    var sup;
+    var sub;
+
+    var style = options.style;
+    var newOptions;
+
+    if (group.value.sup) {
+        newOptions = options.withStyle(style.sup());
+        sup = buildGroup(group.value.sup, newOptions);
+        supmid = makeSpan([style.reset(), style.sup().cls()],
+            [sup], newOptions);
+    }
+
+    if (group.value.sub) {
+        newOptions = options.withStyle(style.sub());
+        sub = buildGroup(group.value.sub, newOptions);
+        submid = makeSpan([style.reset(), style.sub().cls()],
+            [sub], newOptions);
+    }
+
+    // Rule 18a
+    var supShift;
+    var subShift;
+    if (isCharacterBox(group.value.base)) {
+        supShift = 0;
+        subShift = 0;
+    } else {
+        supShift = base.height - style.metrics.supDrop;
+        subShift = base.depth + style.metrics.subDrop;
+    }
+
+    // Rule 18c
+    var minSupShift;
+    if (style === Style.DISPLAY) {
+        minSupShift = style.metrics.sup1;
+    } else if (style.cramped) {
+        minSupShift = style.metrics.sup3;
+    } else {
+        minSupShift = style.metrics.sup2;
+    }
+
+    // scriptspace is a font-size-independent size, so scale it
+    // appropriately
+    var multiplier = Style.TEXT.sizeMultiplier *
+            style.sizeMultiplier;
+    var scriptspace =
+        (0.5 / fontMetrics.metrics.ptPerEm) / multiplier + "em";
+
+    var supsub;
+    if (!group.value.sup) {
+        // Rule 18b
+        subShift = Math.max(
+            subShift, style.metrics.sub1,
+            sub.height - 0.8 * style.metrics.xHeight);
+
+        supsub = buildCommon.makeVList([
+            {type: "elem", elem: submid}
+        ], "shift", subShift, options);
+
+        supsub.children[0].style.marginRight = scriptspace;
+
+        // Subscripts shouldn't be shifted by the base's italic correction.
+        // Account for that by shifting the subscript back the appropriate
+        // amount. Note we only do this when the base is a single symbol.
+        if (base instanceof domTree.symbolNode) {
+            supsub.children[0].style.marginLeft = -base.italic + "em";
+        }
+    } else if (!group.value.sub) {
+        // Rule 18c, d
+        supShift = Math.max(supShift, minSupShift,
+            sup.depth + 0.25 * style.metrics.xHeight);
+
+        supsub = buildCommon.makeVList([
+            {type: "elem", elem: supmid}
+        ], "shift", -supShift, options);
+
+        supsub.children[0].style.marginRight = scriptspace;
+    } else {
+        supShift = Math.max(
+            supShift, minSupShift, sup.depth + 0.25 * style.metrics.xHeight);
+        subShift = Math.max(subShift, style.metrics.sub2);
+
+        var ruleWidth = fontMetrics.metrics.defaultRuleThickness;
+
+        // Rule 18e
+        if ((supShift - sup.depth) - (sub.height - subShift) <
+                4 * ruleWidth) {
+            subShift = 4 * ruleWidth - (supShift - sup.depth) + sub.height;
+            var psi = 0.8 * style.metrics.xHeight - (supShift - sup.depth);
+            if (psi > 0) {
+                supShift += psi;
+                subShift -= psi;
+            }
+        }
+
+        supsub = buildCommon.makeVList([
+            {type: "elem", elem: submid, shift: subShift},
+            {type: "elem", elem: supmid, shift: -supShift}
+        ], "individualShift", null, options);
+
+        // See comment above about subscripts not being shifted
+        if (base instanceof domTree.symbolNode) {
+            supsub.children[0].style.marginLeft = -base.italic + "em";
+        }
+
+        supsub.children[0].style.marginRight = scriptspace;
+        supsub.children[1].style.marginRight = scriptspace;
+    }
+
+    // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align
+    var mclass = getTypeOfDomTree(base) || "mord";
+    return makeSpan([mclass],
+        [base, makeSpan(["msupsub"], [supsub])],
+        options);
+};
+
+groupTypes.genfrac = function(group, options) {
+    // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
+    // Figure out what style this fraction should be in based on the
+    // function used
+    var style = options.style;
+    if (group.value.size === "display") {
+        style = Style.DISPLAY;
+    } else if (group.value.size === "text") {
+        style = Style.TEXT;
+    }
+
+    var nstyle = style.fracNum();
+    var dstyle = style.fracDen();
+    var newOptions;
+
+    newOptions = options.withStyle(nstyle);
+    var numer = buildGroup(group.value.numer, newOptions);
+    var numerreset = makeSpan([style.reset(), nstyle.cls()],
+        [numer], newOptions);
+
+    newOptions = options.withStyle(dstyle);
+    var denom = buildGroup(group.value.denom, newOptions);
+    var denomreset = makeSpan([style.reset(), dstyle.cls()],
+        [denom], newOptions);
+
+    var ruleWidth;
+    if (group.value.hasBarLine) {
+        ruleWidth = fontMetrics.metrics.defaultRuleThickness /
+            options.style.sizeMultiplier;
+    } else {
+        ruleWidth = 0;
+    }
+
+    // Rule 15b
+    var numShift;
+    var clearance;
+    var denomShift;
+    if (style.size === Style.DISPLAY.size) {
+        numShift = style.metrics.num1;
+        if (ruleWidth > 0) {
+            clearance = 3 * ruleWidth;
+        } else {
+            clearance = 7 * fontMetrics.metrics.defaultRuleThickness;
+        }
+        denomShift = style.metrics.denom1;
+    } else {
+        if (ruleWidth > 0) {
+            numShift = style.metrics.num2;
+            clearance = ruleWidth;
+        } else {
+            numShift = style.metrics.num3;
+            clearance = 3 * fontMetrics.metrics.defaultRuleThickness;
+        }
+        denomShift = style.metrics.denom2;
+    }
+
+    var frac;
+    if (ruleWidth === 0) {
+        // Rule 15c
+        var candidateClearance =
+            (numShift - numer.depth) - (denom.height - denomShift);
+        if (candidateClearance < clearance) {
+            numShift += 0.5 * (clearance - candidateClearance);
+            denomShift += 0.5 * (clearance - candidateClearance);
+        }
+
+        frac = buildCommon.makeVList([
+            {type: "elem", elem: denomreset, shift: denomShift},
+            {type: "elem", elem: numerreset, shift: -numShift}
+        ], "individualShift", null, options);
+    } else {
+        // Rule 15d
+        var axisHeight = style.metrics.axisHeight;
+
+        if ((numShift - numer.depth) - (axisHeight + 0.5 * ruleWidth) <
+                clearance) {
+            numShift +=
+                clearance - ((numShift - numer.depth) -
+                             (axisHeight + 0.5 * ruleWidth));
+        }
+
+        if ((axisHeight - 0.5 * ruleWidth) - (denom.height - denomShift) <
+                clearance) {
+            denomShift +=
+                clearance - ((axisHeight - 0.5 * ruleWidth) -
+                             (denom.height - denomShift));
+        }
+
+        var mid = makeSpan(
+            [options.style.reset(), Style.TEXT.cls(), "frac-line"]);
+        // Manually set the height of the line because its height is
+        // created in CSS
+        mid.height = ruleWidth;
+
+        var midShift = -(axisHeight - 0.5 * ruleWidth);
+
+        frac = buildCommon.makeVList([
+            {type: "elem", elem: denomreset, shift: denomShift},
+            {type: "elem", elem: mid,        shift: midShift},
+            {type: "elem", elem: numerreset, shift: -numShift}
+        ], "individualShift", null, options);
+    }
+
+    // Since we manually change the style sometimes (with \dfrac or \tfrac),
+    // account for the possible size change here.
+    frac.height *= style.sizeMultiplier / options.style.sizeMultiplier;
+    frac.depth *= style.sizeMultiplier / options.style.sizeMultiplier;
+
+    // Rule 15e
+    var delimSize;
+    if (style.size === Style.DISPLAY.size) {
+        delimSize = style.metrics.delim1;
+    } else {
+        delimSize = style.metrics.delim2;
+    }
+
+    var leftDelim;
+    var rightDelim;
+    if (group.value.leftDelim == null) {
+        leftDelim = makeNullDelimiter(options, ["mopen"]);
+    } else {
+        leftDelim = delimiter.customSizedDelim(
+            group.value.leftDelim, delimSize, true,
+            options.withStyle(style), group.mode, ["mopen"]);
+    }
+    if (group.value.rightDelim == null) {
+        rightDelim = makeNullDelimiter(options, ["mclose"]);
+    } else {
+        rightDelim = delimiter.customSizedDelim(
+            group.value.rightDelim, delimSize, true,
+            options.withStyle(style), group.mode, ["mclose"]);
+    }
+
+    return makeSpan(
+        ["mord", options.style.reset(), style.cls()],
+        [leftDelim, makeSpan(["mfrac"], [frac]), rightDelim],
+        options);
+};
+
+var calculateSize = function(sizeValue, style) {
+    var x = sizeValue.number;
+    if (sizeValue.unit === "ex") {
+        x *= style.metrics.emPerEx;
+    } else if (sizeValue.unit === "mu") {
+        x /= 18;
+    }
+    return x;
+};
+
+groupTypes.array = function(group, options) {
+    var r;
+    var c;
+    var nr = group.value.body.length;
+    var nc = 0;
+    var body = new Array(nr);
+
+    var style = options.style;
+
+    // Horizontal spacing
+    var pt = 1 / fontMetrics.metrics.ptPerEm;
+    var arraycolsep = 5 * pt; // \arraycolsep in article.cls
+
+    // Vertical spacing
+    var baselineskip = 12 * pt; // see size10.clo
+    // Default \arraystretch from lttab.dtx
+    // TODO(gagern): may get redefined once we have user-defined macros
+    var arraystretch = utils.deflt(group.value.arraystretch, 1);
+    var arrayskip = arraystretch * baselineskip;
+    var arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and
+    var arstrutDepth = 0.3 * arrayskip;  // \@arstrutbox in lttab.dtx
+
+    var totalHeight = 0;
+    for (r = 0; r < group.value.body.length; ++r) {
+        var inrow = group.value.body[r];
+        var height = arstrutHeight; // \@array adds an \@arstrut
+        var depth = arstrutDepth;   // to each tow (via the template)
+
+        if (nc < inrow.length) {
+            nc = inrow.length;
+        }
+
+        var outrow = new Array(inrow.length);
+        for (c = 0; c < inrow.length; ++c) {
+            var elt = buildGroup(inrow[c], options);
+            if (depth < elt.depth) {
+                depth = elt.depth;
+            }
+            if (height < elt.height) {
+                height = elt.height;
+            }
+            outrow[c] = elt;
+        }
+
+        var gap = 0;
+        if (group.value.rowGaps[r]) {
+            gap = calculateSize(group.value.rowGaps[r].value, style);
+            if (gap > 0) { // \@argarraycr
+                gap += arstrutDepth;
+                if (depth < gap) {
+                    depth = gap; // \@xargarraycr
+                }
+                gap = 0;
+            }
+        }
+
+        outrow.height = height;
+        outrow.depth = depth;
+        totalHeight += height;
+        outrow.pos = totalHeight;
+        totalHeight += depth + gap; // \@yargarraycr
+        body[r] = outrow;
+    }
+
+    var offset = totalHeight / 2 + style.metrics.axisHeight;
+    var colDescriptions = group.value.cols || [];
+    var cols = [];
+    var colSep;
+    var colDescrNum;
+    for (c = 0, colDescrNum = 0;
+         // Continue while either there are more columns or more column
+         // descriptions, so trailing separators don't get lost.
+         c < nc || colDescrNum < colDescriptions.length;
+         ++c, ++colDescrNum) {
+
+        var colDescr = colDescriptions[colDescrNum] || {};
+
+        var firstSeparator = true;
+        while (colDescr.type === "separator") {
+            // If there is more than one separator in a row, add a space
+            // between them.
+            if (!firstSeparator) {
+                colSep = makeSpan(["arraycolsep"], []);
+                colSep.style.width =
+                    fontMetrics.metrics.doubleRuleSep + "em";
+                cols.push(colSep);
+            }
+
+            if (colDescr.separator === "|") {
+                var separator = makeSpan(
+                    ["vertical-separator"],
+                    []);
+                separator.style.height = totalHeight + "em";
+                separator.style.verticalAlign =
+                    -(totalHeight - offset) + "em";
+
+                cols.push(separator);
+            } else {
+                throw new ParseError(
+                    "Invalid separator type: " + colDescr.separator);
+            }
+
+            colDescrNum++;
+            colDescr = colDescriptions[colDescrNum] || {};
+            firstSeparator = false;
+        }
+
+        if (c >= nc) {
+            continue;
+        }
+
+        var sepwidth;
+        if (c > 0 || group.value.hskipBeforeAndAfter) {
+            sepwidth = utils.deflt(colDescr.pregap, arraycolsep);
+            if (sepwidth !== 0) {
+                colSep = makeSpan(["arraycolsep"], []);
+                colSep.style.width = sepwidth + "em";
+                cols.push(colSep);
+            }
+        }
+
+        var col = [];
+        for (r = 0; r < nr; ++r) {
+            var row = body[r];
+            var elem = row[c];
+            if (!elem) {
+                continue;
+            }
+            var shift = row.pos - offset;
+            elem.depth = row.depth;
+            elem.height = row.height;
+            col.push({type: "elem", elem: elem, shift: shift});
+        }
+
+        col = buildCommon.makeVList(col, "individualShift", null, options);
+        col = makeSpan(
+            ["col-align-" + (colDescr.align || "c")],
+            [col]);
+        cols.push(col);
+
+        if (c < nc - 1 || group.value.hskipBeforeAndAfter) {
+            sepwidth = utils.deflt(colDescr.postgap, arraycolsep);
+            if (sepwidth !== 0) {
+                colSep = makeSpan(["arraycolsep"], []);
+                colSep.style.width = sepwidth + "em";
+                cols.push(colSep);
+            }
+        }
+    }
+    body = makeSpan(["mtable"], cols);
+    return makeSpan(["mord"], [body], options);
+};
+
+groupTypes.spacing = function(group, options) {
+    if (group.value === "\\ " || group.value === "\\space" ||
+        group.value === " " || group.value === "~") {
+        // Spaces are generated by adding an actual space. Each of these
+        // things has an entry in the symbols table, so these will be turned
+        // into appropriate outputs.
+        if (group.mode === "text") {
+            return buildCommon.makeOrd(group, options, "textord");
+        } else {
+            return makeSpan(["mspace"],
+                [buildCommon.mathsym(group.value, group.mode, options)],
+                options);
+        }
+    } else {
+        // Other kinds of spaces are of arbitrary width. We use CSS to
+        // generate these.
+        return makeSpan(
+            ["mspace",
+                buildCommon.spacingFunctions[group.value].className],
+            [], options);
+    }
+};
+
+groupTypes.llap = function(group, options) {
+    var inner = makeSpan(
+        ["inner"], [buildGroup(group.value.body, options.reset())]);
+    var fix = makeSpan(["fix"], []);
+    return makeSpan(
+        ["mord", "llap", options.style.cls()], [inner, fix], options);
+};
+
+groupTypes.rlap = function(group, options) {
+    var inner = makeSpan(
+        ["inner"], [buildGroup(group.value.body, options.reset())]);
+    var fix = makeSpan(["fix"], []);
+    return makeSpan(
+        ["mord", "rlap", options.style.cls()], [inner, fix], options);
+};
+
+groupTypes.op = function(group, options) {
+    // Operators are handled in the TeXbook pg. 443-444, rule 13(a).
+    var supGroup;
+    var subGroup;
+    var hasLimits = false;
+    if (group.type === "supsub") {
+        // If we have limits, supsub will pass us its group to handle. Pull
+        // out the superscript and subscript and set the group to the op in
+        // its base.
+        supGroup = group.value.sup;
+        subGroup = group.value.sub;
+        group = group.value.base;
+        hasLimits = true;
+    }
+
+    var style = options.style;
+
+    // Most operators have a large successor symbol, but these don't.
+    var noSuccessor = [
+        "\\smallint"
+    ];
+
+    var large = false;
+    if (style.size === Style.DISPLAY.size &&
+        group.value.symbol &&
+        !utils.contains(noSuccessor, group.value.body)) {
+
+        // Most symbol operators get larger in displaystyle (rule 13)
+        large = true;
+    }
+
+    var base;
+    var baseShift = 0;
+    var slant = 0;
+    if (group.value.symbol) {
+        // If this is a symbol, create the symbol.
+        var fontName = large ? "Size2-Regular" : "Size1-Regular";
+        base = buildCommon.makeSymbol(
+            group.value.body, fontName, "math", options,
+            ["mop", "op-symbol", large ? "large-op" : "small-op"]);
+
+        // Shift the symbol so its center lies on the axis (rule 13). It
+        // appears that our fonts have the centers of the symbols already
+        // almost on the axis, so these numbers are very small. Note we
+        // don't actually apply this here, but instead it is used either in
+        // the vlist creation or separately when there are no limits.
+        baseShift = (base.height - base.depth) / 2 -
+            style.metrics.axisHeight * style.sizeMultiplier;
+
+        // The slant of the symbol is just its italic correction.
+        slant = base.italic;
+    } else if (group.value.value) {
+        // If this is a list, compose that list.
+        var inner = buildExpression(group.value.value, options, true);
+
+        base = makeSpan(["mop"], inner, options);
+    } else {
+        // Otherwise, this is a text operator. Build the text from the
+        // operator's name.
+        // TODO(emily): Add a space in the middle of some of these
+        // operators, like \limsup
+        var output = [];
+        for (var i = 1; i < group.value.body.length; i++) {
+            output.push(buildCommon.mathsym(group.value.body[i], group.mode));
+        }
+        base = makeSpan(["mop"], output, options);
+    }
+
+    if (hasLimits) {
+        // IE 8 clips \int if it is in a display: inline-block. We wrap it
+        // in a new span so it is an inline, and works.
+        base = makeSpan([], [base]);
+
+        var supmid;
+        var supKern;
+        var submid;
+        var subKern;
+        var newOptions;
+        // We manually have to handle the superscripts and subscripts. This,
+        // aside from the kern calculations, is copied from supsub.
+        if (supGroup) {
+            newOptions = options.withStyle(style.sup());
+            var sup = buildGroup(supGroup, newOptions);
+            supmid = makeSpan([style.reset(), style.sup().cls()],
+                [sup], newOptions);
+
+            supKern = Math.max(
+                fontMetrics.metrics.bigOpSpacing1,
+                fontMetrics.metrics.bigOpSpacing3 - sup.depth);
+        }
+
+        if (subGroup) {
+            newOptions = options.withStyle(style.sub());
+            var sub = buildGroup(subGroup, newOptions);
+            submid = makeSpan([style.reset(), style.sub().cls()],
+                [sub], newOptions);
+
+            subKern = Math.max(
+                fontMetrics.metrics.bigOpSpacing2,
+                fontMetrics.metrics.bigOpSpacing4 - sub.height);
+        }
+
+        // Build the final group as a vlist of the possible subscript, base,
+        // and possible superscript.
+        var finalGroup;
+        var top;
+        var bottom;
+        if (!supGroup) {
+            top = base.height - baseShift;
+
+            finalGroup = buildCommon.makeVList([
+                {type: "kern", size: fontMetrics.metrics.bigOpSpacing5},
+                {type: "elem", elem: submid},
+                {type: "kern", size: subKern},
+                {type: "elem", elem: base}
+            ], "top", top, options);
+
+            // Here, we shift the limits by the slant of the symbol. Note
+            // that we are supposed to shift the limits by 1/2 of the slant,
+            // but since we are centering the limits adding a full slant of
+            // margin will shift by 1/2 that.
+            finalGroup.children[0].style.marginLeft = -slant + "em";
+        } else if (!subGroup) {
+            bottom = base.depth + baseShift;
+
+            finalGroup = buildCommon.makeVList([
+                {type: "elem", elem: base},
+                {type: "kern", size: supKern},
+                {type: "elem", elem: supmid},
+                {type: "kern", size: fontMetrics.metrics.bigOpSpacing5}
+            ], "bottom", bottom, options);
+
+            // See comment above about slants
+            finalGroup.children[1].style.marginLeft = slant + "em";
+        } else if (!supGroup && !subGroup) {
+            // This case probably shouldn't occur (this would mean the
+            // supsub was sending us a group with no superscript or
+            // subscript) but be safe.
+            return base;
+        } else {
+            bottom = fontMetrics.metrics.bigOpSpacing5 +
+                submid.height + submid.depth +
+                subKern +
+                base.depth + baseShift;
+
+            finalGroup = buildCommon.makeVList([
+                {type: "kern", size: fontMetrics.metrics.bigOpSpacing5},
+                {type: "elem", elem: submid},
+                {type: "kern", size: subKern},
+                {type: "elem", elem: base},
+                {type: "kern", size: supKern},
+                {type: "elem", elem: supmid},
+                {type: "kern", size: fontMetrics.metrics.bigOpSpacing5}
+            ], "bottom", bottom, options);
+
+            // See comment above about slants
+            finalGroup.children[0].style.marginLeft = -slant + "em";
+            finalGroup.children[2].style.marginLeft = slant + "em";
+        }
+
+        return makeSpan(["mop", "op-limits"], [finalGroup], options);
+    } else {
+        if (group.value.symbol) {
+            base.style.top = baseShift + "em";
+        }
+
+        return base;
+    }
+};
+
+groupTypes.mod = function(group, options) {
+    var inner = [];
+
+    if (group.value.modType === "bmod") {
+        // “\nonscript\mskip-\medmuskip\mkern5mu”
+        if (!options.style.isTight()) {
+            inner.push(makeSpan(
+                ["mspace", "negativemediumspace"], [], options));
+        }
+        inner.push(makeSpan(["mspace", "thickspace"], [], options));
+    } else if (options.style.size === Style.DISPLAY.size) {
+        inner.push(makeSpan(["mspace", "quad"], [], options));
+    } else if (group.value.modType === "mod") {
+        inner.push(makeSpan(["mspace", "twelvemuspace"], [], options));
+    } else {
+        inner.push(makeSpan(["mspace", "eightmuspace"], [], options));
+    }
+
+    if (group.value.modType === "pod" || group.value.modType === "pmod") {
+        inner.push(buildCommon.mathsym("(", group.mode));
+    }
+
+    if (group.value.modType !== "pod") {
+        var modInner = [
+            buildCommon.mathsym("m", group.mode),
+            buildCommon.mathsym("o", group.mode),
+            buildCommon.mathsym("d", group.mode)];
+        if (group.value.modType === "bmod") {
+            inner.push(makeSpan(["mbin"], modInner, options));
+            // “\mkern5mu\nonscript\mskip-\medmuskip”
+            inner.push(makeSpan(["mspace", "thickspace"], [], options));
+            if (!options.style.isTight()) {
+                inner.push(makeSpan(
+                    ["mspace", "negativemediumspace"], [], options));
+            }
+        } else {
+            Array.prototype.push.apply(inner, modInner);
+            inner.push(makeSpan(["mspace", "sixmuspace"], [], options));
+        }
+    }
+
+    if (group.value.value) {
+        Array.prototype.push.apply(inner,
+            buildExpression(group.value.value, options, false));
+    }
+
+    if (group.value.modType === "pod" || group.value.modType === "pmod") {
+        inner.push(buildCommon.mathsym(")", group.mode));
+    }
+
+    return buildCommon.makeFragment(inner);
+};
+
+groupTypes.katex = function(group, options) {
+    // The KaTeX logo. The offsets for the K and a were chosen to look
+    // good, but the offsets for the T, E, and X were taken from the
+    // definition of \TeX in TeX (see TeXbook pg. 356)
+    var k = makeSpan(
+        ["k"], [buildCommon.mathsym("K", group.mode)], options);
+    var a = makeSpan(
+        ["a"], [buildCommon.mathsym("A", group.mode)], options);
+
+    a.height = (a.height + 0.2) * 0.75;
+    a.depth = (a.height - 0.2) * 0.75;
+
+    var t = makeSpan(
+        ["t"], [buildCommon.mathsym("T", group.mode)], options);
+    var e = makeSpan(
+        ["e"], [buildCommon.mathsym("E", group.mode)], options);
+
+    e.height = (e.height - 0.2155);
+    e.depth = (e.depth + 0.2155);
+
+    var x = makeSpan(
+        ["x"], [buildCommon.mathsym("X", group.mode)], options);
+
+    return makeSpan(
+        ["mord", "katex-logo"], [k, a, t, e, x], options);
+};
+
+groupTypes.overline = function(group, options) {
+    // Overlines are handled in the TeXbook pg 443, Rule 9.
+    var style = options.style;
+
+    // Build the inner group in the cramped style.
+    var innerGroup = buildGroup(group.value.body,
+            options.withStyle(style.cramp()));
+
+    var ruleWidth = fontMetrics.metrics.defaultRuleThickness /
+        style.sizeMultiplier;
+
+    // Create the line above the body
+    var line = makeSpan(
+        [style.reset(), Style.TEXT.cls(), "overline-line"]);
+    line.height = ruleWidth;
+    line.maxFontSize = 1.0;
+
+    // Generate the vlist, with the appropriate kerns
+    var vlist = buildCommon.makeVList([
+        {type: "elem", elem: innerGroup},
+        {type: "kern", size: 3 * ruleWidth},
+        {type: "elem", elem: line},
+        {type: "kern", size: ruleWidth}
+    ], "firstBaseline", null, options);
+
+    return makeSpan(["mord", "overline"], [vlist], options);
+};
+
+groupTypes.underline = function(group, options) {
+    // Underlines are handled in the TeXbook pg 443, Rule 10.
+    var style = options.style;
+
+    // Build the inner group.
+    var innerGroup = buildGroup(group.value.body, options);
+
+    var ruleWidth = fontMetrics.metrics.defaultRuleThickness /
+        style.sizeMultiplier;
+
+    // Create the line above the body
+    var line = makeSpan([style.reset(), Style.TEXT.cls(), "underline-line"]);
+    line.height = ruleWidth;
+    line.maxFontSize = 1.0;
+
+    // Generate the vlist, with the appropriate kerns
+    var vlist = buildCommon.makeVList([
+        {type: "kern", size: ruleWidth},
+        {type: "elem", elem: line},
+        {type: "kern", size: 3 * ruleWidth},
+        {type: "elem", elem: innerGroup}
+    ], "top", innerGroup.height, options);
+
+    return makeSpan(["mord", "underline"], [vlist], options);
+};
+
+groupTypes.sqrt = function(group, options) {
+    // Square roots are handled in the TeXbook pg. 443, Rule 11.
+    var style = options.style;
+
+    // First, we do the same steps as in overline to build the inner group
+    // and line
+    var inner = buildGroup(group.value.body, options.withStyle(style.cramp()));
+
+    var ruleWidth = fontMetrics.metrics.defaultRuleThickness /
+        style.sizeMultiplier;
+
+    var line = makeSpan(
+        [style.reset(), Style.TEXT.cls(), "sqrt-line"], [],
+        options);
+    line.height = ruleWidth;
+    line.maxFontSize = 1.0;
+
+    var phi = ruleWidth;
+    if (style.id < Style.TEXT.id) {
+        phi = style.metrics.xHeight;
+    }
+
+    // Calculate the clearance between the body and line
+    var lineClearance = ruleWidth + phi / 4;
+
+    var innerHeight = (inner.height + inner.depth) * style.sizeMultiplier;
+    var minDelimiterHeight = innerHeight + lineClearance + ruleWidth;
+
+    // Create a \surd delimiter of the required minimum size
+    var delim = makeSpan(["sqrt-sign"], [
+        delimiter.customSizedDelim("\\surd", minDelimiterHeight,
+                                   false, options, group.mode)],
+                         options);
+
+    var delimDepth = (delim.height + delim.depth) - ruleWidth;
+
+    // Adjust the clearance based on the delimiter size
+    if (delimDepth > inner.height + inner.depth + lineClearance) {
+        lineClearance =
+            (lineClearance + delimDepth - inner.height - inner.depth) / 2;
+    }
+
+    // Shift the delimiter so that its top lines up with the top of the line
+    var delimShift = -(inner.height + lineClearance + ruleWidth) + delim.height;
+    delim.style.top = delimShift + "em";
+    delim.height -= delimShift;
+    delim.depth += delimShift;
+
+    // We add a special case here, because even when `inner` is empty, we
+    // still get a line. So, we use a simple heuristic to decide if we
+    // should omit the body entirely. (note this doesn't work for something
+    // like `\sqrt{\rlap{x}}`, but if someone is doing that they deserve for
+    // it not to work.
+    var body;
+    if (inner.height === 0 && inner.depth === 0) {
+        body = makeSpan();
+    } else {
+        body = buildCommon.makeVList([
+            {type: "elem", elem: inner},
+            {type: "kern", size: lineClearance},
+            {type: "elem", elem: line},
+            {type: "kern", size: ruleWidth}
+        ], "firstBaseline", null, options);
+    }
+
+    if (!group.value.index) {
+        return makeSpan(["mord", "sqrt"], [delim, body], options);
+    } else {
+        // Handle the optional root index
+
+        // The index is always in scriptscript style
+        var newOptions = options.withStyle(Style.SCRIPTSCRIPT);
+        var root = buildGroup(group.value.index, newOptions);
+        var rootWrap = makeSpan(
+            [style.reset(), Style.SCRIPTSCRIPT.cls()],
+            [root],
+            newOptions);
+
+        // Figure out the height and depth of the inner part
+        var innerRootHeight = Math.max(delim.height, body.height);
+        var innerRootDepth = Math.max(delim.depth, body.depth);
+
+        // The amount the index is shifted by. This is taken from the TeX
+        // source, in the definition of `\r@@t`.
+        var toShift = 0.6 * (innerRootHeight - innerRootDepth);
+
+        // Build a VList with the superscript shifted up correctly
+        var rootVList = buildCommon.makeVList(
+            [{type: "elem", elem: rootWrap}],
+            "shift", -toShift, options);
+        // Add a class surrounding it so we can add on the appropriate
+        // kerning
+        var rootVListWrap = makeSpan(["root"], [rootVList]);
+
+        return makeSpan(["mord", "sqrt"],
+            [rootVListWrap, delim, body], options);
+    }
+};
+
+groupTypes.sizing = function(group, options) {
+    // Handle sizing operators like \Huge. Real TeX doesn't actually allow
+    // these functions inside of math expressions, so we do some special
+    // handling.
+    var inner = buildExpression(group.value.value,
+            options.withSize(group.value.size), false);
+
+    // Compute the correct maxFontSize.
+    var style = options.style;
+    var fontSize = buildCommon.sizingMultiplier[group.value.size];
+    fontSize = fontSize * style.sizeMultiplier;
+
+    // Add size-resetting classes to the inner list and set maxFontSize
+    // manually. Handle nested size changes.
+    for (var i = 0; i < inner.length; i++) {
+        var pos = utils.indexOf(inner[i].classes, "sizing");
+        if (pos < 0) {
+            inner[i].classes.push("sizing", "reset-" + options.size,
+                                  group.value.size, style.cls());
+            inner[i].maxFontSize = fontSize;
+        } else if (inner[i].classes[pos + 1] === "reset-" + group.value.size) {
+            // This is a nested size change: e.g., inner[i] is the "b" in
+            // `\Huge a \small b`. Override the old size (the `reset-` class)
+            // but not the new size.
+            inner[i].classes[pos + 1] = "reset-" + options.size;
+        }
+    }
+
+    return buildCommon.makeFragment(inner);
+};
+
+groupTypes.styling = function(group, options) {
+    // Style changes are handled in the TeXbook on pg. 442, Rule 3.
+
+    // Figure out what style we're changing to.
+    var styleMap = {
+        "display": Style.DISPLAY,
+        "text": Style.TEXT,
+        "script": Style.SCRIPT,
+        "scriptscript": Style.SCRIPTSCRIPT
+    };
+
+    var newStyle = styleMap[group.value.style];
+    var newOptions = options.withStyle(newStyle);
+
+    // Build the inner expression in the new style.
+    var inner = buildExpression(
+        group.value.value, newOptions, false);
+
+    // Add style-resetting classes to the inner list. Handle nested changes.
+    for (var i = 0; i < inner.length; i++) {
+        var pos = utils.indexOf(inner[i].classes, newStyle.reset());
+        if (pos < 0) {
+            inner[i].classes.push(options.style.reset(), newStyle.cls());
+        } else {
+            // This is a nested style change, as `\textstyle a\scriptstyle b`.
+            // Only override the old style (the reset class).
+            inner[i].classes[pos] = options.style.reset();
+        }
+    }
+
+    return new buildCommon.makeFragment(inner);
+};
+
+groupTypes.font = function(group, options) {
+    var font = group.value.font;
+    return buildGroup(group.value.body, options.withFont(font));
+};
+
+groupTypes.delimsizing = function(group, options) {
+    var delim = group.value.value;
+
+    if (delim === ".") {
+        // Empty delimiters still count as elements, even though they don't
+        // show anything.
+        return makeSpan([group.value.mclass]);
+    }
+
+    // Use delimiter.sizedDelim to generate the delimiter.
+    return delimiter.sizedDelim(
+            delim, group.value.size, options, group.mode,
+            [group.value.mclass]);
+};
+
+groupTypes.leftright = function(group, options) {
+    // Build the inner expression
+    var inner = buildExpression(group.value.body, options.reset(), true);
+
+    var innerHeight = 0;
+    var innerDepth = 0;
+    var hadMiddle = false;
+
+    // Calculate its height and depth
+    for (var i = 0; i < inner.length; i++) {
+        if (inner[i].isMiddle) {
+            hadMiddle = true;
+        } else {
+            innerHeight = Math.max(inner[i].height, innerHeight);
+            innerDepth = Math.max(inner[i].depth, innerDepth);
+        }
+    }
+
+    var style = options.style;
+
+    // The size of delimiters is the same, regardless of what style we are
+    // in. Thus, to correctly calculate the size of delimiter we need around
+    // a group, we scale down the inner size based on the size.
+    innerHeight *= style.sizeMultiplier;
+    innerDepth *= style.sizeMultiplier;
+
+    var leftDelim;
+    if (group.value.left === ".") {
+        // Empty delimiters in \left and \right make null delimiter spaces.
+        leftDelim = makeNullDelimiter(options, ["mopen"]);
+    } else {
+        // Otherwise, use leftRightDelim to generate the correct sized
+        // delimiter.
+        leftDelim = delimiter.leftRightDelim(
+            group.value.left, innerHeight, innerDepth, options,
+            group.mode, ["mopen"]);
+    }
+    // Add it to the beginning of the expression
+    inner.unshift(leftDelim);
+
+    // Handle middle delimiters
+    if (hadMiddle) {
+        for (i = 1; i < inner.length; i++) {
+            if (inner[i].isMiddle) {
+                // Apply the options that were active when \middle was called
+                inner[i] = delimiter.leftRightDelim(
+                    inner[i].isMiddle.value, innerHeight, innerDepth,
+                    inner[i].isMiddle.options, group.mode, []);
+            }
+        }
+    }
+
+    var rightDelim;
+    // Same for the right delimiter
+    if (group.value.right === ".") {
+        rightDelim = makeNullDelimiter(options, ["mclose"]);
+    } else {
+        rightDelim = delimiter.leftRightDelim(
+            group.value.right, innerHeight, innerDepth, options,
+            group.mode, ["mclose"]);
+    }
+    // Add it to the end of the expression.
+    inner.push(rightDelim);
+
+    return makeSpan(
+        ["minner", style.cls()], inner, options);
+};
+
+groupTypes.middle = function(group, options) {
+    var middleDelim;
+    if (group.value.value === ".") {
+        middleDelim = makeNullDelimiter(options, []);
+    } else {
+        middleDelim = delimiter.sizedDelim(
+            group.value.value, 1, options,
+            group.mode, []);
+        middleDelim.isMiddle = {value: group.value.value, options: options};
+    }
+    return middleDelim;
+};
+
+groupTypes.rule = function(group, options) {
+    // Make an empty span for the rule
+    var rule = makeSpan(["mord", "rule"], [], options);
+    var style = options.style;
+
+    // Calculate the shift, width, and height of the rule, and account for units
+    var shift = 0;
+    if (group.value.shift) {
+        shift = calculateSize(group.value.shift, style);
+    }
+
+    var width = calculateSize(group.value.width, style);
+    var height = calculateSize(group.value.height, style);
+
+    // The sizes of rules are absolute, so make it larger if we are in a
+    // smaller style.
+    shift /= style.sizeMultiplier;
+    width /= style.sizeMultiplier;
+    height /= style.sizeMultiplier;
+
+    // Style the rule to the right size
+    rule.style.borderRightWidth = width + "em";
+    rule.style.borderTopWidth = height + "em";
+    rule.style.bottom = shift + "em";
+
+    // Record the height and width
+    rule.width = width;
+    rule.height = height + shift;
+    rule.depth = -shift;
+
+    return rule;
+};
+
+groupTypes.kern = function(group, options) {
+    // Make an empty span for the rule
+    var rule = makeSpan(["mord", "rule"], [], options);
+    var style = options.style;
+
+    var dimension = 0;
+    if (group.value.dimension) {
+        dimension = calculateSize(group.value.dimension, style);
+    }
+
+    dimension /= style.sizeMultiplier;
+
+    rule.style.marginLeft = dimension + "em";
+
+    return rule;
+};
+
+groupTypes.accent = function(group, options) {
+    // Accents are handled in the TeXbook pg. 443, rule 12.
+    var base = group.value.base;
+    var style = options.style;
+
+    var supsubGroup;
+    if (group.type === "supsub") {
+        // If our base is a character box, and we have superscripts and
+        // subscripts, the supsub will defer to us. In particular, we want
+        // to attach the superscripts and subscripts to the inner body (so
+        // that the position of the superscripts and subscripts won't be
+        // affected by the height of the accent). We accomplish this by
+        // sticking the base of the accent into the base of the supsub, and
+        // rendering that, while keeping track of where the accent is.
+
+        // The supsub group is the group that was passed in
+        var supsub = group;
+        // The real accent group is the base of the supsub group
+        group = supsub.value.base;
+        // The character box is the base of the accent group
+        base = group.value.base;
+        // Stick the character box into the base of the supsub group
+        supsub.value.base = base;
+
+        // Rerender the supsub group with its new base, and store that
+        // result.
+        supsubGroup = buildGroup(
+            supsub, options.reset());
+    }
+
+    // Build the base group
+    var body = buildGroup(
+        base, options.withStyle(style.cramp()));
+
+    // Calculate the skew of the accent. This is based on the line "If the
+    // nucleus is not a single character, let s = 0; otherwise set s to the
+    // kern amount for the nucleus followed by the \skewchar of its font."
+    // Note that our skew metrics are just the kern between each character
+    // and the skewchar.
+    var skew;
+    if (isCharacterBox(base)) {
+        // If the base is a character box, then we want the skew of the
+        // innermost character. To do that, we find the innermost character:
+        var baseChar = getBaseElem(base);
+        // Then, we render its group to get the symbol inside it
+        var baseGroup = buildGroup(
+            baseChar, options.withStyle(style.cramp()));
+        // Finally, we pull the skew off of the symbol.
+        skew = baseGroup.skew;
+        // Note that we now throw away baseGroup, because the layers we
+        // removed with getBaseElem might contain things like \color which
+        // we can't get rid of.
+        // TODO(emily): Find a better way to get the skew
+    } else {
+        skew = 0;
+    }
+
+    // calculate the amount of space between the body and the accent
+    var clearance = Math.min(
+        body.height,
+        style.metrics.xHeight);
+
+    // Build the accent
+    var accent = buildCommon.makeSymbol(
+        group.value.accent, "Main-Regular", "math", options);
+    // Remove the italic correction of the accent, because it only serves to
+    // shift the accent over to a place we don't want.
+    accent.italic = 0;
+
+    // The \vec character that the fonts use is a combining character, and
+    // thus shows up much too far to the left. To account for this, we add a
+    // specific class which shifts the accent over to where we want it.
+    // TODO(emily): Fix this in a better way, like by changing the font
+    var vecClass = group.value.accent === "\\vec" ? "accent-vec" : null;
+
+    var accentBody = makeSpan(["accent-body", vecClass], [
+        makeSpan([], [accent])]);
+
+    accentBody = buildCommon.makeVList([
+        {type: "elem", elem: body},
+        {type: "kern", size: -clearance},
+        {type: "elem", elem: accentBody}
+    ], "firstBaseline", null, options);
+
+    // Shift the accent over by the skew. Note we shift by twice the skew
+    // because we are centering the accent, so by adding 2*skew to the left,
+    // we shift it to the right by 1*skew.
+    accentBody.children[1].style.marginLeft = 2 * skew + "em";
+
+    var accentWrap = makeSpan(["mord", "accent"], [accentBody], options);
+
+    if (supsubGroup) {
+        // Here, we replace the "base" child of the supsub with our newly
+        // generated accent.
+        supsubGroup.children[0] = accentWrap;
+
+        // Since we don't rerun the height calculation after replacing the
+        // accent, we manually recalculate height.
+        supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height);
+
+        // Accents should always be ords, even when their innards are not.
+        supsubGroup.classes[0] = "mord";
+
+        return supsubGroup;
+    } else {
+        return accentWrap;
+    }
+};
+
+groupTypes.phantom = function(group, options) {
+    var elements = buildExpression(
+        group.value.value,
+        options.withPhantom(),
+        false
+    );
+
+    // \phantom isn't supposed to affect the elements it contains.
+    // See "color" for more details.
+    return new buildCommon.makeFragment(elements);
+};
+
+groupTypes.mclass = function(group, options) {
+    var elements = buildExpression(group.value.value, options, true);
+
+    return makeSpan([group.value.mclass], elements, options);
+};
+
+/**
+ * buildGroup is the function that takes a group and calls the correct groupType
+ * function for it. It also handles the interaction of size and style changes
+ * between parents and children.
+ */
+var buildGroup = function(group, options) {
+    if (!group) {
+        return makeSpan();
+    }
+
+    if (groupTypes[group.type]) {
+        // Call the groupTypes function
+        var groupNode = groupTypes[group.type](group, options);
+        var multiplier;
+
+        // If the style changed between the parent and the current group,
+        // account for the size difference
+        if (options.style !== options.parentStyle) {
+            multiplier = options.style.sizeMultiplier /
+                    options.parentStyle.sizeMultiplier;
+
+            groupNode.height *= multiplier;
+            groupNode.depth *= multiplier;
+        }
+
+        // If the size changed between the parent and the current group, account
+        // for that size difference.
+        if (options.size !== options.parentSize) {
+            multiplier = buildCommon.sizingMultiplier[options.size] /
+                    buildCommon.sizingMultiplier[options.parentSize];
+
+            groupNode.height *= multiplier;
+            groupNode.depth *= multiplier;
+        }
+
+        return groupNode;
+    } else {
+        throw new ParseError(
+            "Got group of unknown type: '" + group.type + "'");
+    }
+};
+
+/**
+ * Take an entire parse tree, and build it into an appropriate set of HTML
+ * nodes.
+ */
+var buildHTML = function(tree, options) {
+    // buildExpression is destructive, so we need to make a clone
+    // of the incoming tree so that it isn't accidentally changed
+    tree = JSON.parse(JSON.stringify(tree));
+
+    // Build the expression contained in the tree
+    var expression = buildExpression(tree, options, true);
+    var body = makeSpan(["base", options.style.cls()], expression, options);
+
+    // Add struts, which ensure that the top of the HTML element falls at the
+    // height of the expression, and the bottom of the HTML element falls at the
+    // depth of the expression.
+    var topStrut = makeSpan(["strut"]);
+    var bottomStrut = makeSpan(["strut", "bottom"]);
+
+    topStrut.style.height = body.height + "em";
+    bottomStrut.style.height = (body.height + body.depth) + "em";
+    // We'd like to use `vertical-align: top` but in IE 9 this lowers the
+    // baseline of the box to the bottom of this strut (instead staying in the
+    // normal place) so we use an absolute value for vertical-align instead
+    bottomStrut.style.verticalAlign = -body.depth + "em";
+
+    // Wrap the struts and body together
+    var htmlNode = makeSpan(["katex-html"], [topStrut, bottomStrut, body]);
+
+    htmlNode.setAttribute("aria-hidden", "true");
+
+    return htmlNode;
+};
+
+module.exports = buildHTML;
+
+},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./delimiter":14,"./domTree":15,"./fontMetrics":17,"./utils":25}],12:[function(require,module,exports){
+/**
+ * This file converts a parse tree into a cooresponding MathML tree. The main
+ * entry point is the `buildMathML` function, which takes a parse tree from the
+ * parser.
+ */
+
+var buildCommon = require("./buildCommon");
+var fontMetrics = require("./fontMetrics");
+var mathMLTree = require("./mathMLTree");
+var ParseError = require("./ParseError");
+var symbols = require("./symbols");
+var utils = require("./utils");
+
+var makeSpan = buildCommon.makeSpan;
+var fontMap = buildCommon.fontMap;
+
+/**
+ * Takes a symbol and converts it into a MathML text node after performing
+ * optional replacement from symbols.js.
+ */
+var makeText = function(text, mode) {
+    if (symbols[mode][text] && symbols[mode][text].replace) {
+        text = symbols[mode][text].replace;
+    }
+
+    return new mathMLTree.TextNode(text);
+};
+
+/**
+ * Returns the math variant as a string or null if none is required.
+ */
+var getVariant = function(group, options) {
+    var font = options.font;
+    if (!font) {
+        return null;
+    }
+
+    var mode = group.mode;
+    if (font === "mathit") {
+        return "italic";
+    }
+
+    var value = group.value;
+    if (utils.contains(["\\imath", "\\jmath"], value)) {
+        return null;
+    }
+
+    if (symbols[mode][value] && symbols[mode][value].replace) {
+        value = symbols[mode][value].replace;
+    }
+
+    var fontName = fontMap[font].fontName;
+    if (fontMetrics.getCharacterMetrics(value, fontName)) {
+        return fontMap[options.font].variant;
+    }
+
+    return null;
+};
+
+/**
+ * Functions for handling the different types of groups found in the parse
+ * tree. Each function should take a parse group and return a MathML node.
+ */
+var groupTypes = {};
+
+groupTypes.mathord = function(group, options) {
+    var node = new mathMLTree.MathNode(
+        "mi",
+        [makeText(group.value, group.mode)]);
+
+    var variant = getVariant(group, options);
+    if (variant) {
+        node.setAttribute("mathvariant", variant);
+    }
+    return node;
+};
+
+groupTypes.textord = function(group, options) {
+    var text = makeText(group.value, group.mode);
+
+    var variant = getVariant(group, options) || "normal";
+
+    var node;
+    if (/[0-9]/.test(group.value)) {
+        // TODO(kevinb) merge adjacent <mn> nodes
+        // do it as a post processing step
+        node = new mathMLTree.MathNode("mn", [text]);
+        if (options.font) {
+            node.setAttribute("mathvariant", variant);
+        }
+    } else {
+        node = new mathMLTree.MathNode("mi", [text]);
+        node.setAttribute("mathvariant", variant);
+    }
+
+    return node;
+};
+
+groupTypes.bin = function(group) {
+    var node = new mathMLTree.MathNode(
+        "mo", [makeText(group.value, group.mode)]);
+
+    return node;
+};
+
+groupTypes.rel = function(group) {
+    var node = new mathMLTree.MathNode(
+        "mo", [makeText(group.value, group.mode)]);
+
+    return node;
+};
+
+groupTypes.open = function(group) {
+    var node = new mathMLTree.MathNode(
+        "mo", [makeText(group.value, group.mode)]);
+
+    return node;
+};
+
+groupTypes.close = function(group) {
+    var node = new mathMLTree.MathNode(
+        "mo", [makeText(group.value, group.mode)]);
+
+    return node;
+};
+
+groupTypes.inner = function(group) {
+    var node = new mathMLTree.MathNode(
+        "mo", [makeText(group.value, group.mode)]);
+
+    return node;
+};
+
+groupTypes.punct = function(group) {
+    var node = new mathMLTree.MathNode(
+        "mo", [makeText(group.value, group.mode)]);
+
+    node.setAttribute("separator", "true");
+
+    return node;
+};
+
+groupTypes.ordgroup = function(group, options) {
+    var inner = buildExpression(group.value, options);
+
+    var node = new mathMLTree.MathNode("mrow", inner);
+
+    return node;
+};
+
+groupTypes.text = function(group, options) {
+    var inner = buildExpression(group.value.body, options);
+
+    var node = new mathMLTree.MathNode("mtext", inner);
+
+    return node;
+};
+
+groupTypes.color = function(group, options) {
+    var inner = buildExpression(group.value.value, options);
+
+    var node = new mathMLTree.MathNode("mstyle", inner);
+
+    node.setAttribute("mathcolor", group.value.color);
+
+    return node;
+};
+
+groupTypes.supsub = function(group, options) {
+    var children = [buildGroup(group.value.base, options)];
+
+    if (group.value.sub) {
+        children.push(buildGroup(group.value.sub, options));
+    }
+
+    if (group.value.sup) {
+        children.push(buildGroup(group.value.sup, options));
+    }
+
+    var nodeType;
+    if (!group.value.sub) {
+        nodeType = "msup";
+    } else if (!group.value.sup) {
+        nodeType = "msub";
+    } else {
+        nodeType = "msubsup";
+    }
+
+    var node = new mathMLTree.MathNode(nodeType, children);
+
+    return node;
+};
+
+groupTypes.genfrac = function(group, options) {
+    var node = new mathMLTree.MathNode(
+        "mfrac",
+        [buildGroup(group.value.numer, options),
+            buildGroup(group.value.denom, options)]);
+
+    if (!group.value.hasBarLine) {
+        node.setAttribute("linethickness", "0px");
+    }
+
+    if (group.value.leftDelim != null || group.value.rightDelim != null) {
+        var withDelims = [];
+
+        if (group.value.leftDelim != null) {
+            var leftOp = new mathMLTree.MathNode(
+                "mo", [new mathMLTree.TextNode(group.value.leftDelim)]);
+
+            leftOp.setAttribute("fence", "true");
+
+            withDelims.push(leftOp);
+        }
+
+        withDelims.push(node);
+
+        if (group.value.rightDelim != null) {
+            var rightOp = new mathMLTree.MathNode(
+                "mo", [new mathMLTree.TextNode(group.value.rightDelim)]);
+
+            rightOp.setAttribute("fence", "true");
+
+            withDelims.push(rightOp);
+        }
+
+        var outerNode = new mathMLTree.MathNode("mrow", withDelims);
+
+        return outerNode;
+    }
+
+    return node;
+};
+
+groupTypes.array = function(group, options) {
+    return new mathMLTree.MathNode(
+        "mtable", group.value.body.map(function(row) {
+            return new mathMLTree.MathNode(
+                "mtr", row.map(function(cell) {
+                    return new mathMLTree.MathNode(
+                        "mtd", [buildGroup(cell, options)]);
+                }));
+        }));
+};
+
+groupTypes.sqrt = function(group, options) {
+    var node;
+    if (group.value.index) {
+        node = new mathMLTree.MathNode(
+            "mroot", [
+                buildGroup(group.value.body, options),
+                buildGroup(group.value.index, options)
+            ]);
+    } else {
+        node = new mathMLTree.MathNode(
+            "msqrt", [buildGroup(group.value.body, options)]);
+    }
+
+    return node;
+};
+
+groupTypes.leftright = function(group, options) {
+    var inner = buildExpression(group.value.body, options);
+
+    if (group.value.left !== ".") {
+        var leftNode = new mathMLTree.MathNode(
+            "mo", [makeText(group.value.left, group.mode)]);
+
+        leftNode.setAttribute("fence", "true");
+
+        inner.unshift(leftNode);
+    }
+
+    if (group.value.right !== ".") {
+        var rightNode = new mathMLTree.MathNode(
+            "mo", [makeText(group.value.right, group.mode)]);
+
+        rightNode.setAttribute("fence", "true");
+
+        inner.push(rightNode);
+    }
+
+    var outerNode = new mathMLTree.MathNode("mrow", inner);
+
+    return outerNode;
+};
+
+groupTypes.middle = function(group, options) {
+    var middleNode = new mathMLTree.MathNode(
+        "mo", [makeText(group.value.middle, group.mode)]);
+    middleNode.setAttribute("fence", "true");
+    return middleNode;
+};
+
+groupTypes.accent = function(group, options) {
+    var accentNode = new mathMLTree.MathNode(
+        "mo", [makeText(group.value.accent, group.mode)]);
+
+    var node = new mathMLTree.MathNode(
+        "mover",
+        [buildGroup(group.value.base, options),
+            accentNode]);
+
+    node.setAttribute("accent", "true");
+
+    return node;
+};
+
+groupTypes.spacing = function(group) {
+    var node;
+
+    if (group.value === "\\ " || group.value === "\\space" ||
+        group.value === " " || group.value === "~") {
+        node = new mathMLTree.MathNode(
+            "mtext", [new mathMLTree.TextNode("\u00a0")]);
+    } else {
+        node = new mathMLTree.MathNode("mspace");
+
+        node.setAttribute(
+            "width", buildCommon.spacingFunctions[group.value].size);
+    }
+
+    return node;
+};
+
+groupTypes.op = function(group, options) {
+    var node;
+
+    // TODO(emily): handle big operators using the `largeop` attribute
+
+    if (group.value.symbol) {
+        // This is a symbol. Just add the symbol.
+        node = new mathMLTree.MathNode(
+            "mo", [makeText(group.value.body, group.mode)]);
+    } else if (group.value.value) {
+        // This is an operator with children. Add them.
+        node = new mathMLTree.MathNode(
+            "mo", buildExpression(group.value.value, options));
+    } else {
+        // This is a text operator. Add all of the characters from the
+        // operator's name.
+        // TODO(emily): Add a space in the middle of some of these
+        // operators, like \limsup.
+        node = new mathMLTree.MathNode(
+            "mi", [new mathMLTree.TextNode(group.value.body.slice(1))]);
+    }
+
+    return node;
+};
+
+groupTypes.mod = function(group, options) {
+    var inner = [];
+
+    if (group.value.modType === "pod" || group.value.modType === "pmod") {
+        inner.push(new mathMLTree.MathNode(
+            "mo", [makeText("(", group.mode)]));
+    }
+    if (group.value.modType !== "pod") {
+        inner.push(new mathMLTree.MathNode(
+            "mo", [makeText("mod", group.mode)]));
+    }
+    if (group.value.value) {
+        var space = new mathMLTree.MathNode("mspace");
+        space.setAttribute("width", "0.333333em");
+        inner.push(space);
+        inner = inner.concat(buildExpression(group.value.value, options));
+    }
+    if (group.value.modType === "pod" || group.value.modType === "pmod") {
+        inner.push(new mathMLTree.MathNode(
+            "mo", [makeText(")", group.mode)]));
+    }
+
+    return new mathMLTree.MathNode("mo", inner);
+};
+
+groupTypes.katex = function(group) {
+    var node = new mathMLTree.MathNode(
+        "mtext", [new mathMLTree.TextNode("KaTeX")]);
+
+    return node;
+};
+
+groupTypes.font = function(group, options) {
+    var font = group.value.font;
+    return buildGroup(group.value.body, options.withFont(font));
+};
+
+groupTypes.delimsizing = function(group) {
+    var children = [];
+
+    if (group.value.value !== ".") {
+        children.push(makeText(group.value.value, group.mode));
+    }
+
+    var node = new mathMLTree.MathNode("mo", children);
+
+    if (group.value.mclass === "mopen" ||
+        group.value.mclass === "mclose") {
+        // Only some of the delimsizing functions act as fences, and they
+        // return "mopen" or "mclose" mclass.
+        node.setAttribute("fence", "true");
+    } else {
+        // Explicitly disable fencing if it's not a fence, to override the
+        // defaults.
+        node.setAttribute("fence", "false");
+    }
+
+    return node;
+};
+
+groupTypes.styling = function(group, options) {
+    var inner = buildExpression(group.value.value, options);
+
+    var node = new mathMLTree.MathNode("mstyle", inner);
+
+    var styleAttributes = {
+        "display": ["0", "true"],
+        "text": ["0", "false"],
+        "script": ["1", "false"],
+        "scriptscript": ["2", "false"]
+    };
+
+    var attr = styleAttributes[group.value.style];
+
+    node.setAttribute("scriptlevel", attr[0]);
+    node.setAttribute("displaystyle", attr[1]);
+
+    return node;
+};
+
+groupTypes.sizing = function(group, options) {
+    var inner = buildExpression(group.value.value, options);
+
+    var node = new mathMLTree.MathNode("mstyle", inner);
+
+    // TODO(emily): This doesn't produce the correct size for nested size
+    // changes, because we don't keep state of what style we're currently
+    // in, so we can't reset the size to normal before changing it.  Now
+    // that we're passing an options parameter we should be able to fix
+    // this.
+    node.setAttribute(
+        "mathsize", buildCommon.sizingMultiplier[group.value.size] + "em");
+
+    return node;
+};
+
+groupTypes.overline = function(group, options) {
+    var operator = new mathMLTree.MathNode(
+        "mo", [new mathMLTree.TextNode("\u203e")]);
+    operator.setAttribute("stretchy", "true");
+
+    var node = new mathMLTree.MathNode(
+        "mover",
+        [buildGroup(group.value.body, options),
+            operator]);
+    node.setAttribute("accent", "true");
+
+    return node;
+};
+
+groupTypes.underline = function(group, options) {
+    var operator = new mathMLTree.MathNode(
+        "mo", [new mathMLTree.TextNode("\u203e")]);
+    operator.setAttribute("stretchy", "true");
+
+    var node = new mathMLTree.MathNode(
+        "munder",
+        [buildGroup(group.value.body, options),
+            operator]);
+    node.setAttribute("accentunder", "true");
+
+    return node;
+};
+
+groupTypes.rule = function(group) {
+    // TODO(emily): Figure out if there's an actual way to draw black boxes
+    // in MathML.
+    var node = new mathMLTree.MathNode("mrow");
+
+    return node;
+};
+
+groupTypes.kern = function(group) {
+    // TODO(kevin): Figure out if there's a way to add space in MathML
+    var node = new mathMLTree.MathNode("mrow");
+
+    return node;
+};
+
+groupTypes.llap = function(group, options) {
+    var node = new mathMLTree.MathNode(
+        "mpadded", [buildGroup(group.value.body, options)]);
+
+    node.setAttribute("lspace", "-1width");
+    node.setAttribute("width", "0px");
+
+    return node;
+};
+
+groupTypes.rlap = function(group, options) {
+    var node = new mathMLTree.MathNode(
+        "mpadded", [buildGroup(group.value.body, options)]);
+
+    node.setAttribute("width", "0px");
+
+    return node;
+};
+
+groupTypes.phantom = function(group, options) {
+    var inner = buildExpression(group.value.value, options);
+    return new mathMLTree.MathNode("mphantom", inner);
+};
+
+groupTypes.mclass = function(group, options) {
+    var inner = buildExpression(group.value.value, options);
+    return new mathMLTree.MathNode("mstyle", inner);
+};
+
+/**
+ * Takes a list of nodes, builds them, and returns a list of the generated
+ * MathML nodes. A little simpler than the HTML version because we don't do any
+ * previous-node handling.
+ */
+var buildExpression = function(expression, options) {
+    var groups = [];
+    for (var i = 0; i < expression.length; i++) {
+        var group = expression[i];
+        groups.push(buildGroup(group, options));
+    }
+    return groups;
+};
+
+/**
+ * Takes a group from the parser and calls the appropriate groupTypes function
+ * on it to produce a MathML node.
+ */
+var buildGroup = function(group, options) {
+    if (!group) {
+        return new mathMLTree.MathNode("mrow");
+    }
+
+    if (groupTypes[group.type]) {
+        // Call the groupTypes function
+        return groupTypes[group.type](group, options);
+    } else {
+        throw new ParseError(
+            "Got group of unknown type: '" + group.type + "'");
+    }
+};
+
+/**
+ * Takes a full parse tree and settings and builds a MathML representation of
+ * it. In particular, we put the elements from building the parse tree into a
+ * <semantics> tag so we can also include that TeX source as an annotation.
+ *
+ * Note that we actually return a domTree element with a `<math>` inside it so
+ * we can do appropriate styling.
+ */
+var buildMathML = function(tree, texExpression, options) {
+    var expression = buildExpression(tree, options);
+
+    // Wrap up the expression in an mrow so it is presented in the semantics
+    // tag correctly.
+    var wrapper = new mathMLTree.MathNode("mrow", expression);
+
+    // Build a TeX annotation of the source
+    var annotation = new mathMLTree.MathNode(
+        "annotation", [new mathMLTree.TextNode(texExpression)]);
+
+    annotation.setAttribute("encoding", "application/x-tex");
+
+    var semantics = new mathMLTree.MathNode(
+        "semantics", [wrapper, annotation]);
+
+    var math = new mathMLTree.MathNode("math", [semantics]);
+
+    // You can't style <math> nodes, so we wrap the node in a span.
+    return makeSpan(["katex-mathml"], [math]);
+};
+
+module.exports = buildMathML;
+
+},{"./ParseError":6,"./buildCommon":10,"./fontMetrics":17,"./mathMLTree":20,"./symbols":23,"./utils":25}],13:[function(require,module,exports){
+var buildHTML = require("./buildHTML");
+var buildMathML = require("./buildMathML");
+var buildCommon = require("./buildCommon");
+var Options = require("./Options");
+var Settings = require("./Settings");
+var Style = require("./Style");
+
+var makeSpan = buildCommon.makeSpan;
+
+var buildTree = function(tree, expression, settings) {
+    settings = settings || new Settings({});
+
+    var startStyle = Style.TEXT;
+    if (settings.displayMode) {
+        startStyle = Style.DISPLAY;
+    }
+
+    // Setup the default options
+    var options = new Options({
+        style: startStyle,
+        size: "size5"
+    });
+
+    // `buildHTML` sometimes messes with the parse tree (like turning bins ->
+    // ords), so we build the MathML version first.
+    var mathMLNode = buildMathML(tree, expression, options);
+    var htmlNode = buildHTML(tree, options);
+
+    var katexNode = makeSpan(["katex"], [
+        mathMLNode, htmlNode
+    ]);
+
+    if (settings.displayMode) {
+        return makeSpan(["katex-display"], [katexNode]);
+    } else {
+        return katexNode;
+    }
+};
+
+module.exports = buildTree;
+
+},{"./Options":5,"./Settings":8,"./Style":9,"./buildCommon":10,"./buildHTML":11,"./buildMathML":12}],14:[function(require,module,exports){
+/**
+ * This file deals with creating delimiters of various sizes. The TeXbook
+ * discusses these routines on page 441-442, in the "Another subroutine sets box
+ * x to a specified variable delimiter" paragraph.
+ *
+ * There are three main routines here. `makeSmallDelim` makes a delimiter in the
+ * normal font, but in either text, script, or scriptscript style.
+ * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,
+ * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of
+ * smaller pieces that are stacked on top of one another.
+ *
+ * The functions take a parameter `center`, which determines if the delimiter
+ * should be centered around the axis.
+ *
+ * Then, there are three exposed functions. `sizedDelim` makes a delimiter in
+ * one of the given sizes. This is used for things like `\bigl`.
+ * `customSizedDelim` makes a delimiter with a given total height+depth. It is
+ * called in places like `\sqrt`. `leftRightDelim` makes an appropriate
+ * delimiter which surrounds an expression of a given height an depth. It is
+ * used in `\left` and `\right`.
+ */
+
+var ParseError = require("./ParseError");
+var Style = require("./Style");
+
+var buildCommon = require("./buildCommon");
+var fontMetrics = require("./fontMetrics");
+var symbols = require("./symbols");
+var utils = require("./utils");
+
+var makeSpan = buildCommon.makeSpan;
+
+/**
+ * Get the metrics for a given symbol and font, after transformation (i.e.
+ * after following replacement from symbols.js)
+ */
+var getMetrics = function(symbol, font) {
+    if (symbols.math[symbol] && symbols.math[symbol].replace) {
+        return fontMetrics.getCharacterMetrics(
+            symbols.math[symbol].replace, font);
+    } else {
+        return fontMetrics.getCharacterMetrics(
+            symbol, font);
+    }
+};
+
+/**
+ * Builds a symbol in the given font size (note size is an integer)
+ */
+var mathrmSize = function(value, size, mode, options) {
+    return buildCommon.makeSymbol(value, "Size" + size + "-Regular",
+        mode, options);
+};
+
+/**
+ * Puts a delimiter span in a given style, and adds appropriate height, depth,
+ * and maxFontSizes.
+ */
+var styleWrap = function(delim, toStyle, options, classes) {
+    classes = classes || [];
+    var span = makeSpan(
+        classes.concat(["style-wrap", options.style.reset(), toStyle.cls()]),
+        [delim], options);
+
+    var multiplier = toStyle.sizeMultiplier / options.style.sizeMultiplier;
+
+    span.height *= multiplier;
+    span.depth *= multiplier;
+    span.maxFontSize = toStyle.sizeMultiplier;
+
+    return span;
+};
+
+/**
+ * Makes a small delimiter. This is a delimiter that comes in the Main-Regular
+ * font, but is restyled to either be in textstyle, scriptstyle, or
+ * scriptscriptstyle.
+ */
+var makeSmallDelim = function(delim, style, center, options, mode, classes) {
+    var text = buildCommon.makeSymbol(delim, "Main-Regular", mode, options);
+
+    var span = styleWrap(text, style, options, classes);
+
+    if (center) {
+        var shift =
+            (1 - options.style.sizeMultiplier / style.sizeMultiplier) *
+            options.style.metrics.axisHeight;
+
+        span.style.top = shift + "em";
+        span.height -= shift;
+        span.depth += shift;
+    }
+
+    return span;
+};
+
+/**
+ * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,
+ * Size3, or Size4 fonts. It is always rendered in textstyle.
+ */
+var makeLargeDelim = function(delim, size, center, options, mode, classes) {
+    var inner = mathrmSize(delim, size, mode, options);
+
+    var span = styleWrap(
+        makeSpan(["delimsizing", "size" + size], [inner], options),
+        Style.TEXT, options, classes);
+
+    if (center) {
+        var shift = (1 - options.style.sizeMultiplier) *
+            options.style.metrics.axisHeight;
+
+        span.style.top = shift + "em";
+        span.height -= shift;
+        span.depth += shift;
+    }
+
+    return span;
+};
+
+/**
+ * Make an inner span with the given offset and in the given font. This is used
+ * in `makeStackedDelim` to make the stacking pieces for the delimiter.
+ */
+var makeInner = function(symbol, font, mode) {
+    var sizeClass;
+    // Apply the correct CSS class to choose the right font.
+    if (font === "Size1-Regular") {
+        sizeClass = "delim-size1";
+    } else if (font === "Size4-Regular") {
+        sizeClass = "delim-size4";
+    }
+
+    var inner = makeSpan(
+        ["delimsizinginner", sizeClass],
+        [makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]);
+
+    // Since this will be passed into `makeVList` in the end, wrap the element
+    // in the appropriate tag that VList uses.
+    return {type: "elem", elem: inner};
+};
+
+/**
+ * Make a stacked delimiter out of a given delimiter, with the total height at
+ * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.
+ */
+var makeStackedDelim = function(delim, heightTotal, center, options, mode,
+                                classes) {
+    // There are four parts, the top, an optional middle, a repeated part, and a
+    // bottom.
+    var top;
+    var middle;
+    var repeat;
+    var bottom;
+    top = repeat = bottom = delim;
+    middle = null;
+    // Also keep track of what font the delimiters are in
+    var font = "Size1-Regular";
+
+    // We set the parts and font based on the symbol. Note that we use
+    // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the
+    // repeats of the arrows
+    if (delim === "\\uparrow") {
+        repeat = bottom = "\u23d0";
+    } else if (delim === "\\Uparrow") {
+        repeat = bottom = "\u2016";
+    } else if (delim === "\\downarrow") {
+        top = repeat = "\u23d0";
+    } else if (delim === "\\Downarrow") {
+        top = repeat = "\u2016";
+    } else if (delim === "\\updownarrow") {
+        top = "\\uparrow";
+        repeat = "\u23d0";
+        bottom = "\\downarrow";
+    } else if (delim === "\\Updownarrow") {
+        top = "\\Uparrow";
+        repeat = "\u2016";
+        bottom = "\\Downarrow";
+    } else if (delim === "[" || delim === "\\lbrack") {
+        top = "\u23a1";
+        repeat = "\u23a2";
+        bottom = "\u23a3";
+        font = "Size4-Regular";
+    } else if (delim === "]" || delim === "\\rbrack") {
+        top = "\u23a4";
+        repeat = "\u23a5";
+        bottom = "\u23a6";
+        font = "Size4-Regular";
+    } else if (delim === "\\lfloor") {
+        repeat = top = "\u23a2";
+        bottom = "\u23a3";
+        font = "Size4-Regular";
+    } else if (delim === "\\lceil") {
+        top = "\u23a1";
+        repeat = bottom = "\u23a2";
+        font = "Size4-Regular";
+    } else if (delim === "\\rfloor") {
+        repeat = top = "\u23a5";
+        bottom = "\u23a6";
+        font = "Size4-Regular";
+    } else if (delim === "\\rceil") {
+        top = "\u23a4";
+        repeat = bottom = "\u23a5";
+        font = "Size4-Regular";
+    } else if (delim === "(") {
+        top = "\u239b";
+        repeat = "\u239c";
+        bottom = "\u239d";
+        font = "Size4-Regular";
+    } else if (delim === ")") {
+        top = "\u239e";
+        repeat = "\u239f";
+        bottom = "\u23a0";
+        font = "Size4-Regular";
+    } else if (delim === "\\{" || delim === "\\lbrace") {
+        top = "\u23a7";
+        middle = "\u23a8";
+        bottom = "\u23a9";
+        repeat = "\u23aa";
+        font = "Size4-Regular";
+    } else if (delim === "\\}" || delim === "\\rbrace") {
+        top = "\u23ab";
+        middle = "\u23ac";
+        bottom = "\u23ad";
+        repeat = "\u23aa";
+        font = "Size4-Regular";
+    } else if (delim === "\\lgroup") {
+        top = "\u23a7";
+        bottom = "\u23a9";
+        repeat = "\u23aa";
+        font = "Size4-Regular";
+    } else if (delim === "\\rgroup") {
+        top = "\u23ab";
+        bottom = "\u23ad";
+        repeat = "\u23aa";
+        font = "Size4-Regular";
+    } else if (delim === "\\lmoustache") {
+        top = "\u23a7";
+        bottom = "\u23ad";
+        repeat = "\u23aa";
+        font = "Size4-Regular";
+    } else if (delim === "\\rmoustache") {
+        top = "\u23ab";
+        bottom = "\u23a9";
+        repeat = "\u23aa";
+        font = "Size4-Regular";
+    } else if (delim === "\\surd") {
+        top = "\ue001";
+        bottom = "\u23b7";
+        repeat = "\ue000";
+        font = "Size4-Regular";
+    }
+
+    // Get the metrics of the four sections
+    var topMetrics = getMetrics(top, font);
+    var topHeightTotal = topMetrics.height + topMetrics.depth;
+    var repeatMetrics = getMetrics(repeat, font);
+    var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;
+    var bottomMetrics = getMetrics(bottom, font);
+    var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;
+    var middleHeightTotal = 0;
+    var middleFactor = 1;
+    if (middle !== null) {
+        var middleMetrics = getMetrics(middle, font);
+        middleHeightTotal = middleMetrics.height + middleMetrics.depth;
+        middleFactor = 2; // repeat symmetrically above and below middle
+    }
+
+    // Calcuate the minimal height that the delimiter can have.
+    // It is at least the size of the top, bottom, and optional middle combined.
+    var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;
+
+    // Compute the number of copies of the repeat symbol we will need
+    var repeatCount = Math.ceil(
+        (heightTotal - minHeight) / (middleFactor * repeatHeightTotal));
+
+    // Compute the total height of the delimiter including all the symbols
+    var realHeightTotal =
+        minHeight + repeatCount * middleFactor * repeatHeightTotal;
+
+    // The center of the delimiter is placed at the center of the axis. Note
+    // that in this context, "center" means that the delimiter should be
+    // centered around the axis in the current style, while normally it is
+    // centered around the axis in textstyle.
+    var axisHeight = options.style.metrics.axisHeight;
+    if (center) {
+        axisHeight *= options.style.sizeMultiplier;
+    }
+    // Calculate the depth
+    var depth = realHeightTotal / 2 - axisHeight;
+
+    // Now, we start building the pieces that will go into the vlist
+
+    // Keep a list of the inner pieces
+    var inners = [];
+
+    // Add the bottom symbol
+    inners.push(makeInner(bottom, font, mode));
+
+    var i;
+    if (middle === null) {
+        // Add that many symbols
+        for (i = 0; i < repeatCount; i++) {
+            inners.push(makeInner(repeat, font, mode));
+        }
+    } else {
+        // When there is a middle bit, we need the middle part and two repeated
+        // sections
+        for (i = 0; i < repeatCount; i++) {
+            inners.push(makeInner(repeat, font, mode));
+        }
+        inners.push(makeInner(middle, font, mode));
+        for (i = 0; i < repeatCount; i++) {
+            inners.push(makeInner(repeat, font, mode));
+        }
+    }
+
+    // Add the top symbol
+    inners.push(makeInner(top, font, mode));
+
+    // Finally, build the vlist
+    var inner = buildCommon.makeVList(inners, "bottom", depth, options);
+
+    return styleWrap(
+        makeSpan(["delimsizing", "mult"], [inner], options),
+        Style.TEXT, options, classes);
+};
+
+// There are three kinds of delimiters, delimiters that stack when they become
+// too large
+var stackLargeDelimiters = [
+    "(", ")", "[", "\\lbrack", "]", "\\rbrack",
+    "\\{", "\\lbrace", "\\}", "\\rbrace",
+    "\\lfloor", "\\rfloor", "\\lceil", "\\rceil",
+    "\\surd"
+];
+
+// delimiters that always stack
+var stackAlwaysDelimiters = [
+    "\\uparrow", "\\downarrow", "\\updownarrow",
+    "\\Uparrow", "\\Downarrow", "\\Updownarrow",
+    "|", "\\|", "\\vert", "\\Vert",
+    "\\lvert", "\\rvert", "\\lVert", "\\rVert",
+    "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache"
+];
+
+// and delimiters that never stack
+var stackNeverDelimiters = [
+    "<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"
+];
+
+// Metrics of the different sizes. Found by looking at TeX's output of
+// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$
+// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.
+var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];
+
+/**
+ * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.
+ */
+var makeSizedDelim = function(delim, size, options, mode, classes) {
+    // < and > turn into \langle and \rangle in delimiters
+    if (delim === "<" || delim === "\\lt") {
+        delim = "\\langle";
+    } else if (delim === ">" || delim === "\\gt") {
+        delim = "\\rangle";
+    }
+
+    // Sized delimiters are never centered.
+    if (utils.contains(stackLargeDelimiters, delim) ||
+        utils.contains(stackNeverDelimiters, delim)) {
+        return makeLargeDelim(delim, size, false, options, mode, classes);
+    } else if (utils.contains(stackAlwaysDelimiters, delim)) {
+        return makeStackedDelim(
+            delim, sizeToMaxHeight[size], false, options, mode, classes);
+    } else {
+        throw new ParseError("Illegal delimiter: '" + delim + "'");
+    }
+};
+
+/**
+ * There are three different sequences of delimiter sizes that the delimiters
+ * follow depending on the kind of delimiter. This is used when creating custom
+ * sized delimiters to decide whether to create a small, large, or stacked
+ * delimiter.
+ *
+ * In real TeX, these sequences aren't explicitly defined, but are instead
+ * defined inside the font metrics. Since there are only three sequences that
+ * are possible for the delimiters that TeX defines, it is easier to just encode
+ * them explicitly here.
+ */
+
+// Delimiters that never stack try small delimiters and large delimiters only
+var stackNeverDelimiterSequence = [
+    {type: "small", style: Style.SCRIPTSCRIPT},
+    {type: "small", style: Style.SCRIPT},
+    {type: "small", style: Style.TEXT},
+    {type: "large", size: 1},
+    {type: "large", size: 2},
+    {type: "large", size: 3},
+    {type: "large", size: 4}
+];
+
+// Delimiters that always stack try the small delimiters first, then stack
+var stackAlwaysDelimiterSequence = [
+    {type: "small", style: Style.SCRIPTSCRIPT},
+    {type: "small", style: Style.SCRIPT},
+    {type: "small", style: Style.TEXT},
+    {type: "stack"}
+];
+
+// Delimiters that stack when large try the small and then large delimiters, and
+// stack afterwards
+var stackLargeDelimiterSequence = [
+    {type: "small", style: Style.SCRIPTSCRIPT},
+    {type: "small", style: Style.SCRIPT},
+    {type: "small", style: Style.TEXT},
+    {type: "large", size: 1},
+    {type: "large", size: 2},
+    {type: "large", size: 3},
+    {type: "large", size: 4},
+    {type: "stack"}
+];
+
+/**
+ * Get the font used in a delimiter based on what kind of delimiter it is.
+ */
+var delimTypeToFont = function(type) {
+    if (type.type === "small") {
+        return "Main-Regular";
+    } else if (type.type === "large") {
+        return "Size" + type.size + "-Regular";
+    } else if (type.type === "stack") {
+        return "Size4-Regular";
+    }
+};
+
+/**
+ * Traverse a sequence of types of delimiters to decide what kind of delimiter
+ * should be used to create a delimiter of the given height+depth.
+ */
+var traverseSequence = function(delim, height, sequence, options) {
+    // Here, we choose the index we should start at in the sequences. In smaller
+    // sizes (which correspond to larger numbers in style.size) we start earlier
+    // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts
+    // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2
+    var start = Math.min(2, 3 - options.style.size);
+    for (var i = start; i < sequence.length; i++) {
+        if (sequence[i].type === "stack") {
+            // This is always the last delimiter, so we just break the loop now.
+            break;
+        }
+
+        var metrics = getMetrics(delim, delimTypeToFont(sequence[i]));
+        var heightDepth = metrics.height + metrics.depth;
+
+        // Small delimiters are scaled down versions of the same font, so we
+        // account for the style change size.
+
+        if (sequence[i].type === "small") {
+            heightDepth *= sequence[i].style.sizeMultiplier;
+        }
+
+        // Check if the delimiter at this size works for the given height.
+        if (heightDepth > height) {
+            return sequence[i];
+        }
+    }
+
+    // If we reached the end of the sequence, return the last sequence element.
+    return sequence[sequence.length - 1];
+};
+
+/**
+ * Make a delimiter of a given height+depth, with optional centering. Here, we
+ * traverse the sequences, and create a delimiter that the sequence tells us to.
+ */
+var makeCustomSizedDelim = function(delim, height, center, options, mode,
+                                    classes) {
+    if (delim === "<" || delim === "\\lt") {
+        delim = "\\langle";
+    } else if (delim === ">" || delim === "\\gt") {
+        delim = "\\rangle";
+    }
+
+    // Decide what sequence to use
+    var sequence;
+    if (utils.contains(stackNeverDelimiters, delim)) {
+        sequence = stackNeverDelimiterSequence;
+    } else if (utils.contains(stackLargeDelimiters, delim)) {
+        sequence = stackLargeDelimiterSequence;
+    } else {
+        sequence = stackAlwaysDelimiterSequence;
+    }
+
+    // Look through the sequence
+    var delimType = traverseSequence(delim, height, sequence, options);
+
+    // Depending on the sequence element we decided on, call the appropriate
+    // function.
+    if (delimType.type === "small") {
+        return makeSmallDelim(delim, delimType.style, center, options, mode,
+                              classes);
+    } else if (delimType.type === "large") {
+        return makeLargeDelim(delim, delimType.size, center, options, mode,
+                              classes);
+    } else if (delimType.type === "stack") {
+        return makeStackedDelim(delim, height, center, options, mode, classes);
+    }
+};
+
+/**
+ * Make a delimiter for use with `\left` and `\right`, given a height and depth
+ * of an expression that the delimiters surround.
+ */
+var makeLeftRightDelim = function(delim, height, depth, options, mode,
+                                  classes) {
+    // We always center \left/\right delimiters, so the axis is always shifted
+    var axisHeight =
+        options.style.metrics.axisHeight * options.style.sizeMultiplier;
+
+    // Taken from TeX source, tex.web, function make_left_right
+    var delimiterFactor = 901;
+    var delimiterExtend = 5.0 / fontMetrics.metrics.ptPerEm;
+
+    var maxDistFromAxis = Math.max(
+        height - axisHeight, depth + axisHeight);
+
+    var totalHeight = Math.max(
+        // In real TeX, calculations are done using integral values which are
+        // 65536 per pt, or 655360 per em. So, the division here truncates in
+        // TeX but doesn't here, producing different results. If we wanted to
+        // exactly match TeX's calculation, we could do
+        //   Math.floor(655360 * maxDistFromAxis / 500) *
+        //    delimiterFactor / 655360
+        // (To see the difference, compare
+        //    x^{x^{\left(\rule{0.1em}{0.68em}\right)}}
+        // in TeX and KaTeX)
+        maxDistFromAxis / 500 * delimiterFactor,
+        2 * maxDistFromAxis - delimiterExtend);
+
+    // Finally, we defer to `makeCustomSizedDelim` with our calculated total
+    // height
+    return makeCustomSizedDelim(delim, totalHeight, true, options, mode,
+                                classes);
+};
+
+module.exports = {
+    sizedDelim: makeSizedDelim,
+    customSizedDelim: makeCustomSizedDelim,
+    leftRightDelim: makeLeftRightDelim
+};
+
+},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./fontMetrics":17,"./symbols":23,"./utils":25}],15:[function(require,module,exports){
+/**
+ * These objects store the data about the DOM nodes we create, as well as some
+ * extra data. They can then be transformed into real DOM nodes with the
+ * `toNode` function or HTML markup using `toMarkup`. They are useful for both
+ * storing extra properties on the nodes, as well as providing a way to easily
+ * work with the DOM.
+ *
+ * Similar functions for working with MathML nodes exist in mathMLTree.js.
+ */
+var unicodeRegexes = require("./unicodeRegexes");
+var utils = require("./utils");
+
+/**
+ * Create an HTML className based on a list of classes. In addition to joining
+ * with spaces, we also remove null or empty classes.
+ */
+var createClass = function(classes) {
+    classes = classes.slice();
+    for (var i = classes.length - 1; i >= 0; i--) {
+        if (!classes[i]) {
+            classes.splice(i, 1);
+        }
+    }
+
+    return classes.join(" ");
+};
+
+/**
+ * This node represents a span node, with a className, a list of children, and
+ * an inline style. It also contains information about its height, depth, and
+ * maxFontSize.
+ */
+function span(classes, children, options) {
+    this.classes = classes || [];
+    this.children = children || [];
+    this.height = 0;
+    this.depth = 0;
+    this.maxFontSize = 0;
+    this.style = {};
+    this.attributes = {};
+    if (options) {
+        if (options.style.isTight()) {
+            this.classes.push("mtight");
+        }
+        if (options.getColor()) {
+            this.style.color = options.getColor();
+        }
+    }
+}
+
+/**
+ * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all
+ * browsers support attributes the same, and having too many custom attributes
+ * is probably bad.
+ */
+span.prototype.setAttribute = function(attribute, value) {
+    this.attributes[attribute] = value;
+};
+
+span.prototype.tryCombine = function(sibling) {
+    return false;
+};
+
+/**
+ * Convert the span into an HTML node
+ */
+span.prototype.toNode = function() {
+    var span = document.createElement("span");
+
+    // Apply the class
+    span.className = createClass(this.classes);
+
+    // Apply inline styles
+    for (var style in this.style) {
+        if (Object.prototype.hasOwnProperty.call(this.style, style)) {
+            span.style[style] = this.style[style];
+        }
+    }
+
+    // Apply attributes
+    for (var attr in this.attributes) {
+        if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+            span.setAttribute(attr, this.attributes[attr]);
+        }
+    }
+
+    // Append the children, also as HTML nodes
+    for (var i = 0; i < this.children.length; i++) {
+        span.appendChild(this.children[i].toNode());
+    }
+
+    return span;
+};
+
+/**
+ * Convert the span into an HTML markup string
+ */
+span.prototype.toMarkup = function() {
+    var markup = "<span";
+
+    // Add the class
+    if (this.classes.length) {
+        markup += " class=\"";
+        markup += utils.escape(createClass(this.classes));
+        markup += "\"";
+    }
+
+    var styles = "";
+
+    // Add the styles, after hyphenation
+    for (var style in this.style) {
+        if (this.style.hasOwnProperty(style)) {
+            styles += utils.hyphenate(style) + ":" + this.style[style] + ";";
+        }
+    }
+
+    if (styles) {
+        markup += " style=\"" + utils.escape(styles) + "\"";
+    }
+
+    // Add the attributes
+    for (var attr in this.attributes) {
+        if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+            markup += " " + attr + "=\"";
+            markup += utils.escape(this.attributes[attr]);
+            markup += "\"";
+        }
+    }
+
+    markup += ">";
+
+    // Add the markup of the children, also as markup
+    for (var i = 0; i < this.children.length; i++) {
+        markup += this.children[i].toMarkup();
+    }
+
+    markup += "</span>";
+
+    return markup;
+};
+
+/**
+ * This node represents a document fragment, which contains elements, but when
+ * placed into the DOM doesn't have any representation itself. Thus, it only
+ * contains children and doesn't have any HTML properties. It also keeps track
+ * of a height, depth, and maxFontSize.
+ */
+function documentFragment(children) {
+    this.children = children || [];
+    this.height = 0;
+    this.depth = 0;
+    this.maxFontSize = 0;
+}
+
+/**
+ * Convert the fragment into a node
+ */
+documentFragment.prototype.toNode = function() {
+    // Create a fragment
+    var frag = document.createDocumentFragment();
+
+    // Append the children
+    for (var i = 0; i < this.children.length; i++) {
+        frag.appendChild(this.children[i].toNode());
+    }
+
+    return frag;
+};
+
+/**
+ * Convert the fragment into HTML markup
+ */
+documentFragment.prototype.toMarkup = function() {
+    var markup = "";
+
+    // Simply concatenate the markup for the children together
+    for (var i = 0; i < this.children.length; i++) {
+        markup += this.children[i].toMarkup();
+    }
+
+    return markup;
+};
+
+var iCombinations = {
+    'î': '\u0131\u0302',
+    'ï': '\u0131\u0308',
+    'í': '\u0131\u0301',
+    // 'Ä«': '\u0131\u0304', // enable when we add Extended Latin
+    'ì': '\u0131\u0300'
+};
+
+/**
+ * A symbol node contains information about a single symbol. It either renders
+ * to a single text node, or a span with a single text node in it, depending on
+ * whether it has CSS classes, styles, or needs italic correction.
+ */
+function symbolNode(value, height, depth, italic, skew, classes, style) {
+    this.value = value || "";
+    this.height = height || 0;
+    this.depth = depth || 0;
+    this.italic = italic || 0;
+    this.skew = skew || 0;
+    this.classes = classes || [];
+    this.style = style || {};
+    this.maxFontSize = 0;
+
+    // Mark CJK characters with specific classes so that we can specify which
+    // fonts to use.  This allows us to render these characters with a serif
+    // font in situations where the browser would either default to a sans serif
+    // or render a placeholder character.
+    if (unicodeRegexes.cjkRegex.test(value)) {
+        // I couldn't find any fonts that contained Hangul as well as all of
+        // the other characters we wanted to test there for it gets its own
+        // CSS class.
+        if (unicodeRegexes.hangulRegex.test(value)) {
+            this.classes.push('hangul_fallback');
+        } else {
+            this.classes.push('cjk_fallback');
+        }
+    }
+
+    if (/[îïíì]/.test(this.value)) {    // add ī when we add Extended Latin
+        this.value = iCombinations[this.value];
+    }
+}
+
+symbolNode.prototype.tryCombine = function(sibling) {
+    if (!sibling
+        || !(sibling instanceof symbolNode)
+        || this.italic > 0
+        || createClass(this.classes) !== createClass(sibling.classes)
+        || this.skew !== sibling.skew
+        || this.maxFontSize !== sibling.maxFontSize) {
+        return false;
+    }
+    for (var style in this.style) {
+        if (this.style.hasOwnProperty(style)
+            && this.style[style] !== sibling.style[style]) {
+            return false;
+        }
+    }
+    for (style in sibling.style) {
+        if (sibling.style.hasOwnProperty(style)
+            && this.style[style] !== sibling.style[style]) {
+            return false;
+        }
+    }
+    this.value += sibling.value;
+    this.height = Math.max(this.height, sibling.height);
+    this.depth = Math.max(this.depth, sibling.depth);
+    this.italic = sibling.italic;
+    return true;
+};
+
+/**
+ * Creates a text node or span from a symbol node. Note that a span is only
+ * created if it is needed.
+ */
+symbolNode.prototype.toNode = function() {
+    var node = document.createTextNode(this.value);
+    var span = null;
+
+    if (this.italic > 0) {
+        span = document.createElement("span");
+        span.style.marginRight = this.italic + "em";
+    }
+
+    if (this.classes.length > 0) {
+        span = span || document.createElement("span");
+        span.className = createClass(this.classes);
+    }
+
+    for (var style in this.style) {
+        if (this.style.hasOwnProperty(style)) {
+            span = span || document.createElement("span");
+            span.style[style] = this.style[style];
+        }
+    }
+
+    if (span) {
+        span.appendChild(node);
+        return span;
+    } else {
+        return node;
+    }
+};
+
+/**
+ * Creates markup for a symbol node.
+ */
+symbolNode.prototype.toMarkup = function() {
+    // TODO(alpert): More duplication than I'd like from
+    // span.prototype.toMarkup and symbolNode.prototype.toNode...
+    var needsSpan = false;
+
+    var markup = "<span";
+
+    if (this.classes.length) {
+        needsSpan = true;
+        markup += " class=\"";
+        markup += utils.escape(createClass(this.classes));
+        markup += "\"";
+    }
+
+    var styles = "";
+
+    if (this.italic > 0) {
+        styles += "margin-right:" + this.italic + "em;";
+    }
+    for (var style in this.style) {
+        if (this.style.hasOwnProperty(style)) {
+            styles += utils.hyphenate(style) + ":" + this.style[style] + ";";
+        }
+    }
+
+    if (styles) {
+        needsSpan = true;
+        markup += " style=\"" + utils.escape(styles) + "\"";
+    }
+
+    var escaped = utils.escape(this.value);
+    if (needsSpan) {
+        markup += ">";
+        markup += escaped;
+        markup += "</span>";
+        return markup;
+    } else {
+        return escaped;
+    }
+};
+
+module.exports = {
+    span: span,
+    documentFragment: documentFragment,
+    symbolNode: symbolNode
+};
+
+},{"./unicodeRegexes":24,"./utils":25}],16:[function(require,module,exports){
+/* eslint no-constant-condition:0 */
+var parseData = require("./parseData");
+var ParseError = require("./ParseError");
+var Style = require("./Style");
+
+var ParseNode = parseData.ParseNode;
+
+/**
+ * Parse the body of the environment, with rows delimited by \\ and
+ * columns delimited by &, and create a nested list in row-major order
+ * with one group per cell.
+ */
+function parseArray(parser, result) {
+    var row = [];
+    var body = [row];
+    var rowGaps = [];
+    while (true) {
+        var cell = parser.parseExpression(false, null);
+        row.push(new ParseNode("ordgroup", cell, parser.mode));
+        var next = parser.nextToken.text;
+        if (next === "&") {
+            parser.consume();
+        } else if (next === "\\end") {
+            break;
+        } else if (next === "\\\\" || next === "\\cr") {
+            var cr = parser.parseFunction();
+            rowGaps.push(cr.value.size);
+            row = [];
+            body.push(row);
+        } else {
+            throw new ParseError("Expected & or \\\\ or \\end",
+                                 parser.nextToken);
+        }
+    }
+    result.body = body;
+    result.rowGaps = rowGaps;
+    return new ParseNode(result.type, result, parser.mode);
+}
+
+/*
+ * An environment definition is very similar to a function definition:
+ * it is declared with a name or a list of names, a set of properties
+ * and a handler containing the actual implementation.
+ *
+ * The properties include:
+ *  - numArgs: The number of arguments after the \begin{name} function.
+ *  - argTypes: (optional) Just like for a function
+ *  - allowedInText: (optional) Whether or not the environment is allowed inside
+ *                   text mode (default false) (not enforced yet)
+ *  - numOptionalArgs: (optional) Just like for a function
+ * A bare number instead of that object indicates the numArgs value.
+ *
+ * The handler function will receive two arguments
+ *  - context: information and references provided by the parser
+ *  - args: an array of arguments passed to \begin{name}
+ * The context contains the following properties:
+ *  - envName: the name of the environment, one of the listed names.
+ *  - parser: the parser object
+ *  - lexer: the lexer object
+ *  - positions: the positions associated with these arguments from args.
+ * The handler must return a ParseResult.
+ */
+
+function defineEnvironment(names, props, handler) {
+    if (typeof names === "string") {
+        names = [names];
+    }
+    if (typeof props === "number") {
+        props = { numArgs: props };
+    }
+    // Set default values of environments
+    var data = {
+        numArgs: props.numArgs || 0,
+        argTypes: props.argTypes,
+        greediness: 1,
+        allowedInText: !!props.allowedInText,
+        numOptionalArgs: props.numOptionalArgs || 0,
+        handler: handler
+    };
+    for (var i = 0; i < names.length; ++i) {
+        module.exports[names[i]] = data;
+    }
+}
+
+// Arrays are part of LaTeX, defined in lttab.dtx so its documentation
+// is part of the source2e.pdf file of LaTeX2e source documentation.
+defineEnvironment("array", {
+    numArgs: 1
+}, function(context, args) {
+    var colalign = args[0];
+    colalign = colalign.value.map ? colalign.value : [colalign];
+    var cols = colalign.map(function(node) {
+        var ca = node.value;
+        if ("lcr".indexOf(ca) !== -1) {
+            return {
+                type: "align",
+                align: ca
+            };
+        } else if (ca === "|") {
+            return {
+                type: "separator",
+                separator: "|"
+            };
+        }
+        throw new ParseError(
+            "Unknown column alignment: " + node.value,
+            node);
+    });
+    var res = {
+        type: "array",
+        cols: cols,
+        hskipBeforeAndAfter: true // \@preamble in lttab.dtx
+    };
+    res = parseArray(context.parser, res);
+    return res;
+});
+
+// The matrix environments of amsmath builds on the array environment
+// of LaTeX, which is discussed above.
+defineEnvironment([
+    "matrix",
+    "pmatrix",
+    "bmatrix",
+    "Bmatrix",
+    "vmatrix",
+    "Vmatrix"
+], {
+}, function(context) {
+    var delimiters = {
+        "matrix": null,
+        "pmatrix": ["(", ")"],
+        "bmatrix": ["[", "]"],
+        "Bmatrix": ["\\{", "\\}"],
+        "vmatrix": ["|", "|"],
+        "Vmatrix": ["\\Vert", "\\Vert"]
+    }[context.envName];
+    var res = {
+        type: "array",
+        hskipBeforeAndAfter: false // \hskip -\arraycolsep in amsmath
+    };
+    res = parseArray(context.parser, res);
+    if (delimiters) {
+        res = new ParseNode("leftright", {
+            body: [res],
+            left: delimiters[0],
+            right: delimiters[1]
+        }, context.mode);
+    }
+    return res;
+});
+
+// A cases environment (in amsmath.sty) is almost equivalent to
+// \def\arraystretch{1.2}%
+// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right.
+defineEnvironment("cases", {
+}, function(context) {
+    var res = {
+        type: "array",
+        arraystretch: 1.2,
+        cols: [{
+            type: "align",
+            align: "l",
+            pregap: 0,
+            // TODO(kevinb) get the current style.
+            // For now we use the metrics for TEXT style which is what we were
+            // doing before.  Before attempting to get the current style we
+            // should look at TeX's behavior especially for \over and matrices.
+            postgap: Style.TEXT.metrics.quad
+        }, {
+            type: "align",
+            align: "l",
+            pregap: 0,
+            postgap: 0
+        }]
+    };
+    res = parseArray(context.parser, res);
+    res = new ParseNode("leftright", {
+        body: [res],
+        left: "\\{",
+        right: "."
+    }, context.mode);
+    return res;
+});
+
+// An aligned environment is like the align* environment
+// except it operates within math mode.
+// Note that we assume \nomallineskiplimit to be zero,
+// so that \strut@ is the same as \strut.
+defineEnvironment("aligned", {
+}, function(context) {
+    var res = {
+        type: "array",
+        cols: []
+    };
+    res = parseArray(context.parser, res);
+    var emptyGroup = new ParseNode("ordgroup", [], context.mode);
+    var numCols = 0;
+    res.value.body.forEach(function(row) {
+        var i;
+        for (i = 1; i < row.length; i += 2) {
+            row[i].value.unshift(emptyGroup);
+        }
+        if (numCols < row.length) {
+            numCols = row.length;
+        }
+    });
+    for (var i = 0; i < numCols; ++i) {
+        var align = "r";
+        var pregap = 0;
+        if (i % 2 === 1) {
+            align = "l";
+        } else if (i > 0) {
+            pregap = 2; // one \qquad between columns
+        }
+        res.value.cols[i] = {
+            type: "align",
+            align: align,
+            pregap: pregap,
+            postgap: 0
+        };
+    }
+    return res;
+});
+
+},{"./ParseError":6,"./Style":9,"./parseData":21}],17:[function(require,module,exports){
+/* eslint no-unused-vars:0 */
+
+var Style = require("./Style");
+var cjkRegex = require("./unicodeRegexes").cjkRegex;
+
+/**
+ * This file contains metrics regarding fonts and individual symbols. The sigma
+ * and xi variables, as well as the metricMap map contain data extracted from
+ * TeX, TeX font metrics, and the TTF files. These data are then exposed via the
+ * `metrics` variable and the getCharacterMetrics function.
+ */
+
+// In TeX, there are actually three sets of dimensions, one for each of
+// textstyle, scriptstyle, and scriptscriptstyle.  These are provided in the
+// the arrays below, in that order.
+//
+// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively.
+// This was determined by running the folllowing script:
+//
+//     latex -interaction=nonstopmode \
+//     '\documentclass{article}\usepackage{amsmath}\begin{document}' \
+//     '$a$ \expandafter\show\the\textfont2' \
+//     '\expandafter\show\the\scriptfont2' \
+//     '\expandafter\show\the\scriptscriptfont2' \
+//     '\stop'
+//
+// The metrics themselves were retreived using the following commands:
+//
+//     tftopl cmsy10
+//     tftopl cmsy7
+//     tftopl cmsy5
+//
+// The output of each of these commands is quite lengthy.  The only part we
+// care about is the FONTDIMEN section. Each value is measured in EMs.
+var sigmas = {
+    slant: [0.250, 0.250, 0.250],       // sigma1
+    space: [0.000, 0.000, 0.000],       // sigma2
+    stretch: [0.000, 0.000, 0.000],     // sigma3
+    shrink: [0.000, 0.000, 0.000],      // sigma4
+    xHeight: [0.431, 0.431, 0.431],     // sigma5
+    quad: [1.000, 1.171, 1.472],        // sigma6
+    extraSpace: [0.000, 0.000, 0.000],  // sigma7
+    num1: [0.677, 0.732, 0.925],        // sigma8
+    num2: [0.394, 0.384, 0.387],        // sigma9
+    num3: [0.444, 0.471, 0.504],        // sigma10
+    denom1: [0.686, 0.752, 1.025],      // sigma11
+    denom2: [0.345, 0.344, 0.532],      // sigma12
+    sup1: [0.413, 0.503, 0.504],        // sigma13
+    sup2: [0.363, 0.431, 0.404],        // sigma14
+    sup3: [0.289, 0.286, 0.294],        // sigma15
+    sub1: [0.150, 0.143, 0.200],        // sigma16
+    sub2: [0.247, 0.286, 0.400],        // sigma17
+    supDrop: [0.386, 0.353, 0.494],     // sigma18
+    subDrop: [0.050, 0.071, 0.100],     // sigma19
+    delim1: [2.390, 1.700, 1.980],      // sigma20
+    delim2: [1.010, 1.157, 1.420],      // sigma21
+    axisHeight: [0.250, 0.250, 0.250]  // sigma22
+};
+
+// These font metrics are extracted from TeX by using
+// \font\a=cmex10
+// \showthe\fontdimenX\a
+// where X is the corresponding variable number. These correspond to the font
+// parameters of the extension fonts (family 3). See the TeXbook, page 441.
+var xi1 = 0;
+var xi2 = 0;
+var xi3 = 0;
+var xi4 = 0;
+var xi5 = 0.431;
+var xi6 = 1;
+var xi7 = 0;
+var xi8 = 0.04;
+var xi9 = 0.111;
+var xi10 = 0.166;
+var xi11 = 0.2;
+var xi12 = 0.6;
+var xi13 = 0.1;
+
+// This value determines how large a pt is, for metrics which are defined in
+// terms of pts.
+// This value is also used in katex.less; if you change it make sure the values
+// match.
+var ptPerEm = 10.0;
+
+// The space between adjacent `|` columns in an array definition. From
+// `\showthe\doublerulesep` in LaTeX.
+var doubleRuleSep = 2.0 / ptPerEm;
+
+/**
+ * This is just a mapping from common names to real metrics
+ */
+var metrics = {
+    defaultRuleThickness: xi8,
+    bigOpSpacing1: xi9,
+    bigOpSpacing2: xi10,
+    bigOpSpacing3: xi11,
+    bigOpSpacing4: xi12,
+    bigOpSpacing5: xi13,
+    ptPerEm: ptPerEm,
+    doubleRuleSep: doubleRuleSep
+};
+
+// This map contains a mapping from font name and character code to character
+// metrics, including height, depth, italic correction, and skew (kern from the
+// character to the corresponding \skewchar)
+// This map is generated via `make metrics`. It should not be changed manually.
+var metricMap = require("./fontMetricsData");
+
+// These are very rough approximations.  We default to Times New Roman which
+// should have Latin-1 and Cyrillic characters, but may not depending on the
+// operating system.  The metrics do not account for extra height from the
+// accents.  In the case of Cyrillic characters which have both ascenders and
+// descenders we prefer approximations with ascenders, primarily to prevent
+// the fraction bar or root line from intersecting the glyph.
+// TODO(kevinb) allow union of multiple glyph metrics for better accuracy.
+var extraCharacterMap = {
+    // Latin-1
+    'À': 'A',
+    'Á': 'A',
+    'Â': 'A',
+    'Ã': 'A',
+    'Ä': 'A',
+    'Ã…': 'A',
+    'Æ': 'A',
+    'Ç': 'C',
+    'È': 'E',
+    'É': 'E',
+    'Ê': 'E',
+    'Ë': 'E',
+    'Ì': 'I',
+    'Í': 'I',
+    'ÃŽ': 'I',
+    'Ï': 'I',
+    'Ð': 'D',
+    'Ñ': 'N',
+    'Ã’': 'O',
+    'Ó': 'O',
+    'Ô': 'O',
+    'Õ': 'O',
+    'Ö': 'O',
+    'Ø': 'O',
+    'Ù': 'U',
+    'Ú': 'U',
+    'Û': 'U',
+    'Ü': 'U',
+    'Ý': 'Y',
+    'Þ': 'o',
+    'ß': 'B',
+    'à': 'a',
+    'á': 'a',
+    'â': 'a',
+    'ã': 'a',
+    'ä': 'a',
+    'Ã¥': 'a',
+    'æ': 'a',
+    'ç': 'c',
+    'è': 'e',
+    'é': 'e',
+    'ê': 'e',
+    'ë': 'e',
+    'ì': 'i',
+    'í': 'i',
+    'î': 'i',
+    'ï': 'i',
+    'ð': 'd',
+    'ñ': 'n',
+    'ò': 'o',
+    'ó': 'o',
+    'ô': 'o',
+    'õ': 'o',
+    'ö': 'o',
+    'ø': 'o',
+    'ù': 'u',
+    'ú': 'u',
+    'û': 'u',
+    'ü': 'u',
+    'ý': 'y',
+    'þ': 'o',
+    'ÿ': 'y',
+
+    // Cyrillic
+    'А': 'A',
+    'Б': 'B',
+    'Ð’': 'B',
+    'Г': 'F',
+    'Д': 'A',
+    'Е': 'E',
+    'Ж': 'K',
+    'З': '3',
+    'И': 'N',
+    'Й': 'N',
+    'К': 'K',
+    'Л': 'N',
+    'М': 'M',
+    'Н': 'H',
+    'О': 'O',
+    'П': 'N',
+    'Р': 'P',
+    'С': 'C',
+    'Т': 'T',
+    'У': 'y',
+    'Ф': 'O',
+    'Ð¥': 'X',
+    'Ц': 'U',
+    'Ч': 'h',
+    'Ш': 'W',
+    'Щ': 'W',
+    'Ъ': 'B',
+    'Ы': 'X',
+    'Ь': 'B',
+    'Э': '3',
+    'Ю': 'X',
+    'Я': 'R',
+    'а': 'a',
+    'б': 'b',
+    'в': 'a',
+    'г': 'r',
+    'д': 'y',
+    'е': 'e',
+    'ж': 'm',
+    'з': 'e',
+    'и': 'n',
+    'й': 'n',
+    'к': 'n',
+    'л': 'n',
+    'м': 'm',
+    'н': 'n',
+    'о': 'o',
+    'п': 'n',
+    'Ñ€': 'p',
+    'с': 'c',
+    'Ñ‚': 'o',
+    'у': 'y',
+    'Ñ„': 'b',
+    'Ñ…': 'x',
+    'ц': 'n',
+    'ч': 'n',
+    'ш': 'w',
+    'щ': 'w',
+    'ÑŠ': 'a',
+    'Ñ‹': 'm',
+    'ь': 'a',
+    'э': 'e',
+    'ÑŽ': 'm',
+    'я': 'r'
+};
+
+/**
+ * This function is a convenience function for looking up information in the
+ * metricMap table. It takes a character as a string, and a style.
+ *
+ * Note: the `width` property may be undefined if fontMetricsData.js wasn't
+ * built using `Make extended_metrics`.
+ */
+var getCharacterMetrics = function(character, style) {
+    var ch = character.charCodeAt(0);
+    if (character[0] in extraCharacterMap) {
+        ch = extraCharacterMap[character[0]].charCodeAt(0);
+    } else if (cjkRegex.test(character[0])) {
+        ch = 'M'.charCodeAt(0);
+    }
+    var metrics = metricMap[style][ch];
+    if (metrics) {
+        return {
+            depth: metrics[0],
+            height: metrics[1],
+            italic: metrics[2],
+            skew: metrics[3],
+            width: metrics[4]
+        };
+    }
+};
+
+module.exports = {
+    metrics: metrics,
+    sigmas: sigmas,
+    getCharacterMetrics: getCharacterMetrics
+};
+
+},{"./Style":9,"./fontMetricsData":18,"./unicodeRegexes":24}],18:[function(require,module,exports){
+module.exports = {
+    "AMS-Regular": {
+        "65": [0, 0.68889, 0, 0],
+        "66": [0, 0.68889, 0, 0],
+        "67": [0, 0.68889, 0, 0],
+        "68": [0, 0.68889, 0, 0],
+        "69": [0, 0.68889, 0, 0],
+        "70": [0, 0.68889, 0, 0],
+        "71": [0, 0.68889, 0, 0],
+        "72": [0, 0.68889, 0, 0],
+        "73": [0, 0.68889, 0, 0],
+        "74": [0.16667, 0.68889, 0, 0],
+        "75": [0, 0.68889, 0, 0],
+        "76": [0, 0.68889, 0, 0],
+        "77": [0, 0.68889, 0, 0],
+        "78": [0, 0.68889, 0, 0],
+        "79": [0.16667, 0.68889, 0, 0],
+        "80": [0, 0.68889, 0, 0],
+        "81": [0.16667, 0.68889, 0, 0],
+        "82": [0, 0.68889, 0, 0],
+        "83": [0, 0.68889, 0, 0],
+        "84": [0, 0.68889, 0, 0],
+        "85": [0, 0.68889, 0, 0],
+        "86": [0, 0.68889, 0, 0],
+        "87": [0, 0.68889, 0, 0],
+        "88": [0, 0.68889, 0, 0],
+        "89": [0, 0.68889, 0, 0],
+        "90": [0, 0.68889, 0, 0],
+        "107": [0, 0.68889, 0, 0],
+        "165": [0, 0.675, 0.025, 0],
+        "174": [0.15559, 0.69224, 0, 0],
+        "240": [0, 0.68889, 0, 0],
+        "295": [0, 0.68889, 0, 0],
+        "710": [0, 0.825, 0, 0],
+        "732": [0, 0.9, 0, 0],
+        "770": [0, 0.825, 0, 0],
+        "771": [0, 0.9, 0, 0],
+        "989": [0.08167, 0.58167, 0, 0],
+        "1008": [0, 0.43056, 0.04028, 0],
+        "8245": [0, 0.54986, 0, 0],
+        "8463": [0, 0.68889, 0, 0],
+        "8487": [0, 0.68889, 0, 0],
+        "8498": [0, 0.68889, 0, 0],
+        "8502": [0, 0.68889, 0, 0],
+        "8503": [0, 0.68889, 0, 0],
+        "8504": [0, 0.68889, 0, 0],
+        "8513": [0, 0.68889, 0, 0],
+        "8592": [-0.03598, 0.46402, 0, 0],
+        "8594": [-0.03598, 0.46402, 0, 0],
+        "8602": [-0.13313, 0.36687, 0, 0],
+        "8603": [-0.13313, 0.36687, 0, 0],
+        "8606": [0.01354, 0.52239, 0, 0],
+        "8608": [0.01354, 0.52239, 0, 0],
+        "8610": [0.01354, 0.52239, 0, 0],
+        "8611": [0.01354, 0.52239, 0, 0],
+        "8619": [0, 0.54986, 0, 0],
+        "8620": [0, 0.54986, 0, 0],
+        "8621": [-0.13313, 0.37788, 0, 0],
+        "8622": [-0.13313, 0.36687, 0, 0],
+        "8624": [0, 0.69224, 0, 0],
+        "8625": [0, 0.69224, 0, 0],
+        "8630": [0, 0.43056, 0, 0],
+        "8631": [0, 0.43056, 0, 0],
+        "8634": [0.08198, 0.58198, 0, 0],
+        "8635": [0.08198, 0.58198, 0, 0],
+        "8638": [0.19444, 0.69224, 0, 0],
+        "8639": [0.19444, 0.69224, 0, 0],
+        "8642": [0.19444, 0.69224, 0, 0],
+        "8643": [0.19444, 0.69224, 0, 0],
+        "8644": [0.1808, 0.675, 0, 0],
+        "8646": [0.1808, 0.675, 0, 0],
+        "8647": [0.1808, 0.675, 0, 0],
+        "8648": [0.19444, 0.69224, 0, 0],
+        "8649": [0.1808, 0.675, 0, 0],
+        "8650": [0.19444, 0.69224, 0, 0],
+        "8651": [0.01354, 0.52239, 0, 0],
+        "8652": [0.01354, 0.52239, 0, 0],
+        "8653": [-0.13313, 0.36687, 0, 0],
+        "8654": [-0.13313, 0.36687, 0, 0],
+        "8655": [-0.13313, 0.36687, 0, 0],
+        "8666": [0.13667, 0.63667, 0, 0],
+        "8667": [0.13667, 0.63667, 0, 0],
+        "8669": [-0.13313, 0.37788, 0, 0],
+        "8672": [-0.064, 0.437, 0, 0],
+        "8674": [-0.064, 0.437, 0, 0],
+        "8705": [0, 0.825, 0, 0],
+        "8708": [0, 0.68889, 0, 0],
+        "8709": [0.08167, 0.58167, 0, 0],
+        "8717": [0, 0.43056, 0, 0],
+        "8722": [-0.03598, 0.46402, 0, 0],
+        "8724": [0.08198, 0.69224, 0, 0],
+        "8726": [0.08167, 0.58167, 0, 0],
+        "8733": [0, 0.69224, 0, 0],
+        "8736": [0, 0.69224, 0, 0],
+        "8737": [0, 0.69224, 0, 0],
+        "8738": [0.03517, 0.52239, 0, 0],
+        "8739": [0.08167, 0.58167, 0, 0],
+        "8740": [0.25142, 0.74111, 0, 0],
+        "8741": [0.08167, 0.58167, 0, 0],
+        "8742": [0.25142, 0.74111, 0, 0],
+        "8756": [0, 0.69224, 0, 0],
+        "8757": [0, 0.69224, 0, 0],
+        "8764": [-0.13313, 0.36687, 0, 0],
+        "8765": [-0.13313, 0.37788, 0, 0],
+        "8769": [-0.13313, 0.36687, 0, 0],
+        "8770": [-0.03625, 0.46375, 0, 0],
+        "8774": [0.30274, 0.79383, 0, 0],
+        "8776": [-0.01688, 0.48312, 0, 0],
+        "8778": [0.08167, 0.58167, 0, 0],
+        "8782": [0.06062, 0.54986, 0, 0],
+        "8783": [0.06062, 0.54986, 0, 0],
+        "8785": [0.08198, 0.58198, 0, 0],
+        "8786": [0.08198, 0.58198, 0, 0],
+        "8787": [0.08198, 0.58198, 0, 0],
+        "8790": [0, 0.69224, 0, 0],
+        "8791": [0.22958, 0.72958, 0, 0],
+        "8796": [0.08198, 0.91667, 0, 0],
+        "8806": [0.25583, 0.75583, 0, 0],
+        "8807": [0.25583, 0.75583, 0, 0],
+        "8808": [0.25142, 0.75726, 0, 0],
+        "8809": [0.25142, 0.75726, 0, 0],
+        "8812": [0.25583, 0.75583, 0, 0],
+        "8814": [0.20576, 0.70576, 0, 0],
+        "8815": [0.20576, 0.70576, 0, 0],
+        "8816": [0.30274, 0.79383, 0, 0],
+        "8817": [0.30274, 0.79383, 0, 0],
+        "8818": [0.22958, 0.72958, 0, 0],
+        "8819": [0.22958, 0.72958, 0, 0],
+        "8822": [0.1808, 0.675, 0, 0],
+        "8823": [0.1808, 0.675, 0, 0],
+        "8828": [0.13667, 0.63667, 0, 0],
+        "8829": [0.13667, 0.63667, 0, 0],
+        "8830": [0.22958, 0.72958, 0, 0],
+        "8831": [0.22958, 0.72958, 0, 0],
+        "8832": [0.20576, 0.70576, 0, 0],
+        "8833": [0.20576, 0.70576, 0, 0],
+        "8840": [0.30274, 0.79383, 0, 0],
+        "8841": [0.30274, 0.79383, 0, 0],
+        "8842": [0.13597, 0.63597, 0, 0],
+        "8843": [0.13597, 0.63597, 0, 0],
+        "8847": [0.03517, 0.54986, 0, 0],
+        "8848": [0.03517, 0.54986, 0, 0],
+        "8858": [0.08198, 0.58198, 0, 0],
+        "8859": [0.08198, 0.58198, 0, 0],
+        "8861": [0.08198, 0.58198, 0, 0],
+        "8862": [0, 0.675, 0, 0],
+        "8863": [0, 0.675, 0, 0],
+        "8864": [0, 0.675, 0, 0],
+        "8865": [0, 0.675, 0, 0],
+        "8872": [0, 0.69224, 0, 0],
+        "8873": [0, 0.69224, 0, 0],
+        "8874": [0, 0.69224, 0, 0],
+        "8876": [0, 0.68889, 0, 0],
+        "8877": [0, 0.68889, 0, 0],
+        "8878": [0, 0.68889, 0, 0],
+        "8879": [0, 0.68889, 0, 0],
+        "8882": [0.03517, 0.54986, 0, 0],
+        "8883": [0.03517, 0.54986, 0, 0],
+        "8884": [0.13667, 0.63667, 0, 0],
+        "8885": [0.13667, 0.63667, 0, 0],
+        "8888": [0, 0.54986, 0, 0],
+        "8890": [0.19444, 0.43056, 0, 0],
+        "8891": [0.19444, 0.69224, 0, 0],
+        "8892": [0.19444, 0.69224, 0, 0],
+        "8901": [0, 0.54986, 0, 0],
+        "8903": [0.08167, 0.58167, 0, 0],
+        "8905": [0.08167, 0.58167, 0, 0],
+        "8906": [0.08167, 0.58167, 0, 0],
+        "8907": [0, 0.69224, 0, 0],
+        "8908": [0, 0.69224, 0, 0],
+        "8909": [-0.03598, 0.46402, 0, 0],
+        "8910": [0, 0.54986, 0, 0],
+        "8911": [0, 0.54986, 0, 0],
+        "8912": [0.03517, 0.54986, 0, 0],
+        "8913": [0.03517, 0.54986, 0, 0],
+        "8914": [0, 0.54986, 0, 0],
+        "8915": [0, 0.54986, 0, 0],
+        "8916": [0, 0.69224, 0, 0],
+        "8918": [0.0391, 0.5391, 0, 0],
+        "8919": [0.0391, 0.5391, 0, 0],
+        "8920": [0.03517, 0.54986, 0, 0],
+        "8921": [0.03517, 0.54986, 0, 0],
+        "8922": [0.38569, 0.88569, 0, 0],
+        "8923": [0.38569, 0.88569, 0, 0],
+        "8926": [0.13667, 0.63667, 0, 0],
+        "8927": [0.13667, 0.63667, 0, 0],
+        "8928": [0.30274, 0.79383, 0, 0],
+        "8929": [0.30274, 0.79383, 0, 0],
+        "8934": [0.23222, 0.74111, 0, 0],
+        "8935": [0.23222, 0.74111, 0, 0],
+        "8936": [0.23222, 0.74111, 0, 0],
+        "8937": [0.23222, 0.74111, 0, 0],
+        "8938": [0.20576, 0.70576, 0, 0],
+        "8939": [0.20576, 0.70576, 0, 0],
+        "8940": [0.30274, 0.79383, 0, 0],
+        "8941": [0.30274, 0.79383, 0, 0],
+        "8994": [0.19444, 0.69224, 0, 0],
+        "8995": [0.19444, 0.69224, 0, 0],
+        "9416": [0.15559, 0.69224, 0, 0],
+        "9484": [0, 0.69224, 0, 0],
+        "9488": [0, 0.69224, 0, 0],
+        "9492": [0, 0.37788, 0, 0],
+        "9496": [0, 0.37788, 0, 0],
+        "9585": [0.19444, 0.68889, 0, 0],
+        "9586": [0.19444, 0.74111, 0, 0],
+        "9632": [0, 0.675, 0, 0],
+        "9633": [0, 0.675, 0, 0],
+        "9650": [0, 0.54986, 0, 0],
+        "9651": [0, 0.54986, 0, 0],
+        "9654": [0.03517, 0.54986, 0, 0],
+        "9660": [0, 0.54986, 0, 0],
+        "9661": [0, 0.54986, 0, 0],
+        "9664": [0.03517, 0.54986, 0, 0],
+        "9674": [0.11111, 0.69224, 0, 0],
+        "9733": [0.19444, 0.69224, 0, 0],
+        "10003": [0, 0.69224, 0, 0],
+        "10016": [0, 0.69224, 0, 0],
+        "10731": [0.11111, 0.69224, 0, 0],
+        "10846": [0.19444, 0.75583, 0, 0],
+        "10877": [0.13667, 0.63667, 0, 0],
+        "10878": [0.13667, 0.63667, 0, 0],
+        "10885": [0.25583, 0.75583, 0, 0],
+        "10886": [0.25583, 0.75583, 0, 0],
+        "10887": [0.13597, 0.63597, 0, 0],
+        "10888": [0.13597, 0.63597, 0, 0],
+        "10889": [0.26167, 0.75726, 0, 0],
+        "10890": [0.26167, 0.75726, 0, 0],
+        "10891": [0.48256, 0.98256, 0, 0],
+        "10892": [0.48256, 0.98256, 0, 0],
+        "10901": [0.13667, 0.63667, 0, 0],
+        "10902": [0.13667, 0.63667, 0, 0],
+        "10933": [0.25142, 0.75726, 0, 0],
+        "10934": [0.25142, 0.75726, 0, 0],
+        "10935": [0.26167, 0.75726, 0, 0],
+        "10936": [0.26167, 0.75726, 0, 0],
+        "10937": [0.26167, 0.75726, 0, 0],
+        "10938": [0.26167, 0.75726, 0, 0],
+        "10949": [0.25583, 0.75583, 0, 0],
+        "10950": [0.25583, 0.75583, 0, 0],
+        "10955": [0.28481, 0.79383, 0, 0],
+        "10956": [0.28481, 0.79383, 0, 0],
+        "57350": [0.08167, 0.58167, 0, 0],
+        "57351": [0.08167, 0.58167, 0, 0],
+        "57352": [0.08167, 0.58167, 0, 0],
+        "57353": [0, 0.43056, 0.04028, 0],
+        "57356": [0.25142, 0.75726, 0, 0],
+        "57357": [0.25142, 0.75726, 0, 0],
+        "57358": [0.41951, 0.91951, 0, 0],
+        "57359": [0.30274, 0.79383, 0, 0],
+        "57360": [0.30274, 0.79383, 0, 0],
+        "57361": [0.41951, 0.91951, 0, 0],
+        "57366": [0.25142, 0.75726, 0, 0],
+        "57367": [0.25142, 0.75726, 0, 0],
+        "57368": [0.25142, 0.75726, 0, 0],
+        "57369": [0.25142, 0.75726, 0, 0],
+        "57370": [0.13597, 0.63597, 0, 0],
+        "57371": [0.13597, 0.63597, 0, 0]
+    },
+    "Caligraphic-Regular": {
+        "48": [0, 0.43056, 0, 0],
+        "49": [0, 0.43056, 0, 0],
+        "50": [0, 0.43056, 0, 0],
+        "51": [0.19444, 0.43056, 0, 0],
+        "52": [0.19444, 0.43056, 0, 0],
+        "53": [0.19444, 0.43056, 0, 0],
+        "54": [0, 0.64444, 0, 0],
+        "55": [0.19444, 0.43056, 0, 0],
+        "56": [0, 0.64444, 0, 0],
+        "57": [0.19444, 0.43056, 0, 0],
+        "65": [0, 0.68333, 0, 0.19445],
+        "66": [0, 0.68333, 0.03041, 0.13889],
+        "67": [0, 0.68333, 0.05834, 0.13889],
+        "68": [0, 0.68333, 0.02778, 0.08334],
+        "69": [0, 0.68333, 0.08944, 0.11111],
+        "70": [0, 0.68333, 0.09931, 0.11111],
+        "71": [0.09722, 0.68333, 0.0593, 0.11111],
+        "72": [0, 0.68333, 0.00965, 0.11111],
+        "73": [0, 0.68333, 0.07382, 0],
+        "74": [0.09722, 0.68333, 0.18472, 0.16667],
+        "75": [0, 0.68333, 0.01445, 0.05556],
+        "76": [0, 0.68333, 0, 0.13889],
+        "77": [0, 0.68333, 0, 0.13889],
+        "78": [0, 0.68333, 0.14736, 0.08334],
+        "79": [0, 0.68333, 0.02778, 0.11111],
+        "80": [0, 0.68333, 0.08222, 0.08334],
+        "81": [0.09722, 0.68333, 0, 0.11111],
+        "82": [0, 0.68333, 0, 0.08334],
+        "83": [0, 0.68333, 0.075, 0.13889],
+        "84": [0, 0.68333, 0.25417, 0],
+        "85": [0, 0.68333, 0.09931, 0.08334],
+        "86": [0, 0.68333, 0.08222, 0],
+        "87": [0, 0.68333, 0.08222, 0.08334],
+        "88": [0, 0.68333, 0.14643, 0.13889],
+        "89": [0.09722, 0.68333, 0.08222, 0.08334],
+        "90": [0, 0.68333, 0.07944, 0.13889]
+    },
+    "Fraktur-Regular": {
+        "33": [0, 0.69141, 0, 0],
+        "34": [0, 0.69141, 0, 0],
+        "38": [0, 0.69141, 0, 0],
+        "39": [0, 0.69141, 0, 0],
+        "40": [0.24982, 0.74947, 0, 0],
+        "41": [0.24982, 0.74947, 0, 0],
+        "42": [0, 0.62119, 0, 0],
+        "43": [0.08319, 0.58283, 0, 0],
+        "44": [0, 0.10803, 0, 0],
+        "45": [0.08319, 0.58283, 0, 0],
+        "46": [0, 0.10803, 0, 0],
+        "47": [0.24982, 0.74947, 0, 0],
+        "48": [0, 0.47534, 0, 0],
+        "49": [0, 0.47534, 0, 0],
+        "50": [0, 0.47534, 0, 0],
+        "51": [0.18906, 0.47534, 0, 0],
+        "52": [0.18906, 0.47534, 0, 0],
+        "53": [0.18906, 0.47534, 0, 0],
+        "54": [0, 0.69141, 0, 0],
+        "55": [0.18906, 0.47534, 0, 0],
+        "56": [0, 0.69141, 0, 0],
+        "57": [0.18906, 0.47534, 0, 0],
+        "58": [0, 0.47534, 0, 0],
+        "59": [0.12604, 0.47534, 0, 0],
+        "61": [-0.13099, 0.36866, 0, 0],
+        "63": [0, 0.69141, 0, 0],
+        "65": [0, 0.69141, 0, 0],
+        "66": [0, 0.69141, 0, 0],
+        "67": [0, 0.69141, 0, 0],
+        "68": [0, 0.69141, 0, 0],
+        "69": [0, 0.69141, 0, 0],
+        "70": [0.12604, 0.69141, 0, 0],
+        "71": [0, 0.69141, 0, 0],
+        "72": [0.06302, 0.69141, 0, 0],
+        "73": [0, 0.69141, 0, 0],
+        "74": [0.12604, 0.69141, 0, 0],
+        "75": [0, 0.69141, 0, 0],
+        "76": [0, 0.69141, 0, 0],
+        "77": [0, 0.69141, 0, 0],
+        "78": [0, 0.69141, 0, 0],
+        "79": [0, 0.69141, 0, 0],
+        "80": [0.18906, 0.69141, 0, 0],
+        "81": [0.03781, 0.69141, 0, 0],
+        "82": [0, 0.69141, 0, 0],
+        "83": [0, 0.69141, 0, 0],
+        "84": [0, 0.69141, 0, 0],
+        "85": [0, 0.69141, 0, 0],
+        "86": [0, 0.69141, 0, 0],
+        "87": [0, 0.69141, 0, 0],
+        "88": [0, 0.69141, 0, 0],
+        "89": [0.18906, 0.69141, 0, 0],
+        "90": [0.12604, 0.69141, 0, 0],
+        "91": [0.24982, 0.74947, 0, 0],
+        "93": [0.24982, 0.74947, 0, 0],
+        "94": [0, 0.69141, 0, 0],
+        "97": [0, 0.47534, 0, 0],
+        "98": [0, 0.69141, 0, 0],
+        "99": [0, 0.47534, 0, 0],
+        "100": [0, 0.62119, 0, 0],
+        "101": [0, 0.47534, 0, 0],
+        "102": [0.18906, 0.69141, 0, 0],
+        "103": [0.18906, 0.47534, 0, 0],
+        "104": [0.18906, 0.69141, 0, 0],
+        "105": [0, 0.69141, 0, 0],
+        "106": [0, 0.69141, 0, 0],
+        "107": [0, 0.69141, 0, 0],
+        "108": [0, 0.69141, 0, 0],
+        "109": [0, 0.47534, 0, 0],
+        "110": [0, 0.47534, 0, 0],
+        "111": [0, 0.47534, 0, 0],
+        "112": [0.18906, 0.52396, 0, 0],
+        "113": [0.18906, 0.47534, 0, 0],
+        "114": [0, 0.47534, 0, 0],
+        "115": [0, 0.47534, 0, 0],
+        "116": [0, 0.62119, 0, 0],
+        "117": [0, 0.47534, 0, 0],
+        "118": [0, 0.52396, 0, 0],
+        "119": [0, 0.52396, 0, 0],
+        "120": [0.18906, 0.47534, 0, 0],
+        "121": [0.18906, 0.47534, 0, 0],
+        "122": [0.18906, 0.47534, 0, 0],
+        "8216": [0, 0.69141, 0, 0],
+        "8217": [0, 0.69141, 0, 0],
+        "58112": [0, 0.62119, 0, 0],
+        "58113": [0, 0.62119, 0, 0],
+        "58114": [0.18906, 0.69141, 0, 0],
+        "58115": [0.18906, 0.69141, 0, 0],
+        "58116": [0.18906, 0.47534, 0, 0],
+        "58117": [0, 0.69141, 0, 0],
+        "58118": [0, 0.62119, 0, 0],
+        "58119": [0, 0.47534, 0, 0]
+    },
+    "Main-Bold": {
+        "33": [0, 0.69444, 0, 0],
+        "34": [0, 0.69444, 0, 0],
+        "35": [0.19444, 0.69444, 0, 0],
+        "36": [0.05556, 0.75, 0, 0],
+        "37": [0.05556, 0.75, 0, 0],
+        "38": [0, 0.69444, 0, 0],
+        "39": [0, 0.69444, 0, 0],
+        "40": [0.25, 0.75, 0, 0],
+        "41": [0.25, 0.75, 0, 0],
+        "42": [0, 0.75, 0, 0],
+        "43": [0.13333, 0.63333, 0, 0],
+        "44": [0.19444, 0.15556, 0, 0],
+        "45": [0, 0.44444, 0, 0],
+        "46": [0, 0.15556, 0, 0],
+        "47": [0.25, 0.75, 0, 0],
+        "48": [0, 0.64444, 0, 0],
+        "49": [0, 0.64444, 0, 0],
+        "50": [0, 0.64444, 0, 0],
+        "51": [0, 0.64444, 0, 0],
+        "52": [0, 0.64444, 0, 0],
+        "53": [0, 0.64444, 0, 0],
+        "54": [0, 0.64444, 0, 0],
+        "55": [0, 0.64444, 0, 0],
+        "56": [0, 0.64444, 0, 0],
+        "57": [0, 0.64444, 0, 0],
+        "58": [0, 0.44444, 0, 0],
+        "59": [0.19444, 0.44444, 0, 0],
+        "60": [0.08556, 0.58556, 0, 0],
+        "61": [-0.10889, 0.39111, 0, 0],
+        "62": [0.08556, 0.58556, 0, 0],
+        "63": [0, 0.69444, 0, 0],
+        "64": [0, 0.69444, 0, 0],
+        "65": [0, 0.68611, 0, 0],
+        "66": [0, 0.68611, 0, 0],
+        "67": [0, 0.68611, 0, 0],
+        "68": [0, 0.68611, 0, 0],
+        "69": [0, 0.68611, 0, 0],
+        "70": [0, 0.68611, 0, 0],
+        "71": [0, 0.68611, 0, 0],
+        "72": [0, 0.68611, 0, 0],
+        "73": [0, 0.68611, 0, 0],
+        "74": [0, 0.68611, 0, 0],
+        "75": [0, 0.68611, 0, 0],
+        "76": [0, 0.68611, 0, 0],
+        "77": [0, 0.68611, 0, 0],
+        "78": [0, 0.68611, 0, 0],
+        "79": [0, 0.68611, 0, 0],
+        "80": [0, 0.68611, 0, 0],
+        "81": [0.19444, 0.68611, 0, 0],
+        "82": [0, 0.68611, 0, 0],
+        "83": [0, 0.68611, 0, 0],
+        "84": [0, 0.68611, 0, 0],
+        "85": [0, 0.68611, 0, 0],
+        "86": [0, 0.68611, 0.01597, 0],
+        "87": [0, 0.68611, 0.01597, 0],
+        "88": [0, 0.68611, 0, 0],
+        "89": [0, 0.68611, 0.02875, 0],
+        "90": [0, 0.68611, 0, 0],
+        "91": [0.25, 0.75, 0, 0],
+        "92": [0.25, 0.75, 0, 0],
+        "93": [0.25, 0.75, 0, 0],
+        "94": [0, 0.69444, 0, 0],
+        "95": [0.31, 0.13444, 0.03194, 0],
+        "96": [0, 0.69444, 0, 0],
+        "97": [0, 0.44444, 0, 0],
+        "98": [0, 0.69444, 0, 0],
+        "99": [0, 0.44444, 0, 0],
+        "100": [0, 0.69444, 0, 0],
+        "101": [0, 0.44444, 0, 0],
+        "102": [0, 0.69444, 0.10903, 0],
+        "103": [0.19444, 0.44444, 0.01597, 0],
+        "104": [0, 0.69444, 0, 0],
+        "105": [0, 0.69444, 0, 0],
+        "106": [0.19444, 0.69444, 0, 0],
+        "107": [0, 0.69444, 0, 0],
+        "108": [0, 0.69444, 0, 0],
+        "109": [0, 0.44444, 0, 0],
+        "110": [0, 0.44444, 0, 0],
+        "111": [0, 0.44444, 0, 0],
+        "112": [0.19444, 0.44444, 0, 0],
+        "113": [0.19444, 0.44444, 0, 0],
+        "114": [0, 0.44444, 0, 0],
+        "115": [0, 0.44444, 0, 0],
+        "116": [0, 0.63492, 0, 0],
+        "117": [0, 0.44444, 0, 0],
+        "118": [0, 0.44444, 0.01597, 0],
+        "119": [0, 0.44444, 0.01597, 0],
+        "120": [0, 0.44444, 0, 0],
+        "121": [0.19444, 0.44444, 0.01597, 0],
+        "122": [0, 0.44444, 0, 0],
+        "123": [0.25, 0.75, 0, 0],
+        "124": [0.25, 0.75, 0, 0],
+        "125": [0.25, 0.75, 0, 0],
+        "126": [0.35, 0.34444, 0, 0],
+        "168": [0, 0.69444, 0, 0],
+        "172": [0, 0.44444, 0, 0],
+        "175": [0, 0.59611, 0, 0],
+        "176": [0, 0.69444, 0, 0],
+        "177": [0.13333, 0.63333, 0, 0],
+        "180": [0, 0.69444, 0, 0],
+        "215": [0.13333, 0.63333, 0, 0],
+        "247": [0.13333, 0.63333, 0, 0],
+        "305": [0, 0.44444, 0, 0],
+        "567": [0.19444, 0.44444, 0, 0],
+        "710": [0, 0.69444, 0, 0],
+        "711": [0, 0.63194, 0, 0],
+        "713": [0, 0.59611, 0, 0],
+        "714": [0, 0.69444, 0, 0],
+        "715": [0, 0.69444, 0, 0],
+        "728": [0, 0.69444, 0, 0],
+        "729": [0, 0.69444, 0, 0],
+        "730": [0, 0.69444, 0, 0],
+        "732": [0, 0.69444, 0, 0],
+        "768": [0, 0.69444, 0, 0],
+        "769": [0, 0.69444, 0, 0],
+        "770": [0, 0.69444, 0, 0],
+        "771": [0, 0.69444, 0, 0],
+        "772": [0, 0.59611, 0, 0],
+        "774": [0, 0.69444, 0, 0],
+        "775": [0, 0.69444, 0, 0],
+        "776": [0, 0.69444, 0, 0],
+        "778": [0, 0.69444, 0, 0],
+        "779": [0, 0.69444, 0, 0],
+        "780": [0, 0.63194, 0, 0],
+        "824": [0.19444, 0.69444, 0, 0],
+        "915": [0, 0.68611, 0, 0],
+        "916": [0, 0.68611, 0, 0],
+        "920": [0, 0.68611, 0, 0],
+        "923": [0, 0.68611, 0, 0],
+        "926": [0, 0.68611, 0, 0],
+        "928": [0, 0.68611, 0, 0],
+        "931": [0, 0.68611, 0, 0],
+        "933": [0, 0.68611, 0, 0],
+        "934": [0, 0.68611, 0, 0],
+        "936": [0, 0.68611, 0, 0],
+        "937": [0, 0.68611, 0, 0],
+        "8211": [0, 0.44444, 0.03194, 0],
+        "8212": [0, 0.44444, 0.03194, 0],
+        "8216": [0, 0.69444, 0, 0],
+        "8217": [0, 0.69444, 0, 0],
+        "8220": [0, 0.69444, 0, 0],
+        "8221": [0, 0.69444, 0, 0],
+        "8224": [0.19444, 0.69444, 0, 0],
+        "8225": [0.19444, 0.69444, 0, 0],
+        "8242": [0, 0.55556, 0, 0],
+        "8407": [0, 0.72444, 0.15486, 0],
+        "8463": [0, 0.69444, 0, 0],
+        "8465": [0, 0.69444, 0, 0],
+        "8467": [0, 0.69444, 0, 0],
+        "8472": [0.19444, 0.44444, 0, 0],
+        "8476": [0, 0.69444, 0, 0],
+        "8501": [0, 0.69444, 0, 0],
+        "8592": [-0.10889, 0.39111, 0, 0],
+        "8593": [0.19444, 0.69444, 0, 0],
+        "8594": [-0.10889, 0.39111, 0, 0],
+        "8595": [0.19444, 0.69444, 0, 0],
+        "8596": [-0.10889, 0.39111, 0, 0],
+        "8597": [0.25, 0.75, 0, 0],
+        "8598": [0.19444, 0.69444, 0, 0],
+        "8599": [0.19444, 0.69444, 0, 0],
+        "8600": [0.19444, 0.69444, 0, 0],
+        "8601": [0.19444, 0.69444, 0, 0],
+        "8636": [-0.10889, 0.39111, 0, 0],
+        "8637": [-0.10889, 0.39111, 0, 0],
+        "8640": [-0.10889, 0.39111, 0, 0],
+        "8641": [-0.10889, 0.39111, 0, 0],
+        "8656": [-0.10889, 0.39111, 0, 0],
+        "8657": [0.19444, 0.69444, 0, 0],
+        "8658": [-0.10889, 0.39111, 0, 0],
+        "8659": [0.19444, 0.69444, 0, 0],
+        "8660": [-0.10889, 0.39111, 0, 0],
+        "8661": [0.25, 0.75, 0, 0],
+        "8704": [0, 0.69444, 0, 0],
+        "8706": [0, 0.69444, 0.06389, 0],
+        "8707": [0, 0.69444, 0, 0],
+        "8709": [0.05556, 0.75, 0, 0],
+        "8711": [0, 0.68611, 0, 0],
+        "8712": [0.08556, 0.58556, 0, 0],
+        "8715": [0.08556, 0.58556, 0, 0],
+        "8722": [0.13333, 0.63333, 0, 0],
+        "8723": [0.13333, 0.63333, 0, 0],
+        "8725": [0.25, 0.75, 0, 0],
+        "8726": [0.25, 0.75, 0, 0],
+        "8727": [-0.02778, 0.47222, 0, 0],
+        "8728": [-0.02639, 0.47361, 0, 0],
+        "8729": [-0.02639, 0.47361, 0, 0],
+        "8730": [0.18, 0.82, 0, 0],
+        "8733": [0, 0.44444, 0, 0],
+        "8734": [0, 0.44444, 0, 0],
+        "8736": [0, 0.69224, 0, 0],
+        "8739": [0.25, 0.75, 0, 0],
+        "8741": [0.25, 0.75, 0, 0],
+        "8743": [0, 0.55556, 0, 0],
+        "8744": [0, 0.55556, 0, 0],
+        "8745": [0, 0.55556, 0, 0],
+        "8746": [0, 0.55556, 0, 0],
+        "8747": [0.19444, 0.69444, 0.12778, 0],
+        "8764": [-0.10889, 0.39111, 0, 0],
+        "8768": [0.19444, 0.69444, 0, 0],
+        "8771": [0.00222, 0.50222, 0, 0],
+        "8776": [0.02444, 0.52444, 0, 0],
+        "8781": [0.00222, 0.50222, 0, 0],
+        "8801": [0.00222, 0.50222, 0, 0],
+        "8804": [0.19667, 0.69667, 0, 0],
+        "8805": [0.19667, 0.69667, 0, 0],
+        "8810": [0.08556, 0.58556, 0, 0],
+        "8811": [0.08556, 0.58556, 0, 0],
+        "8826": [0.08556, 0.58556, 0, 0],
+        "8827": [0.08556, 0.58556, 0, 0],
+        "8834": [0.08556, 0.58556, 0, 0],
+        "8835": [0.08556, 0.58556, 0, 0],
+        "8838": [0.19667, 0.69667, 0, 0],
+        "8839": [0.19667, 0.69667, 0, 0],
+        "8846": [0, 0.55556, 0, 0],
+        "8849": [0.19667, 0.69667, 0, 0],
+        "8850": [0.19667, 0.69667, 0, 0],
+        "8851": [0, 0.55556, 0, 0],
+        "8852": [0, 0.55556, 0, 0],
+        "8853": [0.13333, 0.63333, 0, 0],
+        "8854": [0.13333, 0.63333, 0, 0],
+        "8855": [0.13333, 0.63333, 0, 0],
+        "8856": [0.13333, 0.63333, 0, 0],
+        "8857": [0.13333, 0.63333, 0, 0],
+        "8866": [0, 0.69444, 0, 0],
+        "8867": [0, 0.69444, 0, 0],
+        "8868": [0, 0.69444, 0, 0],
+        "8869": [0, 0.69444, 0, 0],
+        "8900": [-0.02639, 0.47361, 0, 0],
+        "8901": [-0.02639, 0.47361, 0, 0],
+        "8902": [-0.02778, 0.47222, 0, 0],
+        "8968": [0.25, 0.75, 0, 0],
+        "8969": [0.25, 0.75, 0, 0],
+        "8970": [0.25, 0.75, 0, 0],
+        "8971": [0.25, 0.75, 0, 0],
+        "8994": [-0.13889, 0.36111, 0, 0],
+        "8995": [-0.13889, 0.36111, 0, 0],
+        "9651": [0.19444, 0.69444, 0, 0],
+        "9657": [-0.02778, 0.47222, 0, 0],
+        "9661": [0.19444, 0.69444, 0, 0],
+        "9667": [-0.02778, 0.47222, 0, 0],
+        "9711": [0.19444, 0.69444, 0, 0],
+        "9824": [0.12963, 0.69444, 0, 0],
+        "9825": [0.12963, 0.69444, 0, 0],
+        "9826": [0.12963, 0.69444, 0, 0],
+        "9827": [0.12963, 0.69444, 0, 0],
+        "9837": [0, 0.75, 0, 0],
+        "9838": [0.19444, 0.69444, 0, 0],
+        "9839": [0.19444, 0.69444, 0, 0],
+        "10216": [0.25, 0.75, 0, 0],
+        "10217": [0.25, 0.75, 0, 0],
+        "10815": [0, 0.68611, 0, 0],
+        "10927": [0.19667, 0.69667, 0, 0],
+        "10928": [0.19667, 0.69667, 0, 0]
+    },
+    "Main-Italic": {
+        "33": [0, 0.69444, 0.12417, 0],
+        "34": [0, 0.69444, 0.06961, 0],
+        "35": [0.19444, 0.69444, 0.06616, 0],
+        "37": [0.05556, 0.75, 0.13639, 0],
+        "38": [0, 0.69444, 0.09694, 0],
+        "39": [0, 0.69444, 0.12417, 0],
+        "40": [0.25, 0.75, 0.16194, 0],
+        "41": [0.25, 0.75, 0.03694, 0],
+        "42": [0, 0.75, 0.14917, 0],
+        "43": [0.05667, 0.56167, 0.03694, 0],
+        "44": [0.19444, 0.10556, 0, 0],
+        "45": [0, 0.43056, 0.02826, 0],
+        "46": [0, 0.10556, 0, 0],
+        "47": [0.25, 0.75, 0.16194, 0],
+        "48": [0, 0.64444, 0.13556, 0],
+        "49": [0, 0.64444, 0.13556, 0],
+        "50": [0, 0.64444, 0.13556, 0],
+        "51": [0, 0.64444, 0.13556, 0],
+        "52": [0.19444, 0.64444, 0.13556, 0],
+        "53": [0, 0.64444, 0.13556, 0],
+        "54": [0, 0.64444, 0.13556, 0],
+        "55": [0.19444, 0.64444, 0.13556, 0],
+        "56": [0, 0.64444, 0.13556, 0],
+        "57": [0, 0.64444, 0.13556, 0],
+        "58": [0, 0.43056, 0.0582, 0],
+        "59": [0.19444, 0.43056, 0.0582, 0],
+        "61": [-0.13313, 0.36687, 0.06616, 0],
+        "63": [0, 0.69444, 0.1225, 0],
+        "64": [0, 0.69444, 0.09597, 0],
+        "65": [0, 0.68333, 0, 0],
+        "66": [0, 0.68333, 0.10257, 0],
+        "67": [0, 0.68333, 0.14528, 0],
+        "68": [0, 0.68333, 0.09403, 0],
+        "69": [0, 0.68333, 0.12028, 0],
+        "70": [0, 0.68333, 0.13305, 0],
+        "71": [0, 0.68333, 0.08722, 0],
+        "72": [0, 0.68333, 0.16389, 0],
+        "73": [0, 0.68333, 0.15806, 0],
+        "74": [0, 0.68333, 0.14028, 0],
+        "75": [0, 0.68333, 0.14528, 0],
+        "76": [0, 0.68333, 0, 0],
+        "77": [0, 0.68333, 0.16389, 0],
+        "78": [0, 0.68333, 0.16389, 0],
+        "79": [0, 0.68333, 0.09403, 0],
+        "80": [0, 0.68333, 0.10257, 0],
+        "81": [0.19444, 0.68333, 0.09403, 0],
+        "82": [0, 0.68333, 0.03868, 0],
+        "83": [0, 0.68333, 0.11972, 0],
+        "84": [0, 0.68333, 0.13305, 0],
+        "85": [0, 0.68333, 0.16389, 0],
+        "86": [0, 0.68333, 0.18361, 0],
+        "87": [0, 0.68333, 0.18361, 0],
+        "88": [0, 0.68333, 0.15806, 0],
+        "89": [0, 0.68333, 0.19383, 0],
+        "90": [0, 0.68333, 0.14528, 0],
+        "91": [0.25, 0.75, 0.1875, 0],
+        "93": [0.25, 0.75, 0.10528, 0],
+        "94": [0, 0.69444, 0.06646, 0],
+        "95": [0.31, 0.12056, 0.09208, 0],
+        "97": [0, 0.43056, 0.07671, 0],
+        "98": [0, 0.69444, 0.06312, 0],
+        "99": [0, 0.43056, 0.05653, 0],
+        "100": [0, 0.69444, 0.10333, 0],
+        "101": [0, 0.43056, 0.07514, 0],
+        "102": [0.19444, 0.69444, 0.21194, 0],
+        "103": [0.19444, 0.43056, 0.08847, 0],
+        "104": [0, 0.69444, 0.07671, 0],
+        "105": [0, 0.65536, 0.1019, 0],
+        "106": [0.19444, 0.65536, 0.14467, 0],
+        "107": [0, 0.69444, 0.10764, 0],
+        "108": [0, 0.69444, 0.10333, 0],
+        "109": [0, 0.43056, 0.07671, 0],
+        "110": [0, 0.43056, 0.07671, 0],
+        "111": [0, 0.43056, 0.06312, 0],
+        "112": [0.19444, 0.43056, 0.06312, 0],
+        "113": [0.19444, 0.43056, 0.08847, 0],
+        "114": [0, 0.43056, 0.10764, 0],
+        "115": [0, 0.43056, 0.08208, 0],
+        "116": [0, 0.61508, 0.09486, 0],
+        "117": [0, 0.43056, 0.07671, 0],
+        "118": [0, 0.43056, 0.10764, 0],
+        "119": [0, 0.43056, 0.10764, 0],
+        "120": [0, 0.43056, 0.12042, 0],
+        "121": [0.19444, 0.43056, 0.08847, 0],
+        "122": [0, 0.43056, 0.12292, 0],
+        "126": [0.35, 0.31786, 0.11585, 0],
+        "163": [0, 0.69444, 0, 0],
+        "305": [0, 0.43056, 0, 0.02778],
+        "567": [0.19444, 0.43056, 0, 0.08334],
+        "768": [0, 0.69444, 0, 0],
+        "769": [0, 0.69444, 0.09694, 0],
+        "770": [0, 0.69444, 0.06646, 0],
+        "771": [0, 0.66786, 0.11585, 0],
+        "772": [0, 0.56167, 0.10333, 0],
+        "774": [0, 0.69444, 0.10806, 0],
+        "775": [0, 0.66786, 0.11752, 0],
+        "776": [0, 0.66786, 0.10474, 0],
+        "778": [0, 0.69444, 0, 0],
+        "779": [0, 0.69444, 0.1225, 0],
+        "780": [0, 0.62847, 0.08295, 0],
+        "915": [0, 0.68333, 0.13305, 0],
+        "916": [0, 0.68333, 0, 0],
+        "920": [0, 0.68333, 0.09403, 0],
+        "923": [0, 0.68333, 0, 0],
+        "926": [0, 0.68333, 0.15294, 0],
+        "928": [0, 0.68333, 0.16389, 0],
+        "931": [0, 0.68333, 0.12028, 0],
+        "933": [0, 0.68333, 0.11111, 0],
+        "934": [0, 0.68333, 0.05986, 0],
+        "936": [0, 0.68333, 0.11111, 0],
+        "937": [0, 0.68333, 0.10257, 0],
+        "8211": [0, 0.43056, 0.09208, 0],
+        "8212": [0, 0.43056, 0.09208, 0],
+        "8216": [0, 0.69444, 0.12417, 0],
+        "8217": [0, 0.69444, 0.12417, 0],
+        "8220": [0, 0.69444, 0.1685, 0],
+        "8221": [0, 0.69444, 0.06961, 0],
+        "8463": [0, 0.68889, 0, 0]
+    },
+    "Main-Regular": {
+        "32": [0, 0, 0, 0],
+        "33": [0, 0.69444, 0, 0],
+        "34": [0, 0.69444, 0, 0],
+        "35": [0.19444, 0.69444, 0, 0],
+        "36": [0.05556, 0.75, 0, 0],
+        "37": [0.05556, 0.75, 0, 0],
+        "38": [0, 0.69444, 0, 0],
+        "39": [0, 0.69444, 0, 0],
+        "40": [0.25, 0.75, 0, 0],
+        "41": [0.25, 0.75, 0, 0],
+        "42": [0, 0.75, 0, 0],
+        "43": [0.08333, 0.58333, 0, 0],
+        "44": [0.19444, 0.10556, 0, 0],
+        "45": [0, 0.43056, 0, 0],
+        "46": [0, 0.10556, 0, 0],
+        "47": [0.25, 0.75, 0, 0],
+        "48": [0, 0.64444, 0, 0],
+        "49": [0, 0.64444, 0, 0],
+        "50": [0, 0.64444, 0, 0],
+        "51": [0, 0.64444, 0, 0],
+        "52": [0, 0.64444, 0, 0],
+        "53": [0, 0.64444, 0, 0],
+        "54": [0, 0.64444, 0, 0],
+        "55": [0, 0.64444, 0, 0],
+        "56": [0, 0.64444, 0, 0],
+        "57": [0, 0.64444, 0, 0],
+        "58": [0, 0.43056, 0, 0],
+        "59": [0.19444, 0.43056, 0, 0],
+        "60": [0.0391, 0.5391, 0, 0],
+        "61": [-0.13313, 0.36687, 0, 0],
+        "62": [0.0391, 0.5391, 0, 0],
+        "63": [0, 0.69444, 0, 0],
+        "64": [0, 0.69444, 0, 0],
+        "65": [0, 0.68333, 0, 0],
+        "66": [0, 0.68333, 0, 0],
+        "67": [0, 0.68333, 0, 0],
+        "68": [0, 0.68333, 0, 0],
+        "69": [0, 0.68333, 0, 0],
+        "70": [0, 0.68333, 0, 0],
+        "71": [0, 0.68333, 0, 0],
+        "72": [0, 0.68333, 0, 0],
+        "73": [0, 0.68333, 0, 0],
+        "74": [0, 0.68333, 0, 0],
+        "75": [0, 0.68333, 0, 0],
+        "76": [0, 0.68333, 0, 0],
+        "77": [0, 0.68333, 0, 0],
+        "78": [0, 0.68333, 0, 0],
+        "79": [0, 0.68333, 0, 0],
+        "80": [0, 0.68333, 0, 0],
+        "81": [0.19444, 0.68333, 0, 0],
+        "82": [0, 0.68333, 0, 0],
+        "83": [0, 0.68333, 0, 0],
+        "84": [0, 0.68333, 0, 0],
+        "85": [0, 0.68333, 0, 0],
+        "86": [0, 0.68333, 0.01389, 0],
+        "87": [0, 0.68333, 0.01389, 0],
+        "88": [0, 0.68333, 0, 0],
+        "89": [0, 0.68333, 0.025, 0],
+        "90": [0, 0.68333, 0, 0],
+        "91": [0.25, 0.75, 0, 0],
+        "92": [0.25, 0.75, 0, 0],
+        "93": [0.25, 0.75, 0, 0],
+        "94": [0, 0.69444, 0, 0],
+        "95": [0.31, 0.12056, 0.02778, 0],
+        "96": [0, 0.69444, 0, 0],
+        "97": [0, 0.43056, 0, 0],
+        "98": [0, 0.69444, 0, 0],
+        "99": [0, 0.43056, 0, 0],
+        "100": [0, 0.69444, 0, 0],
+        "101": [0, 0.43056, 0, 0],
+        "102": [0, 0.69444, 0.07778, 0],
+        "103": [0.19444, 0.43056, 0.01389, 0],
+        "104": [0, 0.69444, 0, 0],
+        "105": [0, 0.66786, 0, 0],
+        "106": [0.19444, 0.66786, 0, 0],
+        "107": [0, 0.69444, 0, 0],
+        "108": [0, 0.69444, 0, 0],
+        "109": [0, 0.43056, 0, 0],
+        "110": [0, 0.43056, 0, 0],
+        "111": [0, 0.43056, 0, 0],
+        "112": [0.19444, 0.43056, 0, 0],
+        "113": [0.19444, 0.43056, 0, 0],
+        "114": [0, 0.43056, 0, 0],
+        "115": [0, 0.43056, 0, 0],
+        "116": [0, 0.61508, 0, 0],
+        "117": [0, 0.43056, 0, 0],
+        "118": [0, 0.43056, 0.01389, 0],
+        "119": [0, 0.43056, 0.01389, 0],
+        "120": [0, 0.43056, 0, 0],
+        "121": [0.19444, 0.43056, 0.01389, 0],
+        "122": [0, 0.43056, 0, 0],
+        "123": [0.25, 0.75, 0, 0],
+        "124": [0.25, 0.75, 0, 0],
+        "125": [0.25, 0.75, 0, 0],
+        "126": [0.35, 0.31786, 0, 0],
+        "160": [0, 0, 0, 0],
+        "168": [0, 0.66786, 0, 0],
+        "172": [0, 0.43056, 0, 0],
+        "175": [0, 0.56778, 0, 0],
+        "176": [0, 0.69444, 0, 0],
+        "177": [0.08333, 0.58333, 0, 0],
+        "180": [0, 0.69444, 0, 0],
+        "215": [0.08333, 0.58333, 0, 0],
+        "247": [0.08333, 0.58333, 0, 0],
+        "305": [0, 0.43056, 0, 0],
+        "567": [0.19444, 0.43056, 0, 0],
+        "710": [0, 0.69444, 0, 0],
+        "711": [0, 0.62847, 0, 0],
+        "713": [0, 0.56778, 0, 0],
+        "714": [0, 0.69444, 0, 0],
+        "715": [0, 0.69444, 0, 0],
+        "728": [0, 0.69444, 0, 0],
+        "729": [0, 0.66786, 0, 0],
+        "730": [0, 0.69444, 0, 0],
+        "732": [0, 0.66786, 0, 0],
+        "768": [0, 0.69444, 0, 0],
+        "769": [0, 0.69444, 0, 0],
+        "770": [0, 0.69444, 0, 0],
+        "771": [0, 0.66786, 0, 0],
+        "772": [0, 0.56778, 0, 0],
+        "774": [0, 0.69444, 0, 0],
+        "775": [0, 0.66786, 0, 0],
+        "776": [0, 0.66786, 0, 0],
+        "778": [0, 0.69444, 0, 0],
+        "779": [0, 0.69444, 0, 0],
+        "780": [0, 0.62847, 0, 0],
+        "824": [0.19444, 0.69444, 0, 0],
+        "915": [0, 0.68333, 0, 0],
+        "916": [0, 0.68333, 0, 0],
+        "920": [0, 0.68333, 0, 0],
+        "923": [0, 0.68333, 0, 0],
+        "926": [0, 0.68333, 0, 0],
+        "928": [0, 0.68333, 0, 0],
+        "931": [0, 0.68333, 0, 0],
+        "933": [0, 0.68333, 0, 0],
+        "934": [0, 0.68333, 0, 0],
+        "936": [0, 0.68333, 0, 0],
+        "937": [0, 0.68333, 0, 0],
+        "8211": [0, 0.43056, 0.02778, 0],
+        "8212": [0, 0.43056, 0.02778, 0],
+        "8216": [0, 0.69444, 0, 0],
+        "8217": [0, 0.69444, 0, 0],
+        "8220": [0, 0.69444, 0, 0],
+        "8221": [0, 0.69444, 0, 0],
+        "8224": [0.19444, 0.69444, 0, 0],
+        "8225": [0.19444, 0.69444, 0, 0],
+        "8230": [0, 0.12, 0, 0],
+        "8242": [0, 0.55556, 0, 0],
+        "8407": [0, 0.71444, 0.15382, 0],
+        "8463": [0, 0.68889, 0, 0],
+        "8465": [0, 0.69444, 0, 0],
+        "8467": [0, 0.69444, 0, 0.11111],
+        "8472": [0.19444, 0.43056, 0, 0.11111],
+        "8476": [0, 0.69444, 0, 0],
+        "8501": [0, 0.69444, 0, 0],
+        "8592": [-0.13313, 0.36687, 0, 0],
+        "8593": [0.19444, 0.69444, 0, 0],
+        "8594": [-0.13313, 0.36687, 0, 0],
+        "8595": [0.19444, 0.69444, 0, 0],
+        "8596": [-0.13313, 0.36687, 0, 0],
+        "8597": [0.25, 0.75, 0, 0],
+        "8598": [0.19444, 0.69444, 0, 0],
+        "8599": [0.19444, 0.69444, 0, 0],
+        "8600": [0.19444, 0.69444, 0, 0],
+        "8601": [0.19444, 0.69444, 0, 0],
+        "8614": [0.011, 0.511, 0, 0],
+        "8617": [0.011, 0.511, 0, 0],
+        "8618": [0.011, 0.511, 0, 0],
+        "8636": [-0.13313, 0.36687, 0, 0],
+        "8637": [-0.13313, 0.36687, 0, 0],
+        "8640": [-0.13313, 0.36687, 0, 0],
+        "8641": [-0.13313, 0.36687, 0, 0],
+        "8652": [0.011, 0.671, 0, 0],
+        "8656": [-0.13313, 0.36687, 0, 0],
+        "8657": [0.19444, 0.69444, 0, 0],
+        "8658": [-0.13313, 0.36687, 0, 0],
+        "8659": [0.19444, 0.69444, 0, 0],
+        "8660": [-0.13313, 0.36687, 0, 0],
+        "8661": [0.25, 0.75, 0, 0],
+        "8704": [0, 0.69444, 0, 0],
+        "8706": [0, 0.69444, 0.05556, 0.08334],
+        "8707": [0, 0.69444, 0, 0],
+        "8709": [0.05556, 0.75, 0, 0],
+        "8711": [0, 0.68333, 0, 0],
+        "8712": [0.0391, 0.5391, 0, 0],
+        "8715": [0.0391, 0.5391, 0, 0],
+        "8722": [0.08333, 0.58333, 0, 0],
+        "8723": [0.08333, 0.58333, 0, 0],
+        "8725": [0.25, 0.75, 0, 0],
+        "8726": [0.25, 0.75, 0, 0],
+        "8727": [-0.03472, 0.46528, 0, 0],
+        "8728": [-0.05555, 0.44445, 0, 0],
+        "8729": [-0.05555, 0.44445, 0, 0],
+        "8730": [0.2, 0.8, 0, 0],
+        "8733": [0, 0.43056, 0, 0],
+        "8734": [0, 0.43056, 0, 0],
+        "8736": [0, 0.69224, 0, 0],
+        "8739": [0.25, 0.75, 0, 0],
+        "8741": [0.25, 0.75, 0, 0],
+        "8743": [0, 0.55556, 0, 0],
+        "8744": [0, 0.55556, 0, 0],
+        "8745": [0, 0.55556, 0, 0],
+        "8746": [0, 0.55556, 0, 0],
+        "8747": [0.19444, 0.69444, 0.11111, 0],
+        "8764": [-0.13313, 0.36687, 0, 0],
+        "8768": [0.19444, 0.69444, 0, 0],
+        "8771": [-0.03625, 0.46375, 0, 0],
+        "8773": [-0.022, 0.589, 0, 0],
+        "8776": [-0.01688, 0.48312, 0, 0],
+        "8781": [-0.03625, 0.46375, 0, 0],
+        "8784": [-0.133, 0.67, 0, 0],
+        "8800": [0.215, 0.716, 0, 0],
+        "8801": [-0.03625, 0.46375, 0, 0],
+        "8804": [0.13597, 0.63597, 0, 0],
+        "8805": [0.13597, 0.63597, 0, 0],
+        "8810": [0.0391, 0.5391, 0, 0],
+        "8811": [0.0391, 0.5391, 0, 0],
+        "8826": [0.0391, 0.5391, 0, 0],
+        "8827": [0.0391, 0.5391, 0, 0],
+        "8834": [0.0391, 0.5391, 0, 0],
+        "8835": [0.0391, 0.5391, 0, 0],
+        "8838": [0.13597, 0.63597, 0, 0],
+        "8839": [0.13597, 0.63597, 0, 0],
+        "8846": [0, 0.55556, 0, 0],
+        "8849": [0.13597, 0.63597, 0, 0],
+        "8850": [0.13597, 0.63597, 0, 0],
+        "8851": [0, 0.55556, 0, 0],
+        "8852": [0, 0.55556, 0, 0],
+        "8853": [0.08333, 0.58333, 0, 0],
+        "8854": [0.08333, 0.58333, 0, 0],
+        "8855": [0.08333, 0.58333, 0, 0],
+        "8856": [0.08333, 0.58333, 0, 0],
+        "8857": [0.08333, 0.58333, 0, 0],
+        "8866": [0, 0.69444, 0, 0],
+        "8867": [0, 0.69444, 0, 0],
+        "8868": [0, 0.69444, 0, 0],
+        "8869": [0, 0.69444, 0, 0],
+        "8872": [0.249, 0.75, 0, 0],
+        "8900": [-0.05555, 0.44445, 0, 0],
+        "8901": [-0.05555, 0.44445, 0, 0],
+        "8902": [-0.03472, 0.46528, 0, 0],
+        "8904": [0.005, 0.505, 0, 0],
+        "8942": [0.03, 0.9, 0, 0],
+        "8943": [-0.19, 0.31, 0, 0],
+        "8945": [-0.1, 0.82, 0, 0],
+        "8968": [0.25, 0.75, 0, 0],
+        "8969": [0.25, 0.75, 0, 0],
+        "8970": [0.25, 0.75, 0, 0],
+        "8971": [0.25, 0.75, 0, 0],
+        "8994": [-0.14236, 0.35764, 0, 0],
+        "8995": [-0.14236, 0.35764, 0, 0],
+        "9136": [0.244, 0.744, 0, 0],
+        "9137": [0.244, 0.744, 0, 0],
+        "9651": [0.19444, 0.69444, 0, 0],
+        "9657": [-0.03472, 0.46528, 0, 0],
+        "9661": [0.19444, 0.69444, 0, 0],
+        "9667": [-0.03472, 0.46528, 0, 0],
+        "9711": [0.19444, 0.69444, 0, 0],
+        "9824": [0.12963, 0.69444, 0, 0],
+        "9825": [0.12963, 0.69444, 0, 0],
+        "9826": [0.12963, 0.69444, 0, 0],
+        "9827": [0.12963, 0.69444, 0, 0],
+        "9837": [0, 0.75, 0, 0],
+        "9838": [0.19444, 0.69444, 0, 0],
+        "9839": [0.19444, 0.69444, 0, 0],
+        "10216": [0.25, 0.75, 0, 0],
+        "10217": [0.25, 0.75, 0, 0],
+        "10222": [0.244, 0.744, 0, 0],
+        "10223": [0.244, 0.744, 0, 0],
+        "10229": [0.011, 0.511, 0, 0],
+        "10230": [0.011, 0.511, 0, 0],
+        "10231": [0.011, 0.511, 0, 0],
+        "10232": [0.024, 0.525, 0, 0],
+        "10233": [0.024, 0.525, 0, 0],
+        "10234": [0.024, 0.525, 0, 0],
+        "10236": [0.011, 0.511, 0, 0],
+        "10815": [0, 0.68333, 0, 0],
+        "10927": [0.13597, 0.63597, 0, 0],
+        "10928": [0.13597, 0.63597, 0, 0]
+    },
+    "Math-BoldItalic": {
+        "47": [0.19444, 0.69444, 0, 0],
+        "65": [0, 0.68611, 0, 0],
+        "66": [0, 0.68611, 0.04835, 0],
+        "67": [0, 0.68611, 0.06979, 0],
+        "68": [0, 0.68611, 0.03194, 0],
+        "69": [0, 0.68611, 0.05451, 0],
+        "70": [0, 0.68611, 0.15972, 0],
+        "71": [0, 0.68611, 0, 0],
+        "72": [0, 0.68611, 0.08229, 0],
+        "73": [0, 0.68611, 0.07778, 0],
+        "74": [0, 0.68611, 0.10069, 0],
+        "75": [0, 0.68611, 0.06979, 0],
+        "76": [0, 0.68611, 0, 0],
+        "77": [0, 0.68611, 0.11424, 0],
+        "78": [0, 0.68611, 0.11424, 0],
+        "79": [0, 0.68611, 0.03194, 0],
+        "80": [0, 0.68611, 0.15972, 0],
+        "81": [0.19444, 0.68611, 0, 0],
+        "82": [0, 0.68611, 0.00421, 0],
+        "83": [0, 0.68611, 0.05382, 0],
+        "84": [0, 0.68611, 0.15972, 0],
+        "85": [0, 0.68611, 0.11424, 0],
+        "86": [0, 0.68611, 0.25555, 0],
+        "87": [0, 0.68611, 0.15972, 0],
+        "88": [0, 0.68611, 0.07778, 0],
+        "89": [0, 0.68611, 0.25555, 0],
+        "90": [0, 0.68611, 0.06979, 0],
+        "97": [0, 0.44444, 0, 0],
+        "98": [0, 0.69444, 0, 0],
+        "99": [0, 0.44444, 0, 0],
+        "100": [0, 0.69444, 0, 0],
+        "101": [0, 0.44444, 0, 0],
+        "102": [0.19444, 0.69444, 0.11042, 0],
+        "103": [0.19444, 0.44444, 0.03704, 0],
+        "104": [0, 0.69444, 0, 0],
+        "105": [0, 0.69326, 0, 0],
+        "106": [0.19444, 0.69326, 0.0622, 0],
+        "107": [0, 0.69444, 0.01852, 0],
+        "108": [0, 0.69444, 0.0088, 0],
+        "109": [0, 0.44444, 0, 0],
+        "110": [0, 0.44444, 0, 0],
+        "111": [0, 0.44444, 0, 0],
+        "112": [0.19444, 0.44444, 0, 0],
+        "113": [0.19444, 0.44444, 0.03704, 0],
+        "114": [0, 0.44444, 0.03194, 0],
+        "115": [0, 0.44444, 0, 0],
+        "116": [0, 0.63492, 0, 0],
+        "117": [0, 0.44444, 0, 0],
+        "118": [0, 0.44444, 0.03704, 0],
+        "119": [0, 0.44444, 0.02778, 0],
+        "120": [0, 0.44444, 0, 0],
+        "121": [0.19444, 0.44444, 0.03704, 0],
+        "122": [0, 0.44444, 0.04213, 0],
+        "915": [0, 0.68611, 0.15972, 0],
+        "916": [0, 0.68611, 0, 0],
+        "920": [0, 0.68611, 0.03194, 0],
+        "923": [0, 0.68611, 0, 0],
+        "926": [0, 0.68611, 0.07458, 0],
+        "928": [0, 0.68611, 0.08229, 0],
+        "931": [0, 0.68611, 0.05451, 0],
+        "933": [0, 0.68611, 0.15972, 0],
+        "934": [0, 0.68611, 0, 0],
+        "936": [0, 0.68611, 0.11653, 0],
+        "937": [0, 0.68611, 0.04835, 0],
+        "945": [0, 0.44444, 0, 0],
+        "946": [0.19444, 0.69444, 0.03403, 0],
+        "947": [0.19444, 0.44444, 0.06389, 0],
+        "948": [0, 0.69444, 0.03819, 0],
+        "949": [0, 0.44444, 0, 0],
+        "950": [0.19444, 0.69444, 0.06215, 0],
+        "951": [0.19444, 0.44444, 0.03704, 0],
+        "952": [0, 0.69444, 0.03194, 0],
+        "953": [0, 0.44444, 0, 0],
+        "954": [0, 0.44444, 0, 0],
+        "955": [0, 0.69444, 0, 0],
+        "956": [0.19444, 0.44444, 0, 0],
+        "957": [0, 0.44444, 0.06898, 0],
+        "958": [0.19444, 0.69444, 0.03021, 0],
+        "959": [0, 0.44444, 0, 0],
+        "960": [0, 0.44444, 0.03704, 0],
+        "961": [0.19444, 0.44444, 0, 0],
+        "962": [0.09722, 0.44444, 0.07917, 0],
+        "963": [0, 0.44444, 0.03704, 0],
+        "964": [0, 0.44444, 0.13472, 0],
+        "965": [0, 0.44444, 0.03704, 0],
+        "966": [0.19444, 0.44444, 0, 0],
+        "967": [0.19444, 0.44444, 0, 0],
+        "968": [0.19444, 0.69444, 0.03704, 0],
+        "969": [0, 0.44444, 0.03704, 0],
+        "977": [0, 0.69444, 0, 0],
+        "981": [0.19444, 0.69444, 0, 0],
+        "982": [0, 0.44444, 0.03194, 0],
+        "1009": [0.19444, 0.44444, 0, 0],
+        "1013": [0, 0.44444, 0, 0]
+    },
+    "Math-Italic": {
+        "47": [0.19444, 0.69444, 0, 0],
+        "65": [0, 0.68333, 0, 0.13889],
+        "66": [0, 0.68333, 0.05017, 0.08334],
+        "67": [0, 0.68333, 0.07153, 0.08334],
+        "68": [0, 0.68333, 0.02778, 0.05556],
+        "69": [0, 0.68333, 0.05764, 0.08334],
+        "70": [0, 0.68333, 0.13889, 0.08334],
+        "71": [0, 0.68333, 0, 0.08334],
+        "72": [0, 0.68333, 0.08125, 0.05556],
+        "73": [0, 0.68333, 0.07847, 0.11111],
+        "74": [0, 0.68333, 0.09618, 0.16667],
+        "75": [0, 0.68333, 0.07153, 0.05556],
+        "76": [0, 0.68333, 0, 0.02778],
+        "77": [0, 0.68333, 0.10903, 0.08334],
+        "78": [0, 0.68333, 0.10903, 0.08334],
+        "79": [0, 0.68333, 0.02778, 0.08334],
+        "80": [0, 0.68333, 0.13889, 0.08334],
+        "81": [0.19444, 0.68333, 0, 0.08334],
+        "82": [0, 0.68333, 0.00773, 0.08334],
+        "83": [0, 0.68333, 0.05764, 0.08334],
+        "84": [0, 0.68333, 0.13889, 0.08334],
+        "85": [0, 0.68333, 0.10903, 0.02778],
+        "86": [0, 0.68333, 0.22222, 0],
+        "87": [0, 0.68333, 0.13889, 0],
+        "88": [0, 0.68333, 0.07847, 0.08334],
+        "89": [0, 0.68333, 0.22222, 0],
+        "90": [0, 0.68333, 0.07153, 0.08334],
+        "97": [0, 0.43056, 0, 0],
+        "98": [0, 0.69444, 0, 0],
+        "99": [0, 0.43056, 0, 0.05556],
+        "100": [0, 0.69444, 0, 0.16667],
+        "101": [0, 0.43056, 0, 0.05556],
+        "102": [0.19444, 0.69444, 0.10764, 0.16667],
+        "103": [0.19444, 0.43056, 0.03588, 0.02778],
+        "104": [0, 0.69444, 0, 0],
+        "105": [0, 0.65952, 0, 0],
+        "106": [0.19444, 0.65952, 0.05724, 0],
+        "107": [0, 0.69444, 0.03148, 0],
+        "108": [0, 0.69444, 0.01968, 0.08334],
+        "109": [0, 0.43056, 0, 0],
+        "110": [0, 0.43056, 0, 0],
+        "111": [0, 0.43056, 0, 0.05556],
+        "112": [0.19444, 0.43056, 0, 0.08334],
+        "113": [0.19444, 0.43056, 0.03588, 0.08334],
+        "114": [0, 0.43056, 0.02778, 0.05556],
+        "115": [0, 0.43056, 0, 0.05556],
+        "116": [0, 0.61508, 0, 0.08334],
+        "117": [0, 0.43056, 0, 0.02778],
+        "118": [0, 0.43056, 0.03588, 0.02778],
+        "119": [0, 0.43056, 0.02691, 0.08334],
+        "120": [0, 0.43056, 0, 0.02778],
+        "121": [0.19444, 0.43056, 0.03588, 0.05556],
+        "122": [0, 0.43056, 0.04398, 0.05556],
+        "915": [0, 0.68333, 0.13889, 0.08334],
+        "916": [0, 0.68333, 0, 0.16667],
+        "920": [0, 0.68333, 0.02778, 0.08334],
+        "923": [0, 0.68333, 0, 0.16667],
+        "926": [0, 0.68333, 0.07569, 0.08334],
+        "928": [0, 0.68333, 0.08125, 0.05556],
+        "931": [0, 0.68333, 0.05764, 0.08334],
+        "933": [0, 0.68333, 0.13889, 0.05556],
+        "934": [0, 0.68333, 0, 0.08334],
+        "936": [0, 0.68333, 0.11, 0.05556],
+        "937": [0, 0.68333, 0.05017, 0.08334],
+        "945": [0, 0.43056, 0.0037, 0.02778],
+        "946": [0.19444, 0.69444, 0.05278, 0.08334],
+        "947": [0.19444, 0.43056, 0.05556, 0],
+        "948": [0, 0.69444, 0.03785, 0.05556],
+        "949": [0, 0.43056, 0, 0.08334],
+        "950": [0.19444, 0.69444, 0.07378, 0.08334],
+        "951": [0.19444, 0.43056, 0.03588, 0.05556],
+        "952": [0, 0.69444, 0.02778, 0.08334],
+        "953": [0, 0.43056, 0, 0.05556],
+        "954": [0, 0.43056, 0, 0],
+        "955": [0, 0.69444, 0, 0],
+        "956": [0.19444, 0.43056, 0, 0.02778],
+        "957": [0, 0.43056, 0.06366, 0.02778],
+        "958": [0.19444, 0.69444, 0.04601, 0.11111],
+        "959": [0, 0.43056, 0, 0.05556],
+        "960": [0, 0.43056, 0.03588, 0],
+        "961": [0.19444, 0.43056, 0, 0.08334],
+        "962": [0.09722, 0.43056, 0.07986, 0.08334],
+        "963": [0, 0.43056, 0.03588, 0],
+        "964": [0, 0.43056, 0.1132, 0.02778],
+        "965": [0, 0.43056, 0.03588, 0.02778],
+        "966": [0.19444, 0.43056, 0, 0.08334],
+        "967": [0.19444, 0.43056, 0, 0.05556],
+        "968": [0.19444, 0.69444, 0.03588, 0.11111],
+        "969": [0, 0.43056, 0.03588, 0],
+        "977": [0, 0.69444, 0, 0.08334],
+        "981": [0.19444, 0.69444, 0, 0.08334],
+        "982": [0, 0.43056, 0.02778, 0],
+        "1009": [0.19444, 0.43056, 0, 0.08334],
+        "1013": [0, 0.43056, 0, 0.05556]
+    },
+    "Math-Regular": {
+        "65": [0, 0.68333, 0, 0.13889],
+        "66": [0, 0.68333, 0.05017, 0.08334],
+        "67": [0, 0.68333, 0.07153, 0.08334],
+        "68": [0, 0.68333, 0.02778, 0.05556],
+        "69": [0, 0.68333, 0.05764, 0.08334],
+        "70": [0, 0.68333, 0.13889, 0.08334],
+        "71": [0, 0.68333, 0, 0.08334],
+        "72": [0, 0.68333, 0.08125, 0.05556],
+        "73": [0, 0.68333, 0.07847, 0.11111],
+        "74": [0, 0.68333, 0.09618, 0.16667],
+        "75": [0, 0.68333, 0.07153, 0.05556],
+        "76": [0, 0.68333, 0, 0.02778],
+        "77": [0, 0.68333, 0.10903, 0.08334],
+        "78": [0, 0.68333, 0.10903, 0.08334],
+        "79": [0, 0.68333, 0.02778, 0.08334],
+        "80": [0, 0.68333, 0.13889, 0.08334],
+        "81": [0.19444, 0.68333, 0, 0.08334],
+        "82": [0, 0.68333, 0.00773, 0.08334],
+        "83": [0, 0.68333, 0.05764, 0.08334],
+        "84": [0, 0.68333, 0.13889, 0.08334],
+        "85": [0, 0.68333, 0.10903, 0.02778],
+        "86": [0, 0.68333, 0.22222, 0],
+        "87": [0, 0.68333, 0.13889, 0],
+        "88": [0, 0.68333, 0.07847, 0.08334],
+        "89": [0, 0.68333, 0.22222, 0],
+        "90": [0, 0.68333, 0.07153, 0.08334],
+        "97": [0, 0.43056, 0, 0],
+        "98": [0, 0.69444, 0, 0],
+        "99": [0, 0.43056, 0, 0.05556],
+        "100": [0, 0.69444, 0, 0.16667],
+        "101": [0, 0.43056, 0, 0.05556],
+        "102": [0.19444, 0.69444, 0.10764, 0.16667],
+        "103": [0.19444, 0.43056, 0.03588, 0.02778],
+        "104": [0, 0.69444, 0, 0],
+        "105": [0, 0.65952, 0, 0],
+        "106": [0.19444, 0.65952, 0.05724, 0],
+        "107": [0, 0.69444, 0.03148, 0],
+        "108": [0, 0.69444, 0.01968, 0.08334],
+        "109": [0, 0.43056, 0, 0],
+        "110": [0, 0.43056, 0, 0],
+        "111": [0, 0.43056, 0, 0.05556],
+        "112": [0.19444, 0.43056, 0, 0.08334],
+        "113": [0.19444, 0.43056, 0.03588, 0.08334],
+        "114": [0, 0.43056, 0.02778, 0.05556],
+        "115": [0, 0.43056, 0, 0.05556],
+        "116": [0, 0.61508, 0, 0.08334],
+        "117": [0, 0.43056, 0, 0.02778],
+        "118": [0, 0.43056, 0.03588, 0.02778],
+        "119": [0, 0.43056, 0.02691, 0.08334],
+        "120": [0, 0.43056, 0, 0.02778],
+        "121": [0.19444, 0.43056, 0.03588, 0.05556],
+        "122": [0, 0.43056, 0.04398, 0.05556],
+        "915": [0, 0.68333, 0.13889, 0.08334],
+        "916": [0, 0.68333, 0, 0.16667],
+        "920": [0, 0.68333, 0.02778, 0.08334],
+        "923": [0, 0.68333, 0, 0.16667],
+        "926": [0, 0.68333, 0.07569, 0.08334],
+        "928": [0, 0.68333, 0.08125, 0.05556],
+        "931": [0, 0.68333, 0.05764, 0.08334],
+        "933": [0, 0.68333, 0.13889, 0.05556],
+        "934": [0, 0.68333, 0, 0.08334],
+        "936": [0, 0.68333, 0.11, 0.05556],
+        "937": [0, 0.68333, 0.05017, 0.08334],
+        "945": [0, 0.43056, 0.0037, 0.02778],
+        "946": [0.19444, 0.69444, 0.05278, 0.08334],
+        "947": [0.19444, 0.43056, 0.05556, 0],
+        "948": [0, 0.69444, 0.03785, 0.05556],
+        "949": [0, 0.43056, 0, 0.08334],
+        "950": [0.19444, 0.69444, 0.07378, 0.08334],
+        "951": [0.19444, 0.43056, 0.03588, 0.05556],
+        "952": [0, 0.69444, 0.02778, 0.08334],
+        "953": [0, 0.43056, 0, 0.05556],
+        "954": [0, 0.43056, 0, 0],
+        "955": [0, 0.69444, 0, 0],
+        "956": [0.19444, 0.43056, 0, 0.02778],
+        "957": [0, 0.43056, 0.06366, 0.02778],
+        "958": [0.19444, 0.69444, 0.04601, 0.11111],
+        "959": [0, 0.43056, 0, 0.05556],
+        "960": [0, 0.43056, 0.03588, 0],
+        "961": [0.19444, 0.43056, 0, 0.08334],
+        "962": [0.09722, 0.43056, 0.07986, 0.08334],
+        "963": [0, 0.43056, 0.03588, 0],
+        "964": [0, 0.43056, 0.1132, 0.02778],
+        "965": [0, 0.43056, 0.03588, 0.02778],
+        "966": [0.19444, 0.43056, 0, 0.08334],
+        "967": [0.19444, 0.43056, 0, 0.05556],
+        "968": [0.19444, 0.69444, 0.03588, 0.11111],
+        "969": [0, 0.43056, 0.03588, 0],
+        "977": [0, 0.69444, 0, 0.08334],
+        "981": [0.19444, 0.69444, 0, 0.08334],
+        "982": [0, 0.43056, 0.02778, 0],
+        "1009": [0.19444, 0.43056, 0, 0.08334],
+        "1013": [0, 0.43056, 0, 0.05556]
+    },
+    "SansSerif-Regular": {
+        "33": [0, 0.69444, 0, 0],
+        "34": [0, 0.69444, 0, 0],
+        "35": [0.19444, 0.69444, 0, 0],
+        "36": [0.05556, 0.75, 0, 0],
+        "37": [0.05556, 0.75, 0, 0],
+        "38": [0, 0.69444, 0, 0],
+        "39": [0, 0.69444, 0, 0],
+        "40": [0.25, 0.75, 0, 0],
+        "41": [0.25, 0.75, 0, 0],
+        "42": [0, 0.75, 0, 0],
+        "43": [0.08333, 0.58333, 0, 0],
+        "44": [0.125, 0.08333, 0, 0],
+        "45": [0, 0.44444, 0, 0],
+        "46": [0, 0.08333, 0, 0],
+        "47": [0.25, 0.75, 0, 0],
+        "48": [0, 0.65556, 0, 0],
+        "49": [0, 0.65556, 0, 0],
+        "50": [0, 0.65556, 0, 0],
+        "51": [0, 0.65556, 0, 0],
+        "52": [0, 0.65556, 0, 0],
+        "53": [0, 0.65556, 0, 0],
+        "54": [0, 0.65556, 0, 0],
+        "55": [0, 0.65556, 0, 0],
+        "56": [0, 0.65556, 0, 0],
+        "57": [0, 0.65556, 0, 0],
+        "58": [0, 0.44444, 0, 0],
+        "59": [0.125, 0.44444, 0, 0],
+        "61": [-0.13, 0.37, 0, 0],
+        "63": [0, 0.69444, 0, 0],
+        "64": [0, 0.69444, 0, 0],
+        "65": [0, 0.69444, 0, 0],
+        "66": [0, 0.69444, 0, 0],
+        "67": [0, 0.69444, 0, 0],
+        "68": [0, 0.69444, 0, 0],
+        "69": [0, 0.69444, 0, 0],
+        "70": [0, 0.69444, 0, 0],
+        "71": [0, 0.69444, 0, 0],
+        "72": [0, 0.69444, 0, 0],
+        "73": [0, 0.69444, 0, 0],
+        "74": [0, 0.69444, 0, 0],
+        "75": [0, 0.69444, 0, 0],
+        "76": [0, 0.69444, 0, 0],
+        "77": [0, 0.69444, 0, 0],
+        "78": [0, 0.69444, 0, 0],
+        "79": [0, 0.69444, 0, 0],
+        "80": [0, 0.69444, 0, 0],
+        "81": [0.125, 0.69444, 0, 0],
+        "82": [0, 0.69444, 0, 0],
+        "83": [0, 0.69444, 0, 0],
+        "84": [0, 0.69444, 0, 0],
+        "85": [0, 0.69444, 0, 0],
+        "86": [0, 0.69444, 0.01389, 0],
+        "87": [0, 0.69444, 0.01389, 0],
+        "88": [0, 0.69444, 0, 0],
+        "89": [0, 0.69444, 0.025, 0],
+        "90": [0, 0.69444, 0, 0],
+        "91": [0.25, 0.75, 0, 0],
+        "93": [0.25, 0.75, 0, 0],
+        "94": [0, 0.69444, 0, 0],
+        "95": [0.35, 0.09444, 0.02778, 0],
+        "97": [0, 0.44444, 0, 0],
+        "98": [0, 0.69444, 0, 0],
+        "99": [0, 0.44444, 0, 0],
+        "100": [0, 0.69444, 0, 0],
+        "101": [0, 0.44444, 0, 0],
+        "102": [0, 0.69444, 0.06944, 0],
+        "103": [0.19444, 0.44444, 0.01389, 0],
+        "104": [0, 0.69444, 0, 0],
+        "105": [0, 0.67937, 0, 0],
+        "106": [0.19444, 0.67937, 0, 0],
+        "107": [0, 0.69444, 0, 0],
+        "108": [0, 0.69444, 0, 0],
+        "109": [0, 0.44444, 0, 0],
+        "110": [0, 0.44444, 0, 0],
+        "111": [0, 0.44444, 0, 0],
+        "112": [0.19444, 0.44444, 0, 0],
+        "113": [0.19444, 0.44444, 0, 0],
+        "114": [0, 0.44444, 0.01389, 0],
+        "115": [0, 0.44444, 0, 0],
+        "116": [0, 0.57143, 0, 0],
+        "117": [0, 0.44444, 0, 0],
+        "118": [0, 0.44444, 0.01389, 0],
+        "119": [0, 0.44444, 0.01389, 0],
+        "120": [0, 0.44444, 0, 0],
+        "121": [0.19444, 0.44444, 0.01389, 0],
+        "122": [0, 0.44444, 0, 0],
+        "126": [0.35, 0.32659, 0, 0],
+        "305": [0, 0.44444, 0, 0],
+        "567": [0.19444, 0.44444, 0, 0],
+        "768": [0, 0.69444, 0, 0],
+        "769": [0, 0.69444, 0, 0],
+        "770": [0, 0.69444, 0, 0],
+        "771": [0, 0.67659, 0, 0],
+        "772": [0, 0.60889, 0, 0],
+        "774": [0, 0.69444, 0, 0],
+        "775": [0, 0.67937, 0, 0],
+        "776": [0, 0.67937, 0, 0],
+        "778": [0, 0.69444, 0, 0],
+        "779": [0, 0.69444, 0, 0],
+        "780": [0, 0.63194, 0, 0],
+        "915": [0, 0.69444, 0, 0],
+        "916": [0, 0.69444, 0, 0],
+        "920": [0, 0.69444, 0, 0],
+        "923": [0, 0.69444, 0, 0],
+        "926": [0, 0.69444, 0, 0],
+        "928": [0, 0.69444, 0, 0],
+        "931": [0, 0.69444, 0, 0],
+        "933": [0, 0.69444, 0, 0],
+        "934": [0, 0.69444, 0, 0],
+        "936": [0, 0.69444, 0, 0],
+        "937": [0, 0.69444, 0, 0],
+        "8211": [0, 0.44444, 0.02778, 0],
+        "8212": [0, 0.44444, 0.02778, 0],
+        "8216": [0, 0.69444, 0, 0],
+        "8217": [0, 0.69444, 0, 0],
+        "8220": [0, 0.69444, 0, 0],
+        "8221": [0, 0.69444, 0, 0]
+    },
+    "Script-Regular": {
+        "65": [0, 0.7, 0.22925, 0],
+        "66": [0, 0.7, 0.04087, 0],
+        "67": [0, 0.7, 0.1689, 0],
+        "68": [0, 0.7, 0.09371, 0],
+        "69": [0, 0.7, 0.18583, 0],
+        "70": [0, 0.7, 0.13634, 0],
+        "71": [0, 0.7, 0.17322, 0],
+        "72": [0, 0.7, 0.29694, 0],
+        "73": [0, 0.7, 0.19189, 0],
+        "74": [0.27778, 0.7, 0.19189, 0],
+        "75": [0, 0.7, 0.31259, 0],
+        "76": [0, 0.7, 0.19189, 0],
+        "77": [0, 0.7, 0.15981, 0],
+        "78": [0, 0.7, 0.3525, 0],
+        "79": [0, 0.7, 0.08078, 0],
+        "80": [0, 0.7, 0.08078, 0],
+        "81": [0, 0.7, 0.03305, 0],
+        "82": [0, 0.7, 0.06259, 0],
+        "83": [0, 0.7, 0.19189, 0],
+        "84": [0, 0.7, 0.29087, 0],
+        "85": [0, 0.7, 0.25815, 0],
+        "86": [0, 0.7, 0.27523, 0],
+        "87": [0, 0.7, 0.27523, 0],
+        "88": [0, 0.7, 0.26006, 0],
+        "89": [0, 0.7, 0.2939, 0],
+        "90": [0, 0.7, 0.24037, 0]
+    },
+    "Size1-Regular": {
+        "40": [0.35001, 0.85, 0, 0],
+        "41": [0.35001, 0.85, 0, 0],
+        "47": [0.35001, 0.85, 0, 0],
+        "91": [0.35001, 0.85, 0, 0],
+        "92": [0.35001, 0.85, 0, 0],
+        "93": [0.35001, 0.85, 0, 0],
+        "123": [0.35001, 0.85, 0, 0],
+        "125": [0.35001, 0.85, 0, 0],
+        "710": [0, 0.72222, 0, 0],
+        "732": [0, 0.72222, 0, 0],
+        "770": [0, 0.72222, 0, 0],
+        "771": [0, 0.72222, 0, 0],
+        "8214": [-0.00099, 0.601, 0, 0],
+        "8593": [1e-05, 0.6, 0, 0],
+        "8595": [1e-05, 0.6, 0, 0],
+        "8657": [1e-05, 0.6, 0, 0],
+        "8659": [1e-05, 0.6, 0, 0],
+        "8719": [0.25001, 0.75, 0, 0],
+        "8720": [0.25001, 0.75, 0, 0],
+        "8721": [0.25001, 0.75, 0, 0],
+        "8730": [0.35001, 0.85, 0, 0],
+        "8739": [-0.00599, 0.606, 0, 0],
+        "8741": [-0.00599, 0.606, 0, 0],
+        "8747": [0.30612, 0.805, 0.19445, 0],
+        "8748": [0.306, 0.805, 0.19445, 0],
+        "8749": [0.306, 0.805, 0.19445, 0],
+        "8750": [0.30612, 0.805, 0.19445, 0],
+        "8896": [0.25001, 0.75, 0, 0],
+        "8897": [0.25001, 0.75, 0, 0],
+        "8898": [0.25001, 0.75, 0, 0],
+        "8899": [0.25001, 0.75, 0, 0],
+        "8968": [0.35001, 0.85, 0, 0],
+        "8969": [0.35001, 0.85, 0, 0],
+        "8970": [0.35001, 0.85, 0, 0],
+        "8971": [0.35001, 0.85, 0, 0],
+        "9168": [-0.00099, 0.601, 0, 0],
+        "10216": [0.35001, 0.85, 0, 0],
+        "10217": [0.35001, 0.85, 0, 0],
+        "10752": [0.25001, 0.75, 0, 0],
+        "10753": [0.25001, 0.75, 0, 0],
+        "10754": [0.25001, 0.75, 0, 0],
+        "10756": [0.25001, 0.75, 0, 0],
+        "10758": [0.25001, 0.75, 0, 0]
+    },
+    "Size2-Regular": {
+        "40": [0.65002, 1.15, 0, 0],
+        "41": [0.65002, 1.15, 0, 0],
+        "47": [0.65002, 1.15, 0, 0],
+        "91": [0.65002, 1.15, 0, 0],
+        "92": [0.65002, 1.15, 0, 0],
+        "93": [0.65002, 1.15, 0, 0],
+        "123": [0.65002, 1.15, 0, 0],
+        "125": [0.65002, 1.15, 0, 0],
+        "710": [0, 0.75, 0, 0],
+        "732": [0, 0.75, 0, 0],
+        "770": [0, 0.75, 0, 0],
+        "771": [0, 0.75, 0, 0],
+        "8719": [0.55001, 1.05, 0, 0],
+        "8720": [0.55001, 1.05, 0, 0],
+        "8721": [0.55001, 1.05, 0, 0],
+        "8730": [0.65002, 1.15, 0, 0],
+        "8747": [0.86225, 1.36, 0.44445, 0],
+        "8748": [0.862, 1.36, 0.44445, 0],
+        "8749": [0.862, 1.36, 0.44445, 0],
+        "8750": [0.86225, 1.36, 0.44445, 0],
+        "8896": [0.55001, 1.05, 0, 0],
+        "8897": [0.55001, 1.05, 0, 0],
+        "8898": [0.55001, 1.05, 0, 0],
+        "8899": [0.55001, 1.05, 0, 0],
+        "8968": [0.65002, 1.15, 0, 0],
+        "8969": [0.65002, 1.15, 0, 0],
+        "8970": [0.65002, 1.15, 0, 0],
+        "8971": [0.65002, 1.15, 0, 0],
+        "10216": [0.65002, 1.15, 0, 0],
+        "10217": [0.65002, 1.15, 0, 0],
+        "10752": [0.55001, 1.05, 0, 0],
+        "10753": [0.55001, 1.05, 0, 0],
+        "10754": [0.55001, 1.05, 0, 0],
+        "10756": [0.55001, 1.05, 0, 0],
+        "10758": [0.55001, 1.05, 0, 0]
+    },
+    "Size3-Regular": {
+        "40": [0.95003, 1.45, 0, 0],
+        "41": [0.95003, 1.45, 0, 0],
+        "47": [0.95003, 1.45, 0, 0],
+        "91": [0.95003, 1.45, 0, 0],
+        "92": [0.95003, 1.45, 0, 0],
+        "93": [0.95003, 1.45, 0, 0],
+        "123": [0.95003, 1.45, 0, 0],
+        "125": [0.95003, 1.45, 0, 0],
+        "710": [0, 0.75, 0, 0],
+        "732": [0, 0.75, 0, 0],
+        "770": [0, 0.75, 0, 0],
+        "771": [0, 0.75, 0, 0],
+        "8730": [0.95003, 1.45, 0, 0],
+        "8968": [0.95003, 1.45, 0, 0],
+        "8969": [0.95003, 1.45, 0, 0],
+        "8970": [0.95003, 1.45, 0, 0],
+        "8971": [0.95003, 1.45, 0, 0],
+        "10216": [0.95003, 1.45, 0, 0],
+        "10217": [0.95003, 1.45, 0, 0]
+    },
+    "Size4-Regular": {
+        "40": [1.25003, 1.75, 0, 0],
+        "41": [1.25003, 1.75, 0, 0],
+        "47": [1.25003, 1.75, 0, 0],
+        "91": [1.25003, 1.75, 0, 0],
+        "92": [1.25003, 1.75, 0, 0],
+        "93": [1.25003, 1.75, 0, 0],
+        "123": [1.25003, 1.75, 0, 0],
+        "125": [1.25003, 1.75, 0, 0],
+        "710": [0, 0.825, 0, 0],
+        "732": [0, 0.825, 0, 0],
+        "770": [0, 0.825, 0, 0],
+        "771": [0, 0.825, 0, 0],
+        "8730": [1.25003, 1.75, 0, 0],
+        "8968": [1.25003, 1.75, 0, 0],
+        "8969": [1.25003, 1.75, 0, 0],
+        "8970": [1.25003, 1.75, 0, 0],
+        "8971": [1.25003, 1.75, 0, 0],
+        "9115": [0.64502, 1.155, 0, 0],
+        "9116": [1e-05, 0.6, 0, 0],
+        "9117": [0.64502, 1.155, 0, 0],
+        "9118": [0.64502, 1.155, 0, 0],
+        "9119": [1e-05, 0.6, 0, 0],
+        "9120": [0.64502, 1.155, 0, 0],
+        "9121": [0.64502, 1.155, 0, 0],
+        "9122": [-0.00099, 0.601, 0, 0],
+        "9123": [0.64502, 1.155, 0, 0],
+        "9124": [0.64502, 1.155, 0, 0],
+        "9125": [-0.00099, 0.601, 0, 0],
+        "9126": [0.64502, 1.155, 0, 0],
+        "9127": [1e-05, 0.9, 0, 0],
+        "9128": [0.65002, 1.15, 0, 0],
+        "9129": [0.90001, 0, 0, 0],
+        "9130": [0, 0.3, 0, 0],
+        "9131": [1e-05, 0.9, 0, 0],
+        "9132": [0.65002, 1.15, 0, 0],
+        "9133": [0.90001, 0, 0, 0],
+        "9143": [0.88502, 0.915, 0, 0],
+        "10216": [1.25003, 1.75, 0, 0],
+        "10217": [1.25003, 1.75, 0, 0],
+        "57344": [-0.00499, 0.605, 0, 0],
+        "57345": [-0.00499, 0.605, 0, 0],
+        "57680": [0, 0.12, 0, 0],
+        "57681": [0, 0.12, 0, 0],
+        "57682": [0, 0.12, 0, 0],
+        "57683": [0, 0.12, 0, 0]
+    },
+    "Typewriter-Regular": {
+        "33": [0, 0.61111, 0, 0],
+        "34": [0, 0.61111, 0, 0],
+        "35": [0, 0.61111, 0, 0],
+        "36": [0.08333, 0.69444, 0, 0],
+        "37": [0.08333, 0.69444, 0, 0],
+        "38": [0, 0.61111, 0, 0],
+        "39": [0, 0.61111, 0, 0],
+        "40": [0.08333, 0.69444, 0, 0],
+        "41": [0.08333, 0.69444, 0, 0],
+        "42": [0, 0.52083, 0, 0],
+        "43": [-0.08056, 0.53055, 0, 0],
+        "44": [0.13889, 0.125, 0, 0],
+        "45": [-0.08056, 0.53055, 0, 0],
+        "46": [0, 0.125, 0, 0],
+        "47": [0.08333, 0.69444, 0, 0],
+        "48": [0, 0.61111, 0, 0],
+        "49": [0, 0.61111, 0, 0],
+        "50": [0, 0.61111, 0, 0],
+        "51": [0, 0.61111, 0, 0],
+        "52": [0, 0.61111, 0, 0],
+        "53": [0, 0.61111, 0, 0],
+        "54": [0, 0.61111, 0, 0],
+        "55": [0, 0.61111, 0, 0],
+        "56": [0, 0.61111, 0, 0],
+        "57": [0, 0.61111, 0, 0],
+        "58": [0, 0.43056, 0, 0],
+        "59": [0.13889, 0.43056, 0, 0],
+        "60": [-0.05556, 0.55556, 0, 0],
+        "61": [-0.19549, 0.41562, 0, 0],
+        "62": [-0.05556, 0.55556, 0, 0],
+        "63": [0, 0.61111, 0, 0],
+        "64": [0, 0.61111, 0, 0],
+        "65": [0, 0.61111, 0, 0],
+        "66": [0, 0.61111, 0, 0],
+        "67": [0, 0.61111, 0, 0],
+        "68": [0, 0.61111, 0, 0],
+        "69": [0, 0.61111, 0, 0],
+        "70": [0, 0.61111, 0, 0],
+        "71": [0, 0.61111, 0, 0],
+        "72": [0, 0.61111, 0, 0],
+        "73": [0, 0.61111, 0, 0],
+        "74": [0, 0.61111, 0, 0],
+        "75": [0, 0.61111, 0, 0],
+        "76": [0, 0.61111, 0, 0],
+        "77": [0, 0.61111, 0, 0],
+        "78": [0, 0.61111, 0, 0],
+        "79": [0, 0.61111, 0, 0],
+        "80": [0, 0.61111, 0, 0],
+        "81": [0.13889, 0.61111, 0, 0],
+        "82": [0, 0.61111, 0, 0],
+        "83": [0, 0.61111, 0, 0],
+        "84": [0, 0.61111, 0, 0],
+        "85": [0, 0.61111, 0, 0],
+        "86": [0, 0.61111, 0, 0],
+        "87": [0, 0.61111, 0, 0],
+        "88": [0, 0.61111, 0, 0],
+        "89": [0, 0.61111, 0, 0],
+        "90": [0, 0.61111, 0, 0],
+        "91": [0.08333, 0.69444, 0, 0],
+        "92": [0.08333, 0.69444, 0, 0],
+        "93": [0.08333, 0.69444, 0, 0],
+        "94": [0, 0.61111, 0, 0],
+        "95": [0.09514, 0, 0, 0],
+        "96": [0, 0.61111, 0, 0],
+        "97": [0, 0.43056, 0, 0],
+        "98": [0, 0.61111, 0, 0],
+        "99": [0, 0.43056, 0, 0],
+        "100": [0, 0.61111, 0, 0],
+        "101": [0, 0.43056, 0, 0],
+        "102": [0, 0.61111, 0, 0],
+        "103": [0.22222, 0.43056, 0, 0],
+        "104": [0, 0.61111, 0, 0],
+        "105": [0, 0.61111, 0, 0],
+        "106": [0.22222, 0.61111, 0, 0],
+        "107": [0, 0.61111, 0, 0],
+        "108": [0, 0.61111, 0, 0],
+        "109": [0, 0.43056, 0, 0],
+        "110": [0, 0.43056, 0, 0],
+        "111": [0, 0.43056, 0, 0],
+        "112": [0.22222, 0.43056, 0, 0],
+        "113": [0.22222, 0.43056, 0, 0],
+        "114": [0, 0.43056, 0, 0],
+        "115": [0, 0.43056, 0, 0],
+        "116": [0, 0.55358, 0, 0],
+        "117": [0, 0.43056, 0, 0],
+        "118": [0, 0.43056, 0, 0],
+        "119": [0, 0.43056, 0, 0],
+        "120": [0, 0.43056, 0, 0],
+        "121": [0.22222, 0.43056, 0, 0],
+        "122": [0, 0.43056, 0, 0],
+        "123": [0.08333, 0.69444, 0, 0],
+        "124": [0.08333, 0.69444, 0, 0],
+        "125": [0.08333, 0.69444, 0, 0],
+        "126": [0, 0.61111, 0, 0],
+        "127": [0, 0.61111, 0, 0],
+        "305": [0, 0.43056, 0, 0],
+        "567": [0.22222, 0.43056, 0, 0],
+        "768": [0, 0.61111, 0, 0],
+        "769": [0, 0.61111, 0, 0],
+        "770": [0, 0.61111, 0, 0],
+        "771": [0, 0.61111, 0, 0],
+        "772": [0, 0.56555, 0, 0],
+        "774": [0, 0.61111, 0, 0],
+        "776": [0, 0.61111, 0, 0],
+        "778": [0, 0.61111, 0, 0],
+        "780": [0, 0.56597, 0, 0],
+        "915": [0, 0.61111, 0, 0],
+        "916": [0, 0.61111, 0, 0],
+        "920": [0, 0.61111, 0, 0],
+        "923": [0, 0.61111, 0, 0],
+        "926": [0, 0.61111, 0, 0],
+        "928": [0, 0.61111, 0, 0],
+        "931": [0, 0.61111, 0, 0],
+        "933": [0, 0.61111, 0, 0],
+        "934": [0, 0.61111, 0, 0],
+        "936": [0, 0.61111, 0, 0],
+        "937": [0, 0.61111, 0, 0],
+        "2018": [0, 0.61111, 0, 0],
+        "2019": [0, 0.61111, 0, 0],
+        "8242": [0, 0.61111, 0, 0]
+    }
+};
+
+},{}],19:[function(require,module,exports){
+var utils = require("./utils");
+var ParseError = require("./ParseError");
+var parseData = require("./parseData");
+var ParseNode = parseData.ParseNode;
+
+/* This file contains a list of functions that we parse, identified by
+ * the calls to defineFunction.
+ *
+ * The first argument to defineFunction is a single name or a list of names.
+ * All functions named in such a list will share a single implementation.
+ *
+ * Each declared function can have associated properties, which
+ * include the following:
+ *
+ *  - numArgs: The number of arguments the function takes.
+ *             If this is the only property, it can be passed as a number
+ *             instead of an element of a properties object.
+ *  - argTypes: (optional) An array corresponding to each argument of the
+ *              function, giving the type of argument that should be parsed. Its
+ *              length should be equal to `numArgs + numOptionalArgs`. Valid
+ *              types:
+ *               - "size": A size-like thing, such as "1em" or "5ex"
+ *               - "color": An html color, like "#abc" or "blue"
+ *               - "original": The same type as the environment that the
+ *                             function being parsed is in (e.g. used for the
+ *                             bodies of functions like \color where the first
+ *                             argument is special and the second argument is
+ *                             parsed normally)
+ *              Other possible types (probably shouldn't be used)
+ *               - "text": Text-like (e.g. \text)
+ *               - "math": Normal math
+ *              If undefined, this will be treated as an appropriate length
+ *              array of "original" strings
+ *  - greediness: (optional) The greediness of the function to use ungrouped
+ *                arguments.
+ *
+ *                E.g. if you have an expression
+ *                  \sqrt \frac 1 2
+ *                since \frac has greediness=2 vs \sqrt's greediness=1, \frac
+ *                will use the two arguments '1' and '2' as its two arguments,
+ *                then that whole function will be used as the argument to
+ *                \sqrt. On the other hand, the expressions
+ *                  \frac \frac 1 2 3
+ *                and
+ *                  \frac \sqrt 1 2
+ *                will fail because \frac and \frac have equal greediness
+ *                and \sqrt has a lower greediness than \frac respectively. To
+ *                make these parse, we would have to change them to:
+ *                  \frac {\frac 1 2} 3
+ *                and
+ *                  \frac {\sqrt 1} 2
+ *
+ *                The default value is `1`
+ *  - allowedInText: (optional) Whether or not the function is allowed inside
+ *                   text mode (default false)
+ *  - numOptionalArgs: (optional) The number of optional arguments the function
+ *                     should parse. If the optional arguments aren't found,
+ *                     `null` will be passed to the handler in their place.
+ *                     (default 0)
+ *  - infix: (optional) Must be true if the function is an infix operator.
+ *
+ * The last argument is that implementation, the handler for the function(s).
+ * It is called to handle these functions and their arguments.
+ * It receives two arguments:
+ *  - context contains information and references provided by the parser
+ *  - args is an array of arguments obtained from TeX input
+ * The context contains the following properties:
+ *  - funcName: the text (i.e. name) of the function, including \
+ *  - parser: the parser object
+ *  - lexer: the lexer object
+ *  - positions: the positions in the overall string of the function
+ *               and the arguments.
+ * The latter three should only be used to produce error messages.
+ *
+ * The function should return an object with the following keys:
+ *  - type: The type of element that this is. This is then used in
+ *          buildHTML/buildMathML to determine which function
+ *          should be called to build this node into a DOM node
+ * Any other data can be added to the object, which will be passed
+ * in to the function in buildHTML/buildMathML as `group.value`.
+ */
+
+function defineFunction(names, props, handler) {
+    if (typeof names === "string") {
+        names = [names];
+    }
+    if (typeof props === "number") {
+        props = { numArgs: props };
+    }
+    // Set default values of functions
+    var data = {
+        numArgs: props.numArgs,
+        argTypes: props.argTypes,
+        greediness: (props.greediness === undefined) ? 1 : props.greediness,
+        allowedInText: !!props.allowedInText,
+        numOptionalArgs: props.numOptionalArgs || 0,
+        infix: !!props.infix,
+        handler: handler
+    };
+    for (var i = 0; i < names.length; ++i) {
+        module.exports[names[i]] = data;
+    }
+}
+
+// Since the corresponding buildHTML/buildMathML function expects a
+// list of elements, we normalize for different kinds of arguments
+var ordargument = function(arg) {
+    if (arg.type === "ordgroup") {
+        return arg.value;
+    } else {
+        return [arg];
+    }
+};
+
+// A normal square root
+defineFunction("\\sqrt", {
+    numArgs: 1,
+    numOptionalArgs: 1
+}, function(context, args) {
+    var index = args[0];
+    var body = args[1];
+    return {
+        type: "sqrt",
+        body: body,
+        index: index
+    };
+});
+
+// Non-mathy text, possibly in a font
+var textFunctionStyles = {
+    "\\text": undefined, "\\textrm": "mathrm", "\\textsf": "mathsf",
+    "\\texttt": "mathtt", "\\textnormal": "mathrm", "\\textbf": "mathbf",
+    "\\textit": "textit"
+};
+
+defineFunction([
+    "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal",
+    "\\textbf", "\\textit"
+], {
+    numArgs: 1,
+    argTypes: ["text"],
+    greediness: 2,
+    allowedInText: true
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: "text",
+        body: ordargument(body),
+        style: textFunctionStyles[context.funcName]
+    };
+});
+
+// A two-argument custom color
+defineFunction("\\color", {
+    numArgs: 2,
+    allowedInText: true,
+    greediness: 3,
+    argTypes: ["color", "original"]
+}, function(context, args) {
+    var color = args[0];
+    var body = args[1];
+    return {
+        type: "color",
+        color: color.value,
+        value: ordargument(body)
+    };
+});
+
+// An overline
+defineFunction("\\overline", {
+    numArgs: 1
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: "overline",
+        body: body
+    };
+});
+
+// An underline
+defineFunction("\\underline", {
+    numArgs: 1
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: "underline",
+        body: body
+    };
+});
+
+// A box of the width and height
+defineFunction("\\rule", {
+    numArgs: 2,
+    numOptionalArgs: 1,
+    argTypes: ["size", "size", "size"]
+}, function(context, args) {
+    var shift = args[0];
+    var width = args[1];
+    var height = args[2];
+    return {
+        type: "rule",
+        shift: shift && shift.value,
+        width: width.value,
+        height: height.value
+    };
+});
+
+// TODO: In TeX, \mkern only accepts mu-units, and \kern does not accept
+// mu-units. In current KaTeX we relax this; both commands accept any unit.
+defineFunction(["\\kern", "\\mkern"], {
+    numArgs: 1,
+    argTypes: ["size"]
+}, function(context, args) {
+    return {
+        type: "kern",
+        dimension: args[0].value
+    };
+});
+
+// A KaTeX logo
+defineFunction("\\KaTeX", {
+    numArgs: 0
+}, function(context) {
+    return {
+        type: "katex"
+    };
+});
+
+defineFunction("\\phantom", {
+    numArgs: 1
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: "phantom",
+        value: ordargument(body)
+    };
+});
+
+// Math class commands except \mathop
+defineFunction([
+    "\\mathord", "\\mathbin", "\\mathrel", "\\mathopen",
+    "\\mathclose", "\\mathpunct", "\\mathinner"
+], {
+    numArgs: 1
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: "mclass",
+        mclass: "m" + context.funcName.substr(5),
+        value: ordargument(body)
+    };
+});
+
+// Build a relation by placing one symbol on top of another
+defineFunction("\\stackrel", {
+    numArgs: 2
+}, function(context, args) {
+    var top = args[0];
+    var bottom = args[1];
+
+    var bottomop = new ParseNode("op", {
+        type: "op",
+        limits: true,
+        alwaysHandleSupSub: true,
+        symbol: false,
+        value: ordargument(bottom)
+    }, bottom.mode);
+
+    var supsub = new ParseNode("supsub", {
+        base: bottomop,
+        sup: top,
+        sub: null
+    }, top.mode);
+
+    return {
+        type: "mclass",
+        mclass: "mrel",
+        value: [supsub]
+    };
+});
+
+// \mod-type functions
+defineFunction("\\bmod", {
+    numArgs: 0
+}, function(context, args) {
+    return {
+        type: "mod",
+        modType: "bmod",
+        value: null
+    };
+});
+
+defineFunction(["\\pod", "\\pmod", "\\mod"], {
+    numArgs: 1
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: "mod",
+        modType: context.funcName.substr(1),
+        value: ordargument(body)
+    };
+});
+
+// Extra data needed for the delimiter handler down below
+var delimiterSizes = {
+    "\\bigl" : {mclass: "mopen",    size: 1},
+    "\\Bigl" : {mclass: "mopen",    size: 2},
+    "\\biggl": {mclass: "mopen",    size: 3},
+    "\\Biggl": {mclass: "mopen",    size: 4},
+    "\\bigr" : {mclass: "mclose",   size: 1},
+    "\\Bigr" : {mclass: "mclose",   size: 2},
+    "\\biggr": {mclass: "mclose",   size: 3},
+    "\\Biggr": {mclass: "mclose",   size: 4},
+    "\\bigm" : {mclass: "mrel",     size: 1},
+    "\\Bigm" : {mclass: "mrel",     size: 2},
+    "\\biggm": {mclass: "mrel",     size: 3},
+    "\\Biggm": {mclass: "mrel",     size: 4},
+    "\\big"  : {mclass: "mord",     size: 1},
+    "\\Big"  : {mclass: "mord",     size: 2},
+    "\\bigg" : {mclass: "mord",     size: 3},
+    "\\Bigg" : {mclass: "mord",     size: 4}
+};
+
+var delimiters = [
+    "(", ")", "[", "\\lbrack", "]", "\\rbrack",
+    "\\{", "\\lbrace", "\\}", "\\rbrace",
+    "\\lfloor", "\\rfloor", "\\lceil", "\\rceil",
+    "<", ">", "\\langle", "\\rangle", "\\lt", "\\gt",
+    "\\lvert", "\\rvert", "\\lVert", "\\rVert",
+    "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache",
+    "/", "\\backslash",
+    "|", "\\vert", "\\|", "\\Vert",
+    "\\uparrow", "\\Uparrow",
+    "\\downarrow", "\\Downarrow",
+    "\\updownarrow", "\\Updownarrow",
+    "."
+];
+
+var fontAliases = {
+    "\\Bbb": "\\mathbb",
+    "\\bold": "\\mathbf",
+    "\\frak": "\\mathfrak"
+};
+
+// Single-argument color functions
+defineFunction([
+    "\\blue", "\\orange", "\\pink", "\\red",
+    "\\green", "\\gray", "\\purple",
+    "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE",
+    "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE",
+    "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE",
+    "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE",
+    "\\redA", "\\redB", "\\redC", "\\redD", "\\redE",
+    "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE",
+    "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE",
+    "\\mintA", "\\mintB", "\\mintC",
+    "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE",
+    "\\grayF", "\\grayG", "\\grayH", "\\grayI",
+    "\\kaBlue", "\\kaGreen"
+], {
+    numArgs: 1,
+    allowedInText: true,
+    greediness: 3
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: "color",
+        color: "katex-" + context.funcName.slice(1),
+        value: ordargument(body)
+    };
+});
+
+// There are 2 flags for operators; whether they produce limits in
+// displaystyle, and whether they are symbols and should grow in
+// displaystyle. These four groups cover the four possible choices.
+
+// No limits, not symbols
+defineFunction([
+    "\\arcsin", "\\arccos", "\\arctan", "\\arg", "\\cos", "\\cosh",
+    "\\cot", "\\coth", "\\csc", "\\deg", "\\dim", "\\exp", "\\hom",
+    "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh",
+    "\\tan", "\\tanh"
+], {
+    numArgs: 0
+}, function(context) {
+    return {
+        type: "op",
+        limits: false,
+        symbol: false,
+        body: context.funcName
+    };
+});
+
+// Limits, not symbols
+defineFunction([
+    "\\det", "\\gcd", "\\inf", "\\lim", "\\liminf", "\\limsup", "\\max",
+    "\\min", "\\Pr", "\\sup"
+], {
+    numArgs: 0
+}, function(context) {
+    return {
+        type: "op",
+        limits: true,
+        symbol: false,
+        body: context.funcName
+    };
+});
+
+// No limits, symbols
+defineFunction([
+    "\\int", "\\iint", "\\iiint", "\\oint"
+], {
+    numArgs: 0
+}, function(context) {
+    return {
+        type: "op",
+        limits: false,
+        symbol: true,
+        body: context.funcName
+    };
+});
+
+// Limits, symbols
+defineFunction([
+    "\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap",
+    "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes",
+    "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint"
+], {
+    numArgs: 0
+}, function(context) {
+    return {
+        type: "op",
+        limits: true,
+        symbol: true,
+        body: context.funcName
+    };
+});
+
+// \mathop class command
+defineFunction("\\mathop", {
+    numArgs: 1
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: "op",
+        limits: false,
+        symbol: false,
+        value: ordargument(body)
+    };
+});
+
+// Fractions
+defineFunction([
+    "\\dfrac", "\\frac", "\\tfrac",
+    "\\dbinom", "\\binom", "\\tbinom",
+    "\\\\atopfrac" // can’t be entered directly
+], {
+    numArgs: 2,
+    greediness: 2
+}, function(context, args) {
+    var numer = args[0];
+    var denom = args[1];
+    var hasBarLine;
+    var leftDelim = null;
+    var rightDelim = null;
+    var size = "auto";
+
+    switch (context.funcName) {
+        case "\\dfrac":
+        case "\\frac":
+        case "\\tfrac":
+            hasBarLine = true;
+            break;
+        case "\\\\atopfrac":
+            hasBarLine = false;
+            break;
+        case "\\dbinom":
+        case "\\binom":
+        case "\\tbinom":
+            hasBarLine = false;
+            leftDelim = "(";
+            rightDelim = ")";
+            break;
+        default:
+            throw new Error("Unrecognized genfrac command");
+    }
+
+    switch (context.funcName) {
+        case "\\dfrac":
+        case "\\dbinom":
+            size = "display";
+            break;
+        case "\\tfrac":
+        case "\\tbinom":
+            size = "text";
+            break;
+    }
+
+    return {
+        type: "genfrac",
+        numer: numer,
+        denom: denom,
+        hasBarLine: hasBarLine,
+        leftDelim: leftDelim,
+        rightDelim: rightDelim,
+        size: size
+    };
+});
+
+// Left and right overlap functions
+defineFunction(["\\llap", "\\rlap"], {
+    numArgs: 1,
+    allowedInText: true
+}, function(context, args) {
+    var body = args[0];
+    return {
+        type: context.funcName.slice(1),
+        body: body
+    };
+});
+
+// Delimiter functions
+var checkDelimiter = function(delim, context) {
+    if (utils.contains(delimiters, delim.value)) {
+        return delim;
+    } else {
+        throw new ParseError(
+            "Invalid delimiter: '" + delim.value + "' after '" +
+            context.funcName + "'", delim);
+    }
+};
+
+defineFunction([
+    "\\bigl", "\\Bigl", "\\biggl", "\\Biggl",
+    "\\bigr", "\\Bigr", "\\biggr", "\\Biggr",
+    "\\bigm", "\\Bigm", "\\biggm", "\\Biggm",
+    "\\big",  "\\Big",  "\\bigg",  "\\Bigg"
+], {
+    numArgs: 1
+}, function(context, args) {
+    var delim = checkDelimiter(args[0], context);
+
+    return {
+        type: "delimsizing",
+        size: delimiterSizes[context.funcName].size,
+        mclass: delimiterSizes[context.funcName].mclass,
+        value: delim.value
+    };
+});
+
+defineFunction([
+    "\\left", "\\right"
+], {
+    numArgs: 1
+}, function(context, args) {
+    var delim = checkDelimiter(args[0], context);
+
+    // \left and \right are caught somewhere in Parser.js, which is
+    // why this data doesn't match what is in buildHTML.
+    return {
+        type: "leftright",
+        value: delim.value
+    };
+});
+
+defineFunction("\\middle", {
+    numArgs: 1
+}, function(context, args) {
+    var delim = checkDelimiter(args[0], context);
+    if (!context.parser.leftrightDepth) {
+        throw new ParseError("\\middle without preceding \\left", delim);
+    }
+
+    return {
+        type: "middle",
+        value: delim.value
+    };
+});
+
+// Sizing functions (handled in Parser.js explicitly, hence no handler)
+defineFunction([
+    "\\tiny", "\\scriptsize", "\\footnotesize", "\\small",
+    "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"
+], 0, null);
+
+// Style changing functions (handled in Parser.js explicitly, hence no
+// handler)
+defineFunction([
+    "\\displaystyle", "\\textstyle", "\\scriptstyle",
+    "\\scriptscriptstyle"
+], 0, null);
+
+defineFunction([
+    // styles
+    "\\mathrm", "\\mathit", "\\mathbf",
+
+    // families
+    "\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf",
+    "\\mathtt",
+
+    // aliases
+    "\\Bbb", "\\bold", "\\frak"
+], {
+    numArgs: 1,
+    greediness: 2
+}, function(context, args) {
+    var body = args[0];
+    var func = context.funcName;
+    if (func in fontAliases) {
+        func = fontAliases[func];
+    }
+    return {
+        type: "font",
+        font: func.slice(1),
+        body: body
+    };
+});
+
+// Accents
+defineFunction([
+    "\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve",
+    "\\check", "\\hat", "\\vec", "\\dot"
+    // We don't support expanding accents yet
+    // "\\widetilde", "\\widehat"
+], {
+    numArgs: 1
+}, function(context, args) {
+    var base = args[0];
+    return {
+        type: "accent",
+        accent: context.funcName,
+        base: base
+    };
+});
+
+// Infix generalized fractions
+defineFunction(["\\over", "\\choose", "\\atop"], {
+    numArgs: 0,
+    infix: true
+}, function(context) {
+    var replaceWith;
+    switch (context.funcName) {
+        case "\\over":
+            replaceWith = "\\frac";
+            break;
+        case "\\choose":
+            replaceWith = "\\binom";
+            break;
+        case "\\atop":
+            replaceWith = "\\\\atopfrac";
+            break;
+        default:
+            throw new Error("Unrecognized infix genfrac command");
+    }
+    return {
+        type: "infix",
+        replaceWith: replaceWith,
+        token: context.token
+    };
+});
+
+// Row breaks for aligned data
+defineFunction(["\\\\", "\\cr"], {
+    numArgs: 0,
+    numOptionalArgs: 1,
+    argTypes: ["size"]
+}, function(context, args) {
+    var size = args[0];
+    return {
+        type: "cr",
+        size: size
+    };
+});
+
+// Environment delimiters
+defineFunction(["\\begin", "\\end"], {
+    numArgs: 1,
+    argTypes: ["text"]
+}, function(context, args) {
+    var nameGroup = args[0];
+    if (nameGroup.type !== "ordgroup") {
+        throw new ParseError("Invalid environment name", nameGroup);
+    }
+    var name = "";
+    for (var i = 0; i < nameGroup.value.length; ++i) {
+        name += nameGroup.value[i].value;
+    }
+    return {
+        type: "environment",
+        name: name,
+        nameGroup: nameGroup
+    };
+});
+
+},{"./ParseError":6,"./parseData":21,"./utils":25}],20:[function(require,module,exports){
+/**
+ * These objects store data about MathML nodes. This is the MathML equivalent
+ * of the types in domTree.js. Since MathML handles its own rendering, and
+ * since we're mainly using MathML to improve accessibility, we don't manage
+ * any of the styling state that the plain DOM nodes do.
+ *
+ * The `toNode` and `toMarkup` functions work simlarly to how they do in
+ * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.
+ */
+
+var utils = require("./utils");
+
+/**
+ * This node represents a general purpose MathML node of any type. The
+ * constructor requires the type of node to create (for example, `"mo"` or
+ * `"mspace"`, corresponding to `<mo>` and `<mspace>` tags).
+ */
+function MathNode(type, children) {
+    this.type = type;
+    this.attributes = {};
+    this.children = children || [];
+}
+
+/**
+ * Sets an attribute on a MathML node. MathML depends on attributes to convey a
+ * semantic content, so this is used heavily.
+ */
+MathNode.prototype.setAttribute = function(name, value) {
+    this.attributes[name] = value;
+};
+
+/**
+ * Converts the math node into a MathML-namespaced DOM element.
+ */
+MathNode.prototype.toNode = function() {
+    var node = document.createElementNS(
+        "http://www.w3.org/1998/Math/MathML", this.type);
+
+    for (var attr in this.attributes) {
+        if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+            node.setAttribute(attr, this.attributes[attr]);
+        }
+    }
+
+    for (var i = 0; i < this.children.length; i++) {
+        node.appendChild(this.children[i].toNode());
+    }
+
+    return node;
+};
+
+/**
+ * Converts the math node into an HTML markup string.
+ */
+MathNode.prototype.toMarkup = function() {
+    var markup = "<" + this.type;
+
+    // Add the attributes
+    for (var attr in this.attributes) {
+        if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+            markup += " " + attr + "=\"";
+            markup += utils.escape(this.attributes[attr]);
+            markup += "\"";
+        }
+    }
+
+    markup += ">";
+
+    for (var i = 0; i < this.children.length; i++) {
+        markup += this.children[i].toMarkup();
+    }
+
+    markup += "</" + this.type + ">";
+
+    return markup;
+};
+
+/**
+ * This node represents a piece of text.
+ */
+function TextNode(text) {
+    this.text = text;
+}
+
+/**
+ * Converts the text node into a DOM text node.
+ */
+TextNode.prototype.toNode = function() {
+    return document.createTextNode(this.text);
+};
+
+/**
+ * Converts the text node into HTML markup (which is just the text itself).
+ */
+TextNode.prototype.toMarkup = function() {
+    return utils.escape(this.text);
+};
+
+module.exports = {
+    MathNode: MathNode,
+    TextNode: TextNode
+};
+
+},{"./utils":25}],21:[function(require,module,exports){
+/**
+ * The resulting parse tree nodes of the parse tree.
+ *
+ * It is possible to provide position information, so that a ParseNode can
+ * fulfil a role similar to a Token in error reporting.
+ * For details on the corresponding properties see Token constructor.
+ * Providing such information can lead to better error reporting.
+ *
+ * @param {string}  type       type of node, like e.g. "ordgroup"
+ * @param {?object} value      type-specific representation of the node
+ * @param {string}  mode       parse mode in action for this node,
+ *                             "math" or "text"
+ * @param {Token=} firstToken  first token of the input for this node,
+ *                             will omit position information if unset
+ * @param {Token=} lastToken   last token of the input for this node,
+ *                             will default to firstToken if unset
+ */
+function ParseNode(type, value, mode, firstToken, lastToken) {
+    this.type = type;
+    this.value = value;
+    this.mode = mode;
+    if (firstToken && (!lastToken || lastToken.lexer === firstToken.lexer)) {
+        this.lexer = firstToken.lexer;
+        this.start = firstToken.start;
+        this.end = (lastToken || firstToken).end;
+    }
+}
+
+module.exports = {
+    ParseNode: ParseNode
+};
+
+
+},{}],22:[function(require,module,exports){
+/**
+ * Provides a single function for parsing an expression using a Parser
+ * TODO(emily): Remove this
+ */
+
+var Parser = require("./Parser");
+
+/**
+ * Parses an expression using a Parser, then returns the parsed result.
+ */
+var parseTree = function(toParse, settings) {
+    if (!(typeof toParse === 'string' || toParse instanceof String)) {
+        throw new TypeError('KaTeX can only parse string typed expression');
+    }
+    var parser = new Parser(toParse, settings);
+
+    return parser.parse();
+};
+
+module.exports = parseTree;
+
+},{"./Parser":7}],23:[function(require,module,exports){
+/**
+ * This file holds a list of all no-argument functions and single-character
+ * symbols (like 'a' or ';').
+ *
+ * For each of the symbols, there are three properties they can have:
+ * - font (required): the font to be used for this symbol. Either "main" (the
+     normal font), or "ams" (the ams fonts).
+ * - group (required): the ParseNode group type the symbol should have (i.e.
+     "textord", "mathord", etc).
+     See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types
+ * - replace: the character that this symbol or function should be
+ *   replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi
+ *   character in the main font).
+ *
+ * The outermost map in the table indicates what mode the symbols should be
+ * accepted in (e.g. "math" or "text").
+ */
+
+module.exports = {
+    math: {},
+    text: {}
+};
+
+function defineSymbol(mode, font, group, replace, name) {
+    module.exports[mode][name] = {
+        font: font,
+        group: group,
+        replace: replace
+    };
+}
+
+// Some abbreviations for commonly used strings.
+// This helps minify the code, and also spotting typos using jshint.
+
+// modes:
+var math = "math";
+var text = "text";
+
+// fonts:
+var main = "main";
+var ams = "ams";
+
+// groups:
+var accent = "accent";
+var bin = "bin";
+var close = "close";
+var inner = "inner";
+var mathord = "mathord";
+var op = "op";
+var open = "open";
+var punct = "punct";
+var rel = "rel";
+var spacing = "spacing";
+var textord = "textord";
+
+// Now comes the symbol table
+
+// Relation Symbols
+defineSymbol(math, main, rel, "\u2261", "\\equiv");
+defineSymbol(math, main, rel, "\u227a", "\\prec");
+defineSymbol(math, main, rel, "\u227b", "\\succ");
+defineSymbol(math, main, rel, "\u223c", "\\sim");
+defineSymbol(math, main, rel, "\u22a5", "\\perp");
+defineSymbol(math, main, rel, "\u2aaf", "\\preceq");
+defineSymbol(math, main, rel, "\u2ab0", "\\succeq");
+defineSymbol(math, main, rel, "\u2243", "\\simeq");
+defineSymbol(math, main, rel, "\u2223", "\\mid");
+defineSymbol(math, main, rel, "\u226a", "\\ll");
+defineSymbol(math, main, rel, "\u226b", "\\gg");
+defineSymbol(math, main, rel, "\u224d", "\\asymp");
+defineSymbol(math, main, rel, "\u2225", "\\parallel");
+defineSymbol(math, main, rel, "\u22c8", "\\bowtie");
+defineSymbol(math, main, rel, "\u2323", "\\smile");
+defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq");
+defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq");
+defineSymbol(math, main, rel, "\u2250", "\\doteq");
+defineSymbol(math, main, rel, "\u2322", "\\frown");
+defineSymbol(math, main, rel, "\u220b", "\\ni");
+defineSymbol(math, main, rel, "\u221d", "\\propto");
+defineSymbol(math, main, rel, "\u22a2", "\\vdash");
+defineSymbol(math, main, rel, "\u22a3", "\\dashv");
+defineSymbol(math, main, rel, "\u220b", "\\owns");
+
+// Punctuation
+defineSymbol(math, main, punct, "\u002e", "\\ldotp");
+defineSymbol(math, main, punct, "\u22c5", "\\cdotp");
+
+// Misc Symbols
+defineSymbol(math, main, textord, "\u0023", "\\#");
+defineSymbol(text, main, textord, "\u0023", "\\#");
+defineSymbol(math, main, textord, "\u0026", "\\&");
+defineSymbol(text, main, textord, "\u0026", "\\&");
+defineSymbol(math, main, textord, "\u2135", "\\aleph");
+defineSymbol(math, main, textord, "\u2200", "\\forall");
+defineSymbol(math, main, textord, "\u210f", "\\hbar");
+defineSymbol(math, main, textord, "\u2203", "\\exists");
+defineSymbol(math, main, textord, "\u2207", "\\nabla");
+defineSymbol(math, main, textord, "\u266d", "\\flat");
+defineSymbol(math, main, textord, "\u2113", "\\ell");
+defineSymbol(math, main, textord, "\u266e", "\\natural");
+defineSymbol(math, main, textord, "\u2663", "\\clubsuit");
+defineSymbol(math, main, textord, "\u2118", "\\wp");
+defineSymbol(math, main, textord, "\u266f", "\\sharp");
+defineSymbol(math, main, textord, "\u2662", "\\diamondsuit");
+defineSymbol(math, main, textord, "\u211c", "\\Re");
+defineSymbol(math, main, textord, "\u2661", "\\heartsuit");
+defineSymbol(math, main, textord, "\u2111", "\\Im");
+defineSymbol(math, main, textord, "\u2660", "\\spadesuit");
+
+// Math and Text
+defineSymbol(math, main, textord, "\u2020", "\\dag");
+defineSymbol(math, main, textord, "\u2021", "\\ddag");
+
+// Large Delimiters
+defineSymbol(math, main, close, "\u23b1", "\\rmoustache");
+defineSymbol(math, main, open, "\u23b0", "\\lmoustache");
+defineSymbol(math, main, close, "\u27ef", "\\rgroup");
+defineSymbol(math, main, open, "\u27ee", "\\lgroup");
+
+// Binary Operators
+defineSymbol(math, main, bin, "\u2213", "\\mp");
+defineSymbol(math, main, bin, "\u2296", "\\ominus");
+defineSymbol(math, main, bin, "\u228e", "\\uplus");
+defineSymbol(math, main, bin, "\u2293", "\\sqcap");
+defineSymbol(math, main, bin, "\u2217", "\\ast");
+defineSymbol(math, main, bin, "\u2294", "\\sqcup");
+defineSymbol(math, main, bin, "\u25ef", "\\bigcirc");
+defineSymbol(math, main, bin, "\u2219", "\\bullet");
+defineSymbol(math, main, bin, "\u2021", "\\ddagger");
+defineSymbol(math, main, bin, "\u2240", "\\wr");
+defineSymbol(math, main, bin, "\u2a3f", "\\amalg");
+
+// Arrow Symbols
+defineSymbol(math, main, rel, "\u27f5", "\\longleftarrow");
+defineSymbol(math, main, rel, "\u21d0", "\\Leftarrow");
+defineSymbol(math, main, rel, "\u27f8", "\\Longleftarrow");
+defineSymbol(math, main, rel, "\u27f6", "\\longrightarrow");
+defineSymbol(math, main, rel, "\u21d2", "\\Rightarrow");
+defineSymbol(math, main, rel, "\u27f9", "\\Longrightarrow");
+defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow");
+defineSymbol(math, main, rel, "\u27f7", "\\longleftrightarrow");
+defineSymbol(math, main, rel, "\u21d4", "\\Leftrightarrow");
+defineSymbol(math, main, rel, "\u27fa", "\\Longleftrightarrow");
+defineSymbol(math, main, rel, "\u21a6", "\\mapsto");
+defineSymbol(math, main, rel, "\u27fc", "\\longmapsto");
+defineSymbol(math, main, rel, "\u2197", "\\nearrow");
+defineSymbol(math, main, rel, "\u21a9", "\\hookleftarrow");
+defineSymbol(math, main, rel, "\u21aa", "\\hookrightarrow");
+defineSymbol(math, main, rel, "\u2198", "\\searrow");
+defineSymbol(math, main, rel, "\u21bc", "\\leftharpoonup");
+defineSymbol(math, main, rel, "\u21c0", "\\rightharpoonup");
+defineSymbol(math, main, rel, "\u2199", "\\swarrow");
+defineSymbol(math, main, rel, "\u21bd", "\\leftharpoondown");
+defineSymbol(math, main, rel, "\u21c1", "\\rightharpoondown");
+defineSymbol(math, main, rel, "\u2196", "\\nwarrow");
+defineSymbol(math, main, rel, "\u21cc", "\\rightleftharpoons");
+
+// AMS Negated Binary Relations
+defineSymbol(math, ams, rel, "\u226e", "\\nless");
+defineSymbol(math, ams, rel, "\ue010", "\\nleqslant");
+defineSymbol(math, ams, rel, "\ue011", "\\nleqq");
+defineSymbol(math, ams, rel, "\u2a87", "\\lneq");
+defineSymbol(math, ams, rel, "\u2268", "\\lneqq");
+defineSymbol(math, ams, rel, "\ue00c", "\\lvertneqq");
+defineSymbol(math, ams, rel, "\u22e6", "\\lnsim");
+defineSymbol(math, ams, rel, "\u2a89", "\\lnapprox");
+defineSymbol(math, ams, rel, "\u2280", "\\nprec");
+defineSymbol(math, ams, rel, "\u22e0", "\\npreceq");
+defineSymbol(math, ams, rel, "\u22e8", "\\precnsim");
+defineSymbol(math, ams, rel, "\u2ab9", "\\precnapprox");
+defineSymbol(math, ams, rel, "\u2241", "\\nsim");
+defineSymbol(math, ams, rel, "\ue006", "\\nshortmid");
+defineSymbol(math, ams, rel, "\u2224", "\\nmid");
+defineSymbol(math, ams, rel, "\u22ac", "\\nvdash");
+defineSymbol(math, ams, rel, "\u22ad", "\\nvDash");
+defineSymbol(math, ams, rel, "\u22ea", "\\ntriangleleft");
+defineSymbol(math, ams, rel, "\u22ec", "\\ntrianglelefteq");
+defineSymbol(math, ams, rel, "\u228a", "\\subsetneq");
+defineSymbol(math, ams, rel, "\ue01a", "\\varsubsetneq");
+defineSymbol(math, ams, rel, "\u2acb", "\\subsetneqq");
+defineSymbol(math, ams, rel, "\ue017", "\\varsubsetneqq");
+defineSymbol(math, ams, rel, "\u226f", "\\ngtr");
+defineSymbol(math, ams, rel, "\ue00f", "\\ngeqslant");
+defineSymbol(math, ams, rel, "\ue00e", "\\ngeqq");
+defineSymbol(math, ams, rel, "\u2a88", "\\gneq");
+defineSymbol(math, ams, rel, "\u2269", "\\gneqq");
+defineSymbol(math, ams, rel, "\ue00d", "\\gvertneqq");
+defineSymbol(math, ams, rel, "\u22e7", "\\gnsim");
+defineSymbol(math, ams, rel, "\u2a8a", "\\gnapprox");
+defineSymbol(math, ams, rel, "\u2281", "\\nsucc");
+defineSymbol(math, ams, rel, "\u22e1", "\\nsucceq");
+defineSymbol(math, ams, rel, "\u22e9", "\\succnsim");
+defineSymbol(math, ams, rel, "\u2aba", "\\succnapprox");
+defineSymbol(math, ams, rel, "\u2246", "\\ncong");
+defineSymbol(math, ams, rel, "\ue007", "\\nshortparallel");
+defineSymbol(math, ams, rel, "\u2226", "\\nparallel");
+defineSymbol(math, ams, rel, "\u22af", "\\nVDash");
+defineSymbol(math, ams, rel, "\u22eb", "\\ntriangleright");
+defineSymbol(math, ams, rel, "\u22ed", "\\ntrianglerighteq");
+defineSymbol(math, ams, rel, "\ue018", "\\nsupseteqq");
+defineSymbol(math, ams, rel, "\u228b", "\\supsetneq");
+defineSymbol(math, ams, rel, "\ue01b", "\\varsupsetneq");
+defineSymbol(math, ams, rel, "\u2acc", "\\supsetneqq");
+defineSymbol(math, ams, rel, "\ue019", "\\varsupsetneqq");
+defineSymbol(math, ams, rel, "\u22ae", "\\nVdash");
+defineSymbol(math, ams, rel, "\u2ab5", "\\precneqq");
+defineSymbol(math, ams, rel, "\u2ab6", "\\succneqq");
+defineSymbol(math, ams, rel, "\ue016", "\\nsubseteqq");
+defineSymbol(math, ams, bin, "\u22b4", "\\unlhd");
+defineSymbol(math, ams, bin, "\u22b5", "\\unrhd");
+
+// AMS Negated Arrows
+defineSymbol(math, ams, rel, "\u219a", "\\nleftarrow");
+defineSymbol(math, ams, rel, "\u219b", "\\nrightarrow");
+defineSymbol(math, ams, rel, "\u21cd", "\\nLeftarrow");
+defineSymbol(math, ams, rel, "\u21cf", "\\nRightarrow");
+defineSymbol(math, ams, rel, "\u21ae", "\\nleftrightarrow");
+defineSymbol(math, ams, rel, "\u21ce", "\\nLeftrightarrow");
+
+// AMS Misc
+defineSymbol(math, ams, rel, "\u25b3", "\\vartriangle");
+defineSymbol(math, ams, textord, "\u210f", "\\hslash");
+defineSymbol(math, ams, textord, "\u25bd", "\\triangledown");
+defineSymbol(math, ams, textord, "\u25ca", "\\lozenge");
+defineSymbol(math, ams, textord, "\u24c8", "\\circledS");
+defineSymbol(math, ams, textord, "\u00ae", "\\circledR");
+defineSymbol(math, ams, textord, "\u2221", "\\measuredangle");
+defineSymbol(math, ams, textord, "\u2204", "\\nexists");
+defineSymbol(math, ams, textord, "\u2127", "\\mho");
+defineSymbol(math, ams, textord, "\u2132", "\\Finv");
+defineSymbol(math, ams, textord, "\u2141", "\\Game");
+defineSymbol(math, ams, textord, "\u006b", "\\Bbbk");
+defineSymbol(math, ams, textord, "\u2035", "\\backprime");
+defineSymbol(math, ams, textord, "\u25b2", "\\blacktriangle");
+defineSymbol(math, ams, textord, "\u25bc", "\\blacktriangledown");
+defineSymbol(math, ams, textord, "\u25a0", "\\blacksquare");
+defineSymbol(math, ams, textord, "\u29eb", "\\blacklozenge");
+defineSymbol(math, ams, textord, "\u2605", "\\bigstar");
+defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle");
+defineSymbol(math, ams, textord, "\u2201", "\\complement");
+defineSymbol(math, ams, textord, "\u00f0", "\\eth");
+defineSymbol(math, ams, textord, "\u2571", "\\diagup");
+defineSymbol(math, ams, textord, "\u2572", "\\diagdown");
+defineSymbol(math, ams, textord, "\u25a1", "\\square");
+defineSymbol(math, ams, textord, "\u25a1", "\\Box");
+defineSymbol(math, ams, textord, "\u25ca", "\\Diamond");
+defineSymbol(math, ams, textord, "\u00a5", "\\yen");
+defineSymbol(math, ams, textord, "\u2713", "\\checkmark");
+
+// AMS Hebrew
+defineSymbol(math, ams, textord, "\u2136", "\\beth");
+defineSymbol(math, ams, textord, "\u2138", "\\daleth");
+defineSymbol(math, ams, textord, "\u2137", "\\gimel");
+
+// AMS Greek
+defineSymbol(math, ams, textord, "\u03dd", "\\digamma");
+defineSymbol(math, ams, textord, "\u03f0", "\\varkappa");
+
+// AMS Delimiters
+defineSymbol(math, ams, open, "\u250c", "\\ulcorner");
+defineSymbol(math, ams, close, "\u2510", "\\urcorner");
+defineSymbol(math, ams, open, "\u2514", "\\llcorner");
+defineSymbol(math, ams, close, "\u2518", "\\lrcorner");
+
+// AMS Binary Relations
+defineSymbol(math, ams, rel, "\u2266", "\\leqq");
+defineSymbol(math, ams, rel, "\u2a7d", "\\leqslant");
+defineSymbol(math, ams, rel, "\u2a95", "\\eqslantless");
+defineSymbol(math, ams, rel, "\u2272", "\\lesssim");
+defineSymbol(math, ams, rel, "\u2a85", "\\lessapprox");
+defineSymbol(math, ams, rel, "\u224a", "\\approxeq");
+defineSymbol(math, ams, bin, "\u22d6", "\\lessdot");
+defineSymbol(math, ams, rel, "\u22d8", "\\lll");
+defineSymbol(math, ams, rel, "\u2276", "\\lessgtr");
+defineSymbol(math, ams, rel, "\u22da", "\\lesseqgtr");
+defineSymbol(math, ams, rel, "\u2a8b", "\\lesseqqgtr");
+defineSymbol(math, ams, rel, "\u2251", "\\doteqdot");
+defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq");
+defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq");
+defineSymbol(math, ams, rel, "\u223d", "\\backsim");
+defineSymbol(math, ams, rel, "\u22cd", "\\backsimeq");
+defineSymbol(math, ams, rel, "\u2ac5", "\\subseteqq");
+defineSymbol(math, ams, rel, "\u22d0", "\\Subset");
+defineSymbol(math, ams, rel, "\u228f", "\\sqsubset");
+defineSymbol(math, ams, rel, "\u227c", "\\preccurlyeq");
+defineSymbol(math, ams, rel, "\u22de", "\\curlyeqprec");
+defineSymbol(math, ams, rel, "\u227e", "\\precsim");
+defineSymbol(math, ams, rel, "\u2ab7", "\\precapprox");
+defineSymbol(math, ams, rel, "\u22b2", "\\vartriangleleft");
+defineSymbol(math, ams, rel, "\u22b4", "\\trianglelefteq");
+defineSymbol(math, ams, rel, "\u22a8", "\\vDash");
+defineSymbol(math, ams, rel, "\u22aa", "\\Vvdash");
+defineSymbol(math, ams, rel, "\u2323", "\\smallsmile");
+defineSymbol(math, ams, rel, "\u2322", "\\smallfrown");
+defineSymbol(math, ams, rel, "\u224f", "\\bumpeq");
+defineSymbol(math, ams, rel, "\u224e", "\\Bumpeq");
+defineSymbol(math, ams, rel, "\u2267", "\\geqq");
+defineSymbol(math, ams, rel, "\u2a7e", "\\geqslant");
+defineSymbol(math, ams, rel, "\u2a96", "\\eqslantgtr");
+defineSymbol(math, ams, rel, "\u2273", "\\gtrsim");
+defineSymbol(math, ams, rel, "\u2a86", "\\gtrapprox");
+defineSymbol(math, ams, bin, "\u22d7", "\\gtrdot");
+defineSymbol(math, ams, rel, "\u22d9", "\\ggg");
+defineSymbol(math, ams, rel, "\u2277", "\\gtrless");
+defineSymbol(math, ams, rel, "\u22db", "\\gtreqless");
+defineSymbol(math, ams, rel, "\u2a8c", "\\gtreqqless");
+defineSymbol(math, ams, rel, "\u2256", "\\eqcirc");
+defineSymbol(math, ams, rel, "\u2257", "\\circeq");
+defineSymbol(math, ams, rel, "\u225c", "\\triangleq");
+defineSymbol(math, ams, rel, "\u223c", "\\thicksim");
+defineSymbol(math, ams, rel, "\u2248", "\\thickapprox");
+defineSymbol(math, ams, rel, "\u2ac6", "\\supseteqq");
+defineSymbol(math, ams, rel, "\u22d1", "\\Supset");
+defineSymbol(math, ams, rel, "\u2290", "\\sqsupset");
+defineSymbol(math, ams, rel, "\u227d", "\\succcurlyeq");
+defineSymbol(math, ams, rel, "\u22df", "\\curlyeqsucc");
+defineSymbol(math, ams, rel, "\u227f", "\\succsim");
+defineSymbol(math, ams, rel, "\u2ab8", "\\succapprox");
+defineSymbol(math, ams, rel, "\u22b3", "\\vartriangleright");
+defineSymbol(math, ams, rel, "\u22b5", "\\trianglerighteq");
+defineSymbol(math, ams, rel, "\u22a9", "\\Vdash");
+defineSymbol(math, ams, rel, "\u2223", "\\shortmid");
+defineSymbol(math, ams, rel, "\u2225", "\\shortparallel");
+defineSymbol(math, ams, rel, "\u226c", "\\between");
+defineSymbol(math, ams, rel, "\u22d4", "\\pitchfork");
+defineSymbol(math, ams, rel, "\u221d", "\\varpropto");
+defineSymbol(math, ams, rel, "\u25c0", "\\blacktriangleleft");
+defineSymbol(math, ams, rel, "\u2234", "\\therefore");
+defineSymbol(math, ams, rel, "\u220d", "\\backepsilon");
+defineSymbol(math, ams, rel, "\u25b6", "\\blacktriangleright");
+defineSymbol(math, ams, rel, "\u2235", "\\because");
+defineSymbol(math, ams, rel, "\u22d8", "\\llless");
+defineSymbol(math, ams, rel, "\u22d9", "\\gggtr");
+defineSymbol(math, ams, bin, "\u22b2", "\\lhd");
+defineSymbol(math, ams, bin, "\u22b3", "\\rhd");
+defineSymbol(math, ams, rel, "\u2242", "\\eqsim");
+defineSymbol(math, main, rel, "\u22c8", "\\Join");
+defineSymbol(math, ams, rel, "\u2251", "\\Doteq");
+
+// AMS Binary Operators
+defineSymbol(math, ams, bin, "\u2214", "\\dotplus");
+defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus");
+defineSymbol(math, ams, bin, "\u22d2", "\\Cap");
+defineSymbol(math, ams, bin, "\u22d3", "\\Cup");
+defineSymbol(math, ams, bin, "\u2a5e", "\\doublebarwedge");
+defineSymbol(math, ams, bin, "\u229f", "\\boxminus");
+defineSymbol(math, ams, bin, "\u229e", "\\boxplus");
+defineSymbol(math, ams, bin, "\u22c7", "\\divideontimes");
+defineSymbol(math, ams, bin, "\u22c9", "\\ltimes");
+defineSymbol(math, ams, bin, "\u22ca", "\\rtimes");
+defineSymbol(math, ams, bin, "\u22cb", "\\leftthreetimes");
+defineSymbol(math, ams, bin, "\u22cc", "\\rightthreetimes");
+defineSymbol(math, ams, bin, "\u22cf", "\\curlywedge");
+defineSymbol(math, ams, bin, "\u22ce", "\\curlyvee");
+defineSymbol(math, ams, bin, "\u229d", "\\circleddash");
+defineSymbol(math, ams, bin, "\u229b", "\\circledast");
+defineSymbol(math, ams, bin, "\u22c5", "\\centerdot");
+defineSymbol(math, ams, bin, "\u22ba", "\\intercal");
+defineSymbol(math, ams, bin, "\u22d2", "\\doublecap");
+defineSymbol(math, ams, bin, "\u22d3", "\\doublecup");
+defineSymbol(math, ams, bin, "\u22a0", "\\boxtimes");
+
+// AMS Arrows
+defineSymbol(math, ams, rel, "\u21e2", "\\dashrightarrow");
+defineSymbol(math, ams, rel, "\u21e0", "\\dashleftarrow");
+defineSymbol(math, ams, rel, "\u21c7", "\\leftleftarrows");
+defineSymbol(math, ams, rel, "\u21c6", "\\leftrightarrows");
+defineSymbol(math, ams, rel, "\u21da", "\\Lleftarrow");
+defineSymbol(math, ams, rel, "\u219e", "\\twoheadleftarrow");
+defineSymbol(math, ams, rel, "\u21a2", "\\leftarrowtail");
+defineSymbol(math, ams, rel, "\u21ab", "\\looparrowleft");
+defineSymbol(math, ams, rel, "\u21cb", "\\leftrightharpoons");
+defineSymbol(math, ams, rel, "\u21b6", "\\curvearrowleft");
+defineSymbol(math, ams, rel, "\u21ba", "\\circlearrowleft");
+defineSymbol(math, ams, rel, "\u21b0", "\\Lsh");
+defineSymbol(math, ams, rel, "\u21c8", "\\upuparrows");
+defineSymbol(math, ams, rel, "\u21bf", "\\upharpoonleft");
+defineSymbol(math, ams, rel, "\u21c3", "\\downharpoonleft");
+defineSymbol(math, ams, rel, "\u22b8", "\\multimap");
+defineSymbol(math, ams, rel, "\u21ad", "\\leftrightsquigarrow");
+defineSymbol(math, ams, rel, "\u21c9", "\\rightrightarrows");
+defineSymbol(math, ams, rel, "\u21c4", "\\rightleftarrows");
+defineSymbol(math, ams, rel, "\u21a0", "\\twoheadrightarrow");
+defineSymbol(math, ams, rel, "\u21a3", "\\rightarrowtail");
+defineSymbol(math, ams, rel, "\u21ac", "\\looparrowright");
+defineSymbol(math, ams, rel, "\u21b7", "\\curvearrowright");
+defineSymbol(math, ams, rel, "\u21bb", "\\circlearrowright");
+defineSymbol(math, ams, rel, "\u21b1", "\\Rsh");
+defineSymbol(math, ams, rel, "\u21ca", "\\downdownarrows");
+defineSymbol(math, ams, rel, "\u21be", "\\upharpoonright");
+defineSymbol(math, ams, rel, "\u21c2", "\\downharpoonright");
+defineSymbol(math, ams, rel, "\u21dd", "\\rightsquigarrow");
+defineSymbol(math, ams, rel, "\u21dd", "\\leadsto");
+defineSymbol(math, ams, rel, "\u21db", "\\Rrightarrow");
+defineSymbol(math, ams, rel, "\u21be", "\\restriction");
+
+defineSymbol(math, main, textord, "\u2018", "`");
+defineSymbol(math, main, textord, "$", "\\$");
+defineSymbol(text, main, textord, "$", "\\$");
+defineSymbol(math, main, textord, "%", "\\%");
+defineSymbol(text, main, textord, "%", "\\%");
+defineSymbol(math, main, textord, "_", "\\_");
+defineSymbol(text, main, textord, "_", "\\_");
+defineSymbol(math, main, textord, "\u2220", "\\angle");
+defineSymbol(math, main, textord, "\u221e", "\\infty");
+defineSymbol(math, main, textord, "\u2032", "\\prime");
+defineSymbol(math, main, textord, "\u25b3", "\\triangle");
+defineSymbol(math, main, textord, "\u0393", "\\Gamma");
+defineSymbol(math, main, textord, "\u0394", "\\Delta");
+defineSymbol(math, main, textord, "\u0398", "\\Theta");
+defineSymbol(math, main, textord, "\u039b", "\\Lambda");
+defineSymbol(math, main, textord, "\u039e", "\\Xi");
+defineSymbol(math, main, textord, "\u03a0", "\\Pi");
+defineSymbol(math, main, textord, "\u03a3", "\\Sigma");
+defineSymbol(math, main, textord, "\u03a5", "\\Upsilon");
+defineSymbol(math, main, textord, "\u03a6", "\\Phi");
+defineSymbol(math, main, textord, "\u03a8", "\\Psi");
+defineSymbol(math, main, textord, "\u03a9", "\\Omega");
+defineSymbol(math, main, textord, "\u00ac", "\\neg");
+defineSymbol(math, main, textord, "\u00ac", "\\lnot");
+defineSymbol(math, main, textord, "\u22a4", "\\top");
+defineSymbol(math, main, textord, "\u22a5", "\\bot");
+defineSymbol(math, main, textord, "\u2205", "\\emptyset");
+defineSymbol(math, ams, textord, "\u2205", "\\varnothing");
+defineSymbol(math, main, mathord, "\u03b1", "\\alpha");
+defineSymbol(math, main, mathord, "\u03b2", "\\beta");
+defineSymbol(math, main, mathord, "\u03b3", "\\gamma");
+defineSymbol(math, main, mathord, "\u03b4", "\\delta");
+defineSymbol(math, main, mathord, "\u03f5", "\\epsilon");
+defineSymbol(math, main, mathord, "\u03b6", "\\zeta");
+defineSymbol(math, main, mathord, "\u03b7", "\\eta");
+defineSymbol(math, main, mathord, "\u03b8", "\\theta");
+defineSymbol(math, main, mathord, "\u03b9", "\\iota");
+defineSymbol(math, main, mathord, "\u03ba", "\\kappa");
+defineSymbol(math, main, mathord, "\u03bb", "\\lambda");
+defineSymbol(math, main, mathord, "\u03bc", "\\mu");
+defineSymbol(math, main, mathord, "\u03bd", "\\nu");
+defineSymbol(math, main, mathord, "\u03be", "\\xi");
+defineSymbol(math, main, mathord, "o", "\\omicron");
+defineSymbol(math, main, mathord, "\u03c0", "\\pi");
+defineSymbol(math, main, mathord, "\u03c1", "\\rho");
+defineSymbol(math, main, mathord, "\u03c3", "\\sigma");
+defineSymbol(math, main, mathord, "\u03c4", "\\tau");
+defineSymbol(math, main, mathord, "\u03c5", "\\upsilon");
+defineSymbol(math, main, mathord, "\u03d5", "\\phi");
+defineSymbol(math, main, mathord, "\u03c7", "\\chi");
+defineSymbol(math, main, mathord, "\u03c8", "\\psi");
+defineSymbol(math, main, mathord, "\u03c9", "\\omega");
+defineSymbol(math, main, mathord, "\u03b5", "\\varepsilon");
+defineSymbol(math, main, mathord, "\u03d1", "\\vartheta");
+defineSymbol(math, main, mathord, "\u03d6", "\\varpi");
+defineSymbol(math, main, mathord, "\u03f1", "\\varrho");
+defineSymbol(math, main, mathord, "\u03c2", "\\varsigma");
+defineSymbol(math, main, mathord, "\u03c6", "\\varphi");
+defineSymbol(math, main, bin, "\u2217", "*");
+defineSymbol(math, main, bin, "+", "+");
+defineSymbol(math, main, bin, "\u2212", "-");
+defineSymbol(math, main, bin, "\u22c5", "\\cdot");
+defineSymbol(math, main, bin, "\u2218", "\\circ");
+defineSymbol(math, main, bin, "\u00f7", "\\div");
+defineSymbol(math, main, bin, "\u00b1", "\\pm");
+defineSymbol(math, main, bin, "\u00d7", "\\times");
+defineSymbol(math, main, bin, "\u2229", "\\cap");
+defineSymbol(math, main, bin, "\u222a", "\\cup");
+defineSymbol(math, main, bin, "\u2216", "\\setminus");
+defineSymbol(math, main, bin, "\u2227", "\\land");
+defineSymbol(math, main, bin, "\u2228", "\\lor");
+defineSymbol(math, main, bin, "\u2227", "\\wedge");
+defineSymbol(math, main, bin, "\u2228", "\\vee");
+defineSymbol(math, main, textord, "\u221a", "\\surd");
+defineSymbol(math, main, open, "(", "(");
+defineSymbol(math, main, open, "[", "[");
+defineSymbol(math, main, open, "\u27e8", "\\langle");
+defineSymbol(math, main, open, "\u2223", "\\lvert");
+defineSymbol(math, main, open, "\u2225", "\\lVert");
+defineSymbol(math, main, close, ")", ")");
+defineSymbol(math, main, close, "]", "]");
+defineSymbol(math, main, close, "?", "?");
+defineSymbol(math, main, close, "!", "!");
+defineSymbol(math, main, close, "\u27e9", "\\rangle");
+defineSymbol(math, main, close, "\u2223", "\\rvert");
+defineSymbol(math, main, close, "\u2225", "\\rVert");
+defineSymbol(math, main, rel, "=", "=");
+defineSymbol(math, main, rel, "<", "<");
+defineSymbol(math, main, rel, ">", ">");
+defineSymbol(math, main, rel, ":", ":");
+defineSymbol(math, main, rel, "\u2248", "\\approx");
+defineSymbol(math, main, rel, "\u2245", "\\cong");
+defineSymbol(math, main, rel, "\u2265", "\\ge");
+defineSymbol(math, main, rel, "\u2265", "\\geq");
+defineSymbol(math, main, rel, "\u2190", "\\gets");
+defineSymbol(math, main, rel, ">", "\\gt");
+defineSymbol(math, main, rel, "\u2208", "\\in");
+defineSymbol(math, main, rel, "\u2209", "\\notin");
+defineSymbol(math, main, rel, "\u2282", "\\subset");
+defineSymbol(math, main, rel, "\u2283", "\\supset");
+defineSymbol(math, main, rel, "\u2286", "\\subseteq");
+defineSymbol(math, main, rel, "\u2287", "\\supseteq");
+defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq");
+defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq");
+defineSymbol(math, main, rel, "\u22a8", "\\models");
+defineSymbol(math, main, rel, "\u2190", "\\leftarrow");
+defineSymbol(math, main, rel, "\u2264", "\\le");
+defineSymbol(math, main, rel, "\u2264", "\\leq");
+defineSymbol(math, main, rel, "<", "\\lt");
+defineSymbol(math, main, rel, "\u2260", "\\ne");
+defineSymbol(math, main, rel, "\u2260", "\\neq");
+defineSymbol(math, main, rel, "\u2192", "\\rightarrow");
+defineSymbol(math, main, rel, "\u2192", "\\to");
+defineSymbol(math, ams, rel, "\u2271", "\\ngeq");
+defineSymbol(math, ams, rel, "\u2270", "\\nleq");
+defineSymbol(math, main, spacing, null, "\\!");
+defineSymbol(math, main, spacing, "\u00a0", "\\ ");
+defineSymbol(math, main, spacing, "\u00a0", "~");
+defineSymbol(math, main, spacing, null, "\\,");
+defineSymbol(math, main, spacing, null, "\\:");
+defineSymbol(math, main, spacing, null, "\\;");
+defineSymbol(math, main, spacing, null, "\\enspace");
+defineSymbol(math, main, spacing, null, "\\qquad");
+defineSymbol(math, main, spacing, null, "\\quad");
+defineSymbol(math, main, spacing, "\u00a0", "\\space");
+defineSymbol(math, main, punct, ",", ",");
+defineSymbol(math, main, punct, ";", ";");
+defineSymbol(math, main, punct, ":", "\\colon");
+defineSymbol(math, ams, bin, "\u22bc", "\\barwedge");
+defineSymbol(math, ams, bin, "\u22bb", "\\veebar");
+defineSymbol(math, main, bin, "\u2299", "\\odot");
+defineSymbol(math, main, bin, "\u2295", "\\oplus");
+defineSymbol(math, main, bin, "\u2297", "\\otimes");
+defineSymbol(math, main, textord, "\u2202", "\\partial");
+defineSymbol(math, main, bin, "\u2298", "\\oslash");
+defineSymbol(math, ams, bin, "\u229a", "\\circledcirc");
+defineSymbol(math, ams, bin, "\u22a1", "\\boxdot");
+defineSymbol(math, main, bin, "\u25b3", "\\bigtriangleup");
+defineSymbol(math, main, bin, "\u25bd", "\\bigtriangledown");
+defineSymbol(math, main, bin, "\u2020", "\\dagger");
+defineSymbol(math, main, bin, "\u22c4", "\\diamond");
+defineSymbol(math, main, bin, "\u22c6", "\\star");
+defineSymbol(math, main, bin, "\u25c3", "\\triangleleft");
+defineSymbol(math, main, bin, "\u25b9", "\\triangleright");
+defineSymbol(math, main, open, "{", "\\{");
+defineSymbol(text, main, textord, "{", "\\{");
+defineSymbol(math, main, close, "}", "\\}");
+defineSymbol(text, main, textord, "}", "\\}");
+defineSymbol(math, main, open, "{", "\\lbrace");
+defineSymbol(math, main, close, "}", "\\rbrace");
+defineSymbol(math, main, open, "[", "\\lbrack");
+defineSymbol(math, main, close, "]", "\\rbrack");
+defineSymbol(math, main, open, "\u230a", "\\lfloor");
+defineSymbol(math, main, close, "\u230b", "\\rfloor");
+defineSymbol(math, main, open, "\u2308", "\\lceil");
+defineSymbol(math, main, close, "\u2309", "\\rceil");
+defineSymbol(math, main, textord, "\\", "\\backslash");
+defineSymbol(math, main, textord, "\u2223", "|");
+defineSymbol(math, main, textord, "\u2223", "\\vert");
+defineSymbol(math, main, textord, "\u2225", "\\|");
+defineSymbol(math, main, textord, "\u2225", "\\Vert");
+defineSymbol(math, main, rel, "\u2191", "\\uparrow");
+defineSymbol(math, main, rel, "\u21d1", "\\Uparrow");
+defineSymbol(math, main, rel, "\u2193", "\\downarrow");
+defineSymbol(math, main, rel, "\u21d3", "\\Downarrow");
+defineSymbol(math, main, rel, "\u2195", "\\updownarrow");
+defineSymbol(math, main, rel, "\u21d5", "\\Updownarrow");
+defineSymbol(math, math, op, "\u2210", "\\coprod");
+defineSymbol(math, math, op, "\u22c1", "\\bigvee");
+defineSymbol(math, math, op, "\u22c0", "\\bigwedge");
+defineSymbol(math, math, op, "\u2a04", "\\biguplus");
+defineSymbol(math, math, op, "\u22c2", "\\bigcap");
+defineSymbol(math, math, op, "\u22c3", "\\bigcup");
+defineSymbol(math, math, op, "\u222b", "\\int");
+defineSymbol(math, math, op, "\u222b", "\\intop");
+defineSymbol(math, math, op, "\u222c", "\\iint");
+defineSymbol(math, math, op, "\u222d", "\\iiint");
+defineSymbol(math, math, op, "\u220f", "\\prod");
+defineSymbol(math, math, op, "\u2211", "\\sum");
+defineSymbol(math, math, op, "\u2a02", "\\bigotimes");
+defineSymbol(math, math, op, "\u2a01", "\\bigoplus");
+defineSymbol(math, math, op, "\u2a00", "\\bigodot");
+defineSymbol(math, math, op, "\u222e", "\\oint");
+defineSymbol(math, math, op, "\u2a06", "\\bigsqcup");
+defineSymbol(math, math, op, "\u222b", "\\smallint");
+defineSymbol(text, main, inner, "\u2026", "\\textellipsis");
+defineSymbol(math, main, inner, "\u2026", "\\mathellipsis");
+defineSymbol(text, main, inner, "\u2026", "\\ldots");
+defineSymbol(math, main, inner, "\u2026", "\\ldots");
+defineSymbol(math, main, inner, "\u22ef", "\\cdots");
+defineSymbol(math, main, inner, "\u22f1", "\\ddots");
+defineSymbol(math, main, textord, "\u22ee", "\\vdots");
+defineSymbol(math, main, accent, "\u00b4", "\\acute");
+defineSymbol(math, main, accent, "\u0060", "\\grave");
+defineSymbol(math, main, accent, "\u00a8", "\\ddot");
+defineSymbol(math, main, accent, "\u007e", "\\tilde");
+defineSymbol(math, main, accent, "\u00af", "\\bar");
+defineSymbol(math, main, accent, "\u02d8", "\\breve");
+defineSymbol(math, main, accent, "\u02c7", "\\check");
+defineSymbol(math, main, accent, "\u005e", "\\hat");
+defineSymbol(math, main, accent, "\u20d7", "\\vec");
+defineSymbol(math, main, accent, "\u02d9", "\\dot");
+defineSymbol(math, main, mathord, "\u0131", "\\imath");
+defineSymbol(math, main, mathord, "\u0237", "\\jmath");
+
+defineSymbol(text, main, textord, "\u2013", "--");
+defineSymbol(text, main, textord, "\u2014", "---");
+defineSymbol(text, main, textord, "\u2018", "`");
+defineSymbol(text, main, textord, "\u2019", "'");
+defineSymbol(text, main, textord, "\u201c", "``");
+defineSymbol(text, main, textord, "\u201d", "''");
+defineSymbol(math, main, textord, "\u00b0", "\\degree");
+defineSymbol(text, main, textord, "\u00b0", "\\degree");
+defineSymbol(math, main, mathord, "\u00a3", "\\pounds");
+defineSymbol(math, ams, textord, "\u2720", "\\maltese");
+defineSymbol(text, ams, textord, "\u2720", "\\maltese");
+
+defineSymbol(text, main, spacing, "\u00a0", "\\ ");
+defineSymbol(text, main, spacing, "\u00a0", " ");
+defineSymbol(text, main, spacing, "\u00a0", "~");
+
+// There are lots of symbols which are the same, so we add them in afterwards.
+var i;
+var ch;
+
+// All of these are textords in math mode
+var mathTextSymbols = "0123456789/@.\"";
+for (i = 0; i < mathTextSymbols.length; i++) {
+    ch = mathTextSymbols.charAt(i);
+    defineSymbol(math, main, textord, ch, ch);
+}
+
+// All of these are textords in text mode
+var textSymbols = "0123456789!@*()-=+[]\";:?/.,";
+for (i = 0; i < textSymbols.length; i++) {
+    ch = textSymbols.charAt(i);
+    defineSymbol(text, main, textord, ch, ch);
+}
+
+// All of these are textords in text mode, and mathords in math mode
+var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+for (i = 0; i < letters.length; i++) {
+    ch = letters.charAt(i);
+    defineSymbol(math, main, mathord, ch, ch);
+    defineSymbol(text, main, textord, ch, ch);
+}
+
+// Latin-1 letters
+for (i = 0x00C0; i <= 0x00D6; i++) {
+    ch = String.fromCharCode(i);
+    defineSymbol(text, main, textord, ch, ch);
+}
+
+for (i = 0x00D8; i <= 0x00F6; i++) {
+    ch = String.fromCharCode(i);
+    defineSymbol(text, main, textord, ch, ch);
+}
+
+for (i = 0x00F8; i <= 0x00FF; i++) {
+    ch = String.fromCharCode(i);
+    defineSymbol(text, main, textord, ch, ch);
+}
+
+// Cyrillic
+for (i = 0x0410; i <= 0x044F; i++) {
+    ch = String.fromCharCode(i);
+    defineSymbol(text, main, textord, ch, ch);
+}
+
+// Unicode versions of existing characters
+defineSymbol(text, main, textord, "\u2013", "–");
+defineSymbol(text, main, textord, "\u2014", "—");
+defineSymbol(text, main, textord, "\u2018", "‘");
+defineSymbol(text, main, textord, "\u2019", "’");
+defineSymbol(text, main, textord, "\u201c", "“");
+defineSymbol(text, main, textord, "\u201d", "”");
+
+},{}],24:[function(require,module,exports){
+var hangulRegex = /[\uAC00-\uD7AF]/;
+
+// This regex combines
+// - Hiragana: [\u3040-\u309F]
+// - Katakana: [\u30A0-\u30FF]
+// - CJK ideograms: [\u4E00-\u9FAF]
+// - Hangul syllables: [\uAC00-\uD7AF]
+// Notably missing are halfwidth Katakana and Romanji glyphs.
+var cjkRegex =
+    /[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/;
+
+module.exports = {
+    cjkRegex: cjkRegex,
+    hangulRegex: hangulRegex
+};
+
+},{}],25:[function(require,module,exports){
+/**
+ * This file contains a list of utility functions which are useful in other
+ * files.
+ */
+
+/**
+ * Provide an `indexOf` function which works in IE8, but defers to native if
+ * possible.
+ */
+var nativeIndexOf = Array.prototype.indexOf;
+var indexOf = function(list, elem) {
+    if (list == null) {
+        return -1;
+    }
+    if (nativeIndexOf && list.indexOf === nativeIndexOf) {
+        return list.indexOf(elem);
+    }
+    var i = 0;
+    var l = list.length;
+    for (; i < l; i++) {
+        if (list[i] === elem) {
+            return i;
+        }
+    }
+    return -1;
+};
+
+/**
+ * Return whether an element is contained in a list
+ */
+var contains = function(list, elem) {
+    return indexOf(list, elem) !== -1;
+};
+
+/**
+ * Provide a default value if a setting is undefined
+ */
+var deflt = function(setting, defaultIfUndefined) {
+    return setting === undefined ? defaultIfUndefined : setting;
+};
+
+// hyphenate and escape adapted from Facebook's React under Apache 2 license
+
+var uppercase = /([A-Z])/g;
+var hyphenate = function(str) {
+    return str.replace(uppercase, "-$1").toLowerCase();
+};
+
+var ESCAPE_LOOKUP = {
+    "&": "&amp;",
+    ">": "&gt;",
+    "<": "&lt;",
+    "\"": "&quot;",
+    "'": "&#x27;"
+};
+
+var ESCAPE_REGEX = /[&><"']/g;
+
+function escaper(match) {
+    return ESCAPE_LOOKUP[match];
+}
+
+/**
+ * Escapes text to prevent scripting attacks.
+ *
+ * @param {*} text Text value to escape.
+ * @return {string} An escaped string.
+ */
+function escape(text) {
+    return ("" + text).replace(ESCAPE_REGEX, escaper);
+}
+
+/**
+ * A function to set the text content of a DOM element in all supported
+ * browsers. Note that we don't define this if there is no document.
+ */
+var setTextContent;
+if (typeof document !== "undefined") {
+    var testNode = document.createElement("span");
+    if ("textContent" in testNode) {
+        setTextContent = function(node, text) {
+            node.textContent = text;
+        };
+    } else {
+        setTextContent = function(node, text) {
+            node.innerText = text;
+        };
+    }
+}
+
+/**
+ * A function to clear a node.
+ */
+function clearNode(node) {
+    setTextContent(node, "");
+}
+
+module.exports = {
+    contains: contains,
+    deflt: deflt,
+    escape: escape,
+    hyphenate: hyphenate,
+    indexOf: indexOf,
+    setTextContent: setTextContent,
+    clearNode: clearNode
+};
+
+},{}]},{},[1])(1)
+});
\ No newline at end of file
diff --git a/source/javascripts/main.js b/source/javascripts/main.js
new file mode 100644
index 0000000..483f0c9
--- /dev/null
+++ b/source/javascripts/main.js
@@ -0,0 +1,100 @@
+/*
+	Spectral by HTML5 UP
+	html5up.net | @n33co
+	Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
+*/
+
+(function($) {
+
+	skel
+		.breakpoints({
+			xlarge:	'(max-width: 1680px)',
+			large:	'(max-width: 1280px)',
+			medium:	'(max-width: 980px)',
+			small:	'(max-width: 736px)',
+			xsmall:	'(max-width: 480px)'
+		});
+
+	$(function() {
+
+		var	$window = $(window),
+			$body = $('body'),
+			$wrapper = $('#page-wrapper'),
+			$banner = $('#banner'),
+			$header = $('#header');
+
+		// Disable animations/transitions until the page has loaded.
+			$body.addClass('is-loading');
+
+			$window.on('load', function() {
+				window.setTimeout(function() {
+					$body.removeClass('is-loading');
+				}, 100);
+			});
+
+		// Mobile?
+			if (skel.vars.mobile)
+				$body.addClass('is-mobile');
+			else
+				skel
+					.on('-medium !medium', function() {
+						$body.removeClass('is-mobile');
+					})
+					.on('+medium', function() {
+						$body.addClass('is-mobile');
+					});
+
+		// Fix: Placeholder polyfill.
+			$('form').placeholder();
+
+		// Prioritize "important" elements on medium.
+			skel.on('+medium -medium', function() {
+				$.prioritize(
+					'.important\\28 medium\\29',
+					skel.breakpoint('medium').active
+				);
+			});
+
+		// Scrolly.
+			$('.scrolly')
+				.scrolly({
+					speed: 1500,
+					offset: $header.outerHeight()
+				});
+
+		// Menu.
+			$('#menu')
+				.append('<a href="#menu" class="close"></a>')
+				.appendTo($body)
+				.panel({
+					delay: 500,
+					hideOnClick: true,
+					hideOnSwipe: true,
+					resetScroll: true,
+					resetForms: true,
+					side: 'right',
+					target: $body,
+					visibleClass: 'is-menu-visible'
+				});
+
+		// Header.
+			if (skel.vars.IEVersion < 9)
+				$header.removeClass('alt');
+
+			if ($banner.length > 0
+			&&	$header.hasClass('alt')) {
+
+				$window.on('resize', function() { $window.trigger('scroll'); });
+
+				$banner.scrollex({
+					bottom:		$header.outerHeight() + 1,
+					terminate:	function() { $header.removeClass('alt'); },
+					enter:		function() { $header.addClass('alt'); },
+					leave:		function() { $header.removeClass('alt'); }
+				});
+
+			}
+
+	});
+
+})(jQuery);
diff --git a/source/javascripts/navigation.js b/source/javascripts/navigation.js
new file mode 100644
index 0000000..915e25a
--- /dev/null
+++ b/source/javascripts/navigation.js
@@ -0,0 +1,33 @@
+/**
+ * navigation.js
+ *
+ * Handles toggling the navigation menu for small screens.
+ */
+( function() {
+	var nav = document.getElementById( 'site-navigation' ), button, menu;
+	if ( ! nav )
+		return;
+	button = nav.getElementsByTagName( 'h3' )[0];
+	menu   = nav.getElementsByTagName( 'ul' )[0];
+	if ( ! button )
+		return;
+
+	// Hide button if menu is missing or empty.
+	if ( ! menu || ! menu.childNodes.length ) {
+		button.style.display = 'none';
+		return;
+	}
+
+	button.onclick = function() {
+		if ( -1 == menu.className.indexOf( 'nav-menu' ) )
+			menu.className = 'nav-menu';
+
+		if ( -1 != button.className.indexOf( 'toggled-on' ) ) {
+			button.className = button.className.replace( ' toggled-on', '' );
+			menu.className = menu.className.replace( ' toggled-on', '' );
+		} else {
+			button.className += ' toggled-on';
+			menu.className += ' toggled-on';
+		}
+	};
+} )();
\ No newline at end of file
diff --git a/source/javascripts/pseudocode.js b/source/javascripts/pseudocode.js
new file mode 100644
index 0000000..f614f96
--- /dev/null
+++ b/source/javascripts/pseudocode.js
@@ -0,0 +1,4 @@
+(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.pseudocode=e()}})(function(){var e,t,i;return function h(e,t,i){function a(r,l){if(!t[r]){if(!e[r]){var p=typeof require=="function"&&require;if(!l&&p)return p(r,!0);if(s)return s(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var c=t[r]={exports:{}};e[r][0].call(c.exports,function(t){var i=e[r][1][t];return a(i?i:t)},c,c.exports,h,e,t,i)}return t[r].exports}var s=typeof require=="function"&&require;for(var r=0;r<i.length;r++)a(i[r]);return a}({1:[function(e,t,i){var h=e("./src/ParseError");var a=e("./src/buildTree");var s=e("./src/parseTree");var r=e("./src/utils");var l=function(e,t){r.clearNode(t);var i=s(e);var h=a(i).toNode();t.appendChild(h)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");l=function(){throw new h("KaTeX doesn't work in quirks mode.")}}}var p=function(e){var t=s(e);return a(t).toMarkup()};t.exports={render:l,renderToString:p,ParseError:h}},{"./src/ParseError":4,"./src/buildTree":8,"./src/parseTree":13,"./src/utils":15}],2:[function(e,t,i){var h=e("./ParseError");function a(e){this._input=e}function s(e,t,i){this.text=e;this.data=t;this.position=i}var r=[/^[/|@.""`0-9a-zA-Z]/,/^[*+-]/,/^[=<>:]/,/^[,;]/,/^['\^_{}]/,/^[(\[]/,/^[)\]?!]/,/^~/];var l=[/^[a-zA-Z0-9`!@*()-=+\[\]'";:?\/.,]/,/^[{}]/,/^~/];var p=/^\s*/;var n=/^( +|\\  +)/;var c=/^\\(?:[a-zA-Z]+|.)/;a.prototype._innerLex=function(e,t,i){var a=this._input.slice(e);var r;if(i){r=a.match(p)[0];e+=r.length;a=a.slice(r.length)}else{r=a.match(n);if(r!==null){return new s(" ",null,e+r[0].length)}}if(a.length===0){return new s("EOF",null,e)}var l;if(l=a.match(c)){return new s(l[0],null,e+l[0].length)}else{for(var o=0;o<t.length;o++){var d=t[o];if(l=a.match(d)){return new s(l[0],null,e+l[0].length)}}}throw new h("Unexpected character: '"+a[0]+"'",this,e)};var o=/^(#[a-z0-9]+|[a-z]+)/i;a.prototype._innerLexColor=function(e){var t=this._input.slice(e);var i=t.match(p)[0];e+=i.length;t=t.slice(i.length);var a;if(a=t.match(o)){return new s(a[0],null,e+a[0].length)}else{throw new h("Invalid color",this,e)}};var d=/^(-?)\s*(\d+(?:\.\d*)?|\.\d+)\s*([a-z]{2})/;a.prototype._innerLexSize=function(e){var t=this._input.slice(e);var i=t.match(p)[0];e+=i.length;t=t.slice(i.length);var a;if(a=t.match(d)){var r=a[3];if(r!=="em"&&r!=="ex"){throw new h("Invalid unit: '"+r+"'",this,e)}return new s(a[0],{number:+(a[1]+a[2]),unit:r},e+a[0].length)}throw new h("Invalid size",this,e)};a.prototype._innerLexWhitespace=function(e){var t=this._input.slice(e);var i=t.match(p)[0];e+=i.length;return new s(i,null,e)};a.prototype.lex=function(e,t){if(t==="math"){return this._innerLex(e,r,true)}else if(t==="text"){return this._innerLex(e,l,false)}else if(t==="color"){return this._innerLexColor(e)}else if(t==="size"){return this._innerLexSize(e)}else if(t==="whitespace"){return this._innerLexWhitespace(e)}};t.exports=a},{"./ParseError":4}],3:[function(e,t,i){function h(e,t,i,h,a){this.style=e;this.color=i;this.size=t;if(h===undefined){h=e}this.parentStyle=h;if(a===undefined){a=t}this.parentSize=a}h.prototype.withStyle=function(e){return new h(e,this.size,this.color,this.style,this.size)};h.prototype.withSize=function(e){return new h(this.style,e,this.color,this.style,this.size)};h.prototype.withColor=function(e){return new h(this.style,this.size,e,this.style,this.size)};h.prototype.reset=function(){return new h(this.style,this.size,this.color,this.style,this.size)};var a={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd"};h.prototype.getColor=function(){return a[this.color]||this.color};t.exports=h},{}],4:[function(e,t,i){function h(e,t,i){var a="KaTeX parse error: "+e;if(t!==undefined&&i!==undefined){a+=" at position "+i+": ";var s=t._input;s=s.slice(0,i)+"̲"+s.slice(i);var r=Math.max(0,i-15);var l=i+15;a+=s.slice(r,l)}var p=new Error(a);p.name="ParseError";p.__proto__=h.prototype;p.position=i;return p}h.prototype.__proto__=Error.prototype;t.exports=h},{}],5:[function(e,t,i){var h=e("./functions");var a=e("./Lexer");var s=e("./symbols");var r=e("./utils");var l=e("./ParseError");function p(e){this.lexer=new a(e)}function n(e,t,i){this.type=e;this.value=t;this.mode=i}function c(e,t){this.result=e;this.position=t}function o(e,t,i,h,a,s){this.result=e;this.isFunction=t;this.allowedInText=i;this.numArgs=h;this.numOptionalArgs=a;this.argTypes=s}p.prototype.expect=function(e,t){if(e.text!==t){throw new l("Expected '"+t+"', got '"+e.text+"'",this.lexer,e.position)}};p.prototype.parse=function(e){var t=this.parseInput(0,"math");return t.result};p.prototype.parseInput=function(e,t){var i=this.parseExpression(e,t,false,null);var h=this.lexer.lex(i.position,t);this.expect(h,"EOF");return i};p.prototype.parseExpression=function(e,t,i,h){var a=[];while(true){var s=this.lexer.lex(e,t);if(h!=null&&s.text===h){break}var r=this.parseAtom(e,t);if(!r){break}if(i&&r.result.type==="infix"){break}a.push(r.result);e=r.position}return new c(this.handleInfixNodes(a,t),e)};p.prototype.handleInfixNodes=function(e,t){var i=-1;var a;var s;for(var r=0;r<e.length;r++){var p=e[r];if(p.type==="infix"){if(i!==-1){throw new l("only one infix operator per group",this.lexer,-1)}i=r;s=p.value.replaceWith;a=h.funcs[s]}}if(i!==-1){var c,o;var d=e.slice(0,i);var g=e.slice(i+1);if(d.length===1&&d[0].type==="ordgroup"){c=d[0]}else{c=new n("ordgroup",d,t)}if(g.length===1&&g[0].type==="ordgroup"){o=g[0]}else{o=new n("ordgroup",g,t)}var u=a.handler(s,c,o);return[new n(u.type,u,t)]}else{return e}};var d=1;p.prototype.handleSupSubscript=function(e,t,i,a){var s=this.parseGroup(e,t);if(!s){throw new l("Expected group after '"+i+"'",this.lexer,e)}else if(s.numArgs>0){var r=h.getGreediness(s.result.result);if(r>d){return this.parseFunction(e,t)}else{throw new l("Got function '"+s.result.result+"' with no arguments "+"as "+a,this.lexer,e)}}else{return s.result}};p.prototype.parseAtom=function(e,t){var i=this.parseImplicitGroup(e,t);if(t==="text"){return i}var h;if(!i){h=e;i=undefined}else{h=i.position}var a;var s;var r;while(true){var p=this.lexer.lex(h,t);if(p.text==="^"){if(a){throw new l("Double superscript",this.lexer,h)}r=this.handleSupSubscript(p.position,t,p.text,"superscript");h=r.position;a=r.result}else if(p.text==="_"){if(s){throw new l("Double subscript",this.lexer,h)}r=this.handleSupSubscript(p.position,t,p.text,"subscript");h=r.position;s=r.result}else if(p.text==="'"){var o=new n("textord","\\prime",t);var d=[o];h=p.position;while((p=this.lexer.lex(h,t)).text==="'"){d.push(o);h=p.position}a=new n("ordgroup",d,t)}else{break}}if(a||s){return new c(new n("supsub",{base:i&&i.result,sup:a,sub:s},t),h)}else{return i}};var g=["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];var u=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];p.prototype.parseImplicitGroup=function(e,t){var i=this.parseSymbol(e,t);if(!i||!i.result){return this.parseFunction(e,t)}var h=i.result.result;var a;if(h==="\\left"){var s=this.parseFunction(e,t);a=this.parseExpression(s.position,t,false,"}");var p=this.parseSymbol(a.position,t);if(p&&p.result.result==="\\right"){var o=this.parseFunction(a.position,t);return new c(new n("leftright",{body:a.result,left:s.result.value.value,right:o.result.value.value},t),o.position)}else{throw new l("Missing \\right",this.lexer,a.position)}}else if(h==="\\right"){return null}else if(r.contains(g,h)){a=this.parseExpression(i.result.position,t,false,"}");return new c(new n("sizing",{size:"size"+(r.indexOf(g,h)+1),value:a.result},t),a.position)}else if(r.contains(u,h)){a=this.parseExpression(i.result.position,t,true,"}");return new c(new n("styling",{style:h.slice(1,h.length-5),value:a.result},t),a.position)}else{return this.parseFunction(e,t)}};p.prototype.parseFunction=function(e,t){var i=this.parseGroup(e,t);if(i){if(i.isFunction){var a=i.result.result;if(t==="text"&&!i.allowedInText){throw new l("Can't use function '"+a+"' in text mode",this.lexer,i.position)}var s=i.result.position;var r;var p=i.numArgs+i.numOptionalArgs;if(p>0){var o=h.getGreediness(a);var d=[a];var g=[s];for(var u=0;u<p;u++){var w=i.argTypes&&i.argTypes[u];var k;if(u<i.numOptionalArgs){if(w){k=this.parseSpecialGroup(s,w,t,true)}else{k=this.parseOptionalGroup(s,t)}if(!k){d.push(null);g.push(s);continue}}else{if(w){k=this.parseSpecialGroup(s,w,t)}else{k=this.parseGroup(s,t)}if(!k){throw new l("Expected group after '"+i.result.result+"'",this.lexer,s)}}var f;if(k.numArgs>0){var m=h.getGreediness(k.result.result);if(m>o){f=this.parseFunction(s,t)}else{throw new l("Got function '"+k.result.result+"' as "+"argument to function '"+i.result.result+"'",this.lexer,k.result.position-1)}}else{f=k.result}d.push(f.result);g.push(f.position);s=f.position}d.push(g);r=h.funcs[a].handler.apply(this,d)}else{r=h.funcs[a].handler.apply(this,[a])}return new c(new n(r.type,r,t),s)}else{return i.result}}else{return null}};p.prototype.parseSpecialGroup=function(e,t,i,h){if(t==="color"||t==="size"){var a=this.lexer.lex(e,i);if(h&&a.text!=="["){return null}this.expect(a,h?"[":"{");var s=this.lexer.lex(a.position,t);var r;if(t==="color"){r=s.text}else{r=s.data}var l=this.lexer.lex(s.position,i);this.expect(l,h?"]":"}");return new o(new c(new n(t,r,i),l.position),false)}else if(t==="text"){var p=this.lexer.lex(e,"whitespace");e=p.position}if(h){return this.parseOptionalGroup(e,t)}else{return this.parseGroup(e,t)}};p.prototype.parseGroup=function(e,t){var i=this.lexer.lex(e,t);if(i.text==="{"){var h=this.parseExpression(i.position,t,false,"}");var a=this.lexer.lex(h.position,t);this.expect(a,"}");return new o(new c(new n("ordgroup",h.result,t),a.position),false)}else{return this.parseSymbol(e,t)}};p.prototype.parseOptionalGroup=function(e,t){var i=this.lexer.lex(e,t);if(i.text==="["){var h=this.parseExpression(i.position,t,false,"]");var a=this.lexer.lex(h.position,t);this.expect(a,"]");return new o(new c(new n("ordgroup",h.result,t),a.position),false)}else{return null}};p.prototype.parseSymbol=function(e,t){var i=this.lexer.lex(e,t);if(h.funcs[i.text]){var a=h.funcs[i.text];var r=a.argTypes;if(r){r=r.slice();for(var l=0;l<r.length;l++){if(r[l]==="original"){r[l]=t}}}return new o(new c(i.text,i.position),true,a.allowedInText,a.numArgs,a.numOptionalArgs,r)}else if(s[t][i.text]){return new o(new c(new n(s[t][i.text].group,i.text,t),i.position),false)}else{return null}};t.exports=p},{"./Lexer":2,"./ParseError":4,"./functions":12,"./symbols":14,"./utils":15}],6:[function(e,t,i){function h(e,t,i,h){this.id=e;this.size=t;this.cramped=h;this.sizeMultiplier=i}h.prototype.sup=function(){return u[w[this.id]]};h.prototype.sub=function(){return u[k[this.id]]};h.prototype.fracNum=function(){return u[f[this.id]]};h.prototype.fracDen=function(){return u[m[this.id]]};h.prototype.cramp=function(){return u[v[this.id]]};h.prototype.cls=function(){return d[this.size]+(this.cramped?" cramped":" uncramped")};h.prototype.reset=function(){return g[this.size]};var a=0;var s=1;var r=2;var l=3;var p=4;var n=5;var c=6;var o=7;var d=["displaystyle textstyle","textstyle","scriptstyle","scriptscriptstyle"];var g=["reset-textstyle","reset-textstyle","reset-scriptstyle","reset-scriptscriptstyle"];var u=[new h(a,0,1,false),new h(s,0,1,true),new h(r,1,1,false),new h(l,1,1,true),new h(p,2,.7,false),new h(n,2,.7,true),new h(c,3,.5,false),new h(o,3,.5,true)];var w=[p,n,p,n,c,o,c,o];var k=[n,n,n,n,o,o,o,o];var f=[r,l,p,n,c,o,c,o];var m=[l,l,n,n,o,o,o,o];var v=[s,s,l,l,n,n,o,o];t.exports={DISPLAY:u[a],TEXT:u[r],SCRIPT:u[p],SCRIPTSCRIPT:u[c]}},{}],7:[function(e,t,i){var h=e("./domTree");var a=e("./fontMetrics");var s=e("./symbols");var r=function(e,t,i,r,l){if(s[i][e]&&s[i][e].replace){e=s[i][e].replace}var p=a.getCharacterMetrics(e,t);var n;if(p){n=new h.symbolNode(e,p.height,p.depth,p.italic,p.skew,l)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+e+"' in style '"+t+"'");n=new h.symbolNode(e,0,0,0,0,l)}if(r){n.style.color=r}return n};var l=function(e,t,i,h){return r(e,"Math-Italic",t,i,h.concat(["mathit"]))};var p=function(e,t,i,h){if(s[t][e].font==="main"){return r(e,"Main-Regular",t,i,h)}else{return r(e,"AMS-Regular",t,i,h.concat(["amsrm"]))}};var n=function(e){var t=0;var i=0;var h=0;if(e.children){for(var a=0;a<e.children.length;a++){if(e.children[a].height>t){t=e.children[a].height}if(e.children[a].depth>i){i=e.children[a].depth}if(e.children[a].maxFontSize>h){h=e.children[a].maxFontSize}}}e.height=t;e.depth=i;e.maxFontSize=h};var c=function(e,t,i){var a=new h.span(e,t);n(a);if(i){a.style.color=i}return a};var o=function(e){var t=new h.documentFragment(e);n(t);return t};var d=function(e,t){var i=c([],[new h.symbolNode("​")]);i.style.fontSize=t/e.style.sizeMultiplier+"em";var a=c(["fontsize-ensurer","reset-"+e.size,"size5"],[i]);return a};var g=function(e,t,i,a){var s;var r;var l;if(t==="individualShift"){var p=e;e=[p[0]];s=-p[0].shift-p[0].elem.depth;r=s;for(l=1;l<p.length;l++){var n=-p[l].shift-r-p[l].elem.depth;var o=n-(p[l-1].elem.height+p[l-1].elem.depth);r=r+n;e.push({type:"kern",size:o});e.push(p[l])}}else if(t==="top"){var g=i;for(l=0;l<e.length;l++){if(e[l].type==="kern"){g-=e[l].size}else{g-=e[l].elem.height+e[l].elem.depth}}s=g}else if(t==="bottom"){s=-i}else if(t==="shift"){s=-e[0].elem.depth-i}else if(t==="firstBaseline"){s=-e[0].elem.depth}else{s=0}var u=0;for(l=0;l<e.length;l++){if(e[l].type==="elem"){u=Math.max(u,e[l].elem.maxFontSize)}}var w=d(a,u);var k=[];r=s;for(l=0;l<e.length;l++){if(e[l].type==="kern"){r+=e[l].size}else{var f=e[l].elem;var m=-f.depth-r;r+=f.height+f.depth;var v=c([],[w,f]);v.height-=m;v.depth+=m;v.style.top=m+"em";k.push(v)}}var y=c(["baseline-fix"],[w,new h.symbolNode("​")]);k.push(y);var x=c(["vlist"],k);x.height=Math.max(r,x.height);x.depth=Math.max(-s,x.depth);return x};t.exports={makeSymbol:r,mathit:l,mathrm:p,makeSpan:c,makeFragment:o,makeVList:g}},{"./domTree":10,"./fontMetrics":11,"./symbols":14}],8:[function(e,t,i){var h=e("./Options");var a=e("./ParseError");var s=e("./Style");var r=e("./buildCommon");var l=e("./delimiter");var p=e("./domTree");var n=e("./fontMetrics");var c=e("./utils");var o=r.makeSpan;var d=function(e,t,i){var h=[];for(var a=0;a<e.length;a++){var s=e[a];h.push(y(s,t,i));i=s}return h};var g={mathord:"mord",textord:"mord",bin:"mbin",rel:"mrel",text:"mord",open:"mopen",close:"mclose",inner:"minner",frac:"minner",spacing:"mord",punct:"mpunct",ordgroup:"mord",op:"mop",katex:"mord",overline:"mord",rule:"mord",leftright:"minner",sqrt:"mord",accent:"mord"};var u=function(e){if(e==null){return g.mathord}else if(e.type==="supsub"){return u(e.value.base)}else if(e.type==="llap"||e.type==="rlap"){return u(e.value)}else if(e.type==="color"){return u(e.value.value)}else if(e.type==="sizing"){return u(e.value.value)}else if(e.type==="styling"){return u(e.value.value)}else if(e.type==="delimsizing"){return g[e.value.delimType]}else{return g[e.type]}};var w=function(e,t){if(!e){return false}else if(e.type==="op"){return e.value.limits&&t.style.size===s.DISPLAY.size}else if(e.type==="accent"){return f(e.value.base)}else{return null}};var k=function(e){if(!e){return false}else if(e.type==="ordgroup"){if(e.value.length===1){return k(e.value[0])}else{return e}}else if(e.type==="color"){if(e.value.value.length===1){return k(e.value.value[0])}else{return e}}else{return e}};var f=function(e){var t=k(e);return t.type==="mathord"||t.type==="textord"||t.type==="bin"||t.type==="rel"||t.type==="inner"||t.type==="open"||t.type==="close"||t.type==="punct"};var m={mathord:function(e,t,i){return r.mathit(e.value,e.mode,t.getColor(),["mord"])},textord:function(e,t,i){return r.mathrm(e.value,e.mode,t.getColor(),["mord"])},bin:function(e,t,i){var h="mbin";var a=i;while(a&&a.type=="color"){var s=a.value.value;a=s[s.length-1]}if(!i||c.contains(["mbin","mopen","mrel","mop","mpunct"],u(a))){e.type="textord";h="mord"}return r.mathrm(e.value,e.mode,t.getColor(),[h])},rel:function(e,t,i){return r.mathrm(e.value,e.mode,t.getColor(),["mrel"])},open:function(e,t,i){return r.mathrm(e.value,e.mode,t.getColor(),["mopen"])},close:function(e,t,i){return r.mathrm(e.value,e.mode,t.getColor(),["mclose"])},inner:function(e,t,i){return r.mathrm(e.value,e.mode,t.getColor(),["minner"])},punct:function(e,t,i){return r.mathrm(e.value,e.mode,t.getColor(),["mpunct"])},ordgroup:function(e,t,i){return o(["mord",t.style.cls()],d(e.value,t.reset()))},text:function(e,t,i){return o(["text","mord",t.style.cls()],d(e.value.body,t.reset()))},color:function(e,t,i){var h=d(e.value.value,t.withColor(e.value.color),i);return new r.makeFragment(h)},supsub:function(e,t,i){if(w(e.value.base,t)){return m[e.value.base.type](e,t,i)}var h=y(e.value.base,t.reset());var a,l,c,d;if(e.value.sup){c=y(e.value.sup,t.withStyle(t.style.sup()));a=o([t.style.reset(),t.style.sup().cls()],[c])}if(e.value.sub){d=y(e.value.sub,t.withStyle(t.style.sub()));l=o([t.style.reset(),t.style.sub().cls()],[d])}var g,k;if(f(e.value.base)){g=0;k=0}else{g=h.height-n.metrics.supDrop;k=h.depth+n.metrics.subDrop}var v;if(t.style===s.DISPLAY){v=n.metrics.sup1}else if(t.style.cramped){v=n.metrics.sup3}else{v=n.metrics.sup2}var x=s.TEXT.sizeMultiplier*t.style.sizeMultiplier;var b=.5/n.metrics.ptPerEm/x+"em";var _;if(!e.value.sup){k=Math.max(k,n.metrics.sub1,d.height-.8*n.metrics.xHeight);_=r.makeVList([{type:"elem",elem:l}],"shift",k,t);_.children[0].style.marginRight=b;if(h instanceof p.symbolNode){_.children[0].style.marginLeft=-h.italic+"em"}}else if(!e.value.sub){g=Math.max(g,v,c.depth+.25*n.metrics.xHeight);_=r.makeVList([{type:"elem",elem:a}],"shift",-g,t);_.children[0].style.marginRight=b}else{g=Math.max(g,v,c.depth+.25*n.metrics.xHeight);k=Math.max(k,n.metrics.sub2);var z=n.metrics.defaultRuleThickness;if(g-c.depth-(d.height-k)<4*z){k=4*z-(g-c.depth)+d.height;var S=.8*n.metrics.xHeight-(g-c.depth);if(S>0){g+=S;k-=S}}_=r.makeVList([{type:"elem",elem:l,shift:k},{type:"elem",elem:a,shift:-g}],"individualShift",null,t);if(h instanceof p.symbolNode){_.children[0].style.marginLeft=-h.italic+"em"}_.children[0].style.marginRight=b;_.children[1].style.marginRight=b}return o([u(e.value.base)],[h,_])},genfrac:function(e,t,i){var h=t.style;if(e.value.size==="display"){h=s.DISPLAY}else if(e.value.size==="text"){h=s.TEXT}var a=h.fracNum();var p=h.fracDen();var c=y(e.value.numer,t.withStyle(a));var d=o([h.reset(),a.cls()],[c]);var g=y(e.value.denom,t.withStyle(p));var u=o([h.reset(),p.cls()],[g]);var w;if(e.value.hasBarLine){w=n.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{w=0}var k;var f;var m;if(h.size===s.DISPLAY.size){k=n.metrics.num1;if(w>0){f=3*w}else{f=7*n.metrics.defaultRuleThickness}m=n.metrics.denom1}else{if(w>0){k=n.metrics.num2;f=w}else{k=n.metrics.num3;f=3*n.metrics.defaultRuleThickness}m=n.metrics.denom2}var v;if(w===0){var x=k-c.depth-(g.height-m);if(x<f){k+=.5*(f-x);m+=.5*(f-x)}v=r.makeVList([{type:"elem",elem:u,shift:m},{type:"elem",elem:d,shift:-k}],"individualShift",null,t)}else{var b=n.metrics.axisHeight;if(k-c.depth-(b+.5*w)<f){k+=f-(k-c.depth-(b+.5*w))}if(b-.5*w-(g.height-m)<f){m+=f-(b-.5*w-(g.height-m))}var _=o([t.style.reset(),s.TEXT.cls(),"frac-line"]);_.height=w;var z=-(b-.5*w);v=r.makeVList([{type:"elem",elem:u,shift:m},{type:"elem",elem:_,shift:z},{type:"elem",elem:d,shift:-k}],"individualShift",null,t)}v.height*=h.sizeMultiplier/t.style.sizeMultiplier;v.depth*=h.sizeMultiplier/t.style.sizeMultiplier;var S=[o(["mfrac"],[v])];var T;if(h.size===s.DISPLAY.size){T=n.metrics.delim1}else{T=n.metrics.getDelim2(h)}if(e.value.leftDelim!=null){S.unshift(l.customSizedDelim(e.value.leftDelim,T,true,t.withStyle(h),e.mode))}if(e.value.rightDelim!=null){S.push(l.customSizedDelim(e.value.rightDelim,T,true,t.withStyle(h),e.mode))}return o(["minner",t.style.reset(),h.cls()],S,t.getColor())},spacing:function(e,t,i){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){return o(["mord","mspace"],[r.mathrm(e.value,e.mode)])}else{var h={"\\qquad":"qquad","\\quad":"quad","\\enspace":"enspace","\\;":"thickspace","\\:":"mediumspace","\\,":"thinspace","\\!":"negativethinspace"};return o(["mord","mspace",h[e.value]])}},llap:function(e,t,i){var h=o(["inner"],[y(e.value.body,t.reset())]);var a=o(["fix"],[]);return o(["llap",t.style.cls()],[h,a])},rlap:function(e,t,i){var h=o(["inner"],[y(e.value.body,t.reset())]);var a=o(["fix"],[]);return o(["rlap",t.style.cls()],[h,a])},op:function(e,t,i){var h;var a;var l=false;if(e.type==="supsub"){h=e.value.sup;a=e.value.sub;e=e.value.base;l=true}var p=["\\smallint"];var d=false;if(t.style.size===s.DISPLAY.size&&e.value.symbol&&!c.contains(p,e.value.body)){d=true}var g;var u=0;var w=0;if(e.value.symbol){var k=d?"Size2-Regular":"Size1-Regular";g=r.makeSymbol(e.value.body,k,"math",t.getColor(),["op-symbol",d?"large-op":"small-op","mop"]);u=(g.height-g.depth)/2-n.metrics.axisHeight*t.style.sizeMultiplier;w=g.italic}else{var f=[];for(var m=1;m<e.value.body.length;m++){f.push(r.mathrm(e.value.body[m],e.mode))}g=o(["mop"],f,t.getColor())}if(l){g=o([],[g]);var v,x,b,_;if(h){var z=y(h,t.withStyle(t.style.sup()));v=o([t.style.reset(),t.style.sup().cls()],[z]);x=Math.max(n.metrics.bigOpSpacing1,n.metrics.bigOpSpacing3-z.depth)}if(a){var S=y(a,t.withStyle(t.style.sub()));b=o([t.style.reset(),t.style.sub().cls()],[S]);_=Math.max(n.metrics.bigOpSpacing2,n.metrics.bigOpSpacing4-S.height)}var T,C,M;if(!h){C=g.height-u;T=r.makeVList([{type:"kern",size:n.metrics.bigOpSpacing5},{type:"elem",elem:b},{type:"kern",size:_},{type:"elem",elem:g}],"top",C,t);T.children[0].style.marginLeft=-w+"em"}else if(!a){M=g.depth+u;T=r.makeVList([{type:"elem",elem:g},{type:"kern",size:x},{type:"elem",elem:v},{type:"kern",size:n.metrics.bigOpSpacing5}],"bottom",M,t);T.children[1].style.marginLeft=w+"em"}else if(!h&&!a){return g}else{M=n.metrics.bigOpSpacing5+b.height+b.depth+_+g.depth+u;T=r.makeVList([{type:"kern",size:n.metrics.bigOpSpacing5},{type:"elem",elem:b},{type:"kern",size:_},{type:"elem",elem:g},{type:"kern",size:x},{type:"elem",elem:v},{type:"kern",size:n.metrics.bigOpSpacing5}],"bottom",M,t);T.children[0].style.marginLeft=-w+"em";T.children[2].style.marginLeft=w+"em"}return o(["mop","op-limits"],[T])}else{if(e.value.symbol){g.style.top=u+"em"}return g}},katex:function(e,t,i){var h=o(["k"],[r.mathrm("K",e.mode)]);var a=o(["a"],[r.mathrm("A",e.mode)]);a.height=(a.height+.2)*.75;a.depth=(a.height-.2)*.75;var s=o(["t"],[r.mathrm("T",e.mode)]);var l=o(["e"],[r.mathrm("E",e.mode)]);l.height=l.height-.2155;l.depth=l.depth+.2155;var p=o(["x"],[r.mathrm("X",e.mode)]);return o(["katex-logo"],[h,a,s,l,p],t.getColor())},overline:function(e,t,i){var h=y(e.value.body,t.withStyle(t.style.cramp()));var a=n.metrics.defaultRuleThickness/t.style.sizeMultiplier;var l=o([t.style.reset(),s.TEXT.cls(),"overline-line"]);l.height=a;l.maxFontSize=1;var p=r.makeVList([{type:"elem",elem:h},{type:"kern",size:3*a},{type:"elem",elem:l},{type:"kern",size:a}],"firstBaseline",null,t);return o(["overline","mord"],[p],t.getColor())},sqrt:function(e,t,i){var h=y(e.value.body,t.withStyle(t.style.cramp()));var a=n.metrics.defaultRuleThickness/t.style.sizeMultiplier;var p=o([t.style.reset(),s.TEXT.cls(),"sqrt-line"],[],t.getColor());p.height=a;p.maxFontSize=1;var c=a;if(t.style.id<s.TEXT.id){c=n.metrics.xHeight}var d=a+c/4;var g=(h.height+h.depth)*t.style.sizeMultiplier;var u=g+d+a;var w=o(["sqrt-sign"],[l.customSizedDelim("\\surd",u,false,t,e.mode)],t.getColor());var k=w.height+w.depth-a;if(k>h.height+h.depth+d){d=(d+k-h.height-h.depth)/2}var f=-(h.height+d+a)+w.height;w.style.top=f+"em";w.height-=f;w.depth+=f;var m;if(h.height===0&&h.depth===0){m=o()}else{m=r.makeVList([{type:"elem",elem:h},{type:"kern",size:d},{type:"elem",elem:p},{type:"kern",size:a}],"firstBaseline",null,t)}return o(["sqrt","mord"],[w,m])},sizing:function(e,t,i){var h=d(e.value.value,t.withSize(e.value.size),i);var a=o(["mord"],[o(["sizing","reset-"+t.size,e.value.size,t.style.cls()],h)]);var s=v[e.value.size];a.maxFontSize=s*t.style.sizeMultiplier;return a},styling:function(e,t,i){var h={display:s.DISPLAY,text:s.TEXT,script:s.SCRIPT,scriptscript:s.SCRIPTSCRIPT};var a=h[e.value.style];var r=d(e.value.value,t.withStyle(a),i);return o([t.style.reset(),a.cls()],r)},delimsizing:function(e,t,i){var h=e.value.value;if(h==="."){return o([g[e.value.delimType]])}return o([g[e.value.delimType]],[l.sizedDelim(h,e.value.size,t,e.mode)])},leftright:function(e,t,i){var h=d(e.value.body,t.reset());var a=0;var s=0;for(var r=0;r<h.length;r++){a=Math.max(h[r].height,a);s=Math.max(h[r].depth,s)}a*=t.style.sizeMultiplier;s*=t.style.sizeMultiplier;var p;if(e.value.left==="."){p=o(["nulldelimiter"])}else{p=l.leftRightDelim(e.value.left,a,s,t,e.mode)}h.unshift(p);var n;if(e.value.right==="."){n=o(["nulldelimiter"])}else{n=l.leftRightDelim(e.value.right,a,s,t,e.mode)}h.push(n);return o(["minner",t.style.cls()],h,t.getColor())},rule:function(e,t,i){var h=o(["mord","rule"],[],t.getColor());var a=0;if(e.value.shift){a=e.value.shift.number;if(e.value.shift.unit==="ex"){a*=n.metrics.xHeight}}var s=e.value.width.number;if(e.value.width.unit==="ex"){s*=n.metrics.xHeight}var r=e.value.height.number;if(e.value.height.unit==="ex"){r*=n.metrics.xHeight}a/=t.style.sizeMultiplier;s/=t.style.sizeMultiplier;r/=t.style.sizeMultiplier;h.style.borderRightWidth=s+"em";h.style.borderTopWidth=r+"em";h.style.bottom=a+"em";h.width=s;h.height=r+a;h.depth=-a;return h},accent:function(e,t,i){var h=e.value.base;var a;if(e.type==="supsub"){var s=e;e=s.value.base;h=e.value.base;s.value.base=h;a=y(s,t.reset(),i)}var l=y(h,t.withStyle(t.style.cramp()));var p;if(f(h)){var c=k(h);var d=y(c,t.withStyle(t.style.cramp()));p=d.skew}else{p=0}var g=Math.min(l.height,n.metrics.xHeight);var u=r.makeSymbol(e.value.accent,"Main-Regular","math",t.getColor());u.italic=0;var w=e.value.accent==="\\vec"?"accent-vec":null;var m=o(["accent-body",w],[o([],[u])]);m=r.makeVList([{type:"elem",elem:l},{type:"kern",size:-g},{type:"elem",elem:m}],"firstBaseline",null,t);m.children[1].style.marginLeft=2*p+"em";var v=o(["mord","accent"],[m]);if(a){a.children[0]=v;a.height=Math.max(v.height,a.height);a.classes[0]="mord";return a}else{return v}}};var v={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var y=function(e,t,i){if(!e){return o()}if(m[e.type]){var h=m[e.type](e,t,i);var s;if(t.style!==t.parentStyle){s=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;h.height*=s;h.depth*=s}if(t.size!==t.parentSize){s=v[t.size]/v[t.parentSize];h.height*=s;h.depth*=s}return h}else{throw new a("Got group of unknown type: '"+e.type+"'")}};var x=function(e){var t=new h(s.TEXT,"size5","");var i=d(e,t);var a=o(["base",t.style.cls()],i);var r=o(["strut"]);var l=o(["strut","bottom"]);r.style.height=a.height+"em";l.style.height=a.height+a.depth+"em";l.style.verticalAlign=-a.depth+"em";var p=o(["katex"],[o(["katex-inner"],[r,l,a])]);return p};t.exports=x},{"./Options":3,"./ParseError":4,"./Style":6,"./buildCommon":7,"./delimiter":9,"./domTree":10,"./fontMetrics":11,"./utils":15}],9:[function(e,t,i){var h=e("./ParseError");var a=e("./Style");var s=e("./buildCommon");var r=e("./fontMetrics");var l=e("./symbols");var p=e("./utils");var n=s.makeSpan;var c=function(e,t){if(l.math[e]&&l.math[e].replace){return r.getCharacterMetrics(l.math[e].replace,t)}else{return r.getCharacterMetrics(e,t)}};var o=function(e,t,i){return s.makeSymbol(e,"Size"+t+"-Regular",i)};var d=function(e,t,i){var h=n(["style-wrap",i.style.reset(),t.cls()],[e]);var a=t.sizeMultiplier/i.style.sizeMultiplier;h.height*=a;h.depth*=a;h.maxFontSize=t.sizeMultiplier;return h};var g=function(e,t,i,h,a){var l=s.makeSymbol(e,"Main-Regular",a);var p=d(l,t,h);if(i){var n=(1-h.style.sizeMultiplier/t.sizeMultiplier)*r.metrics.axisHeight;p.style.top=n+"em";p.height-=n;p.depth+=n}return p};var u=function(e,t,i,h,s){var l=o(e,t,s);var p=d(n(["delimsizing","size"+t],[l],h.getColor()),a.TEXT,h);if(i){var c=(1-h.style.sizeMultiplier)*r.metrics.axisHeight;p.style.top=c+"em";p.height-=c;p.depth+=c}return p};var w=function(e,t,i){var h;if(t==="Size1-Regular"){h="delim-size1"}else if(t==="Size4-Regular"){h="delim-size4"}var a=n(["delimsizinginner",h],[n([],[s.makeSymbol(e,t,i)])]);return{type:"elem",elem:a}};var k=function(e,t,i,h,l){var p,o,g,u;p=g=u=e;o=null;var k="Size1-Regular";if(e==="\\uparrow"){g=u="⏐"}else if(e==="\\Uparrow"){g=u="‖"}else if(e==="\\downarrow"){p=g="⏐"}else if(e==="\\Downarrow"){p=g="‖"}else if(e==="\\updownarrow"){p="\\uparrow";g="⏐";u="\\downarrow"}else if(e==="\\Updownarrow"){p="\\Uparrow";g="‖";u="\\Downarrow"}else if(e==="["||e==="\\lbrack"){p="⎡";g="⎢";u="⎣";k="Size4-Regular"}else if(e==="]"||e==="\\rbrack"){p="⎤";g="⎥";u="⎦";k="Size4-Regular"}else if(e==="\\lfloor"){g=p="⎢";u="⎣";k="Size4-Regular"}else if(e==="\\lceil"){p="⎡";g=u="⎢";k="Size4-Regular"}else if(e==="\\rfloor"){g=p="⎥";u="⎦";k="Size4-Regular"}else if(e==="\\rceil"){p="⎤";g=u="⎥";k="Size4-Regular"}else if(e==="("){p="⎛";g="⎜";u="⎝";k="Size4-Regular"}else if(e===")"){p="⎞";g="⎟";u="⎠";k="Size4-Regular"}else if(e==="\\{"||e==="\\lbrace"){p="⎧";o="⎨";u="⎩";g="⎪";k="Size4-Regular"}else if(e==="\\}"||e==="\\rbrace"){p="⎫";o="⎬";u="⎭";g="⎪";k="Size4-Regular"}else if(e==="\\surd"){p="";u="⎷";g="";k="Size4-Regular"}var f=c(p,k);var m=f.height+f.depth;var v=c(g,k);var y=v.height+v.depth;var x=c(u,k);var b=x.height+x.depth;var _,z;if(o!==null){_=c(o,k);z=_.height+_.depth}var S=m+b;if(o!==null){S+=z}while(S<t){S+=y;if(o!==null){S+=y}}var T=r.metrics.axisHeight;if(i){T*=h.style.sizeMultiplier}var C=S/2-T;var M=[];M.push(w(u,k,l));var L;if(o===null){var E=S-m-b;var A=Math.ceil(E/y);for(L=0;L<A;L++){M.push(w(g,k,l))}}else{var P=S/2-m-z/2;var R=Math.ceil(P/y);var O=S/2-m-z/2;var I=Math.ceil(O/y);for(L=0;L<R;L++){M.push(w(g,k,l))}M.push(w(o,k,l));for(L=0;L<I;L++){M.push(w(g,k,l))}}M.push(w(p,k,l));var F=s.makeVList(M,"bottom",C,h);return d(n(["delimsizing","mult"],[F],h.getColor()),a.TEXT,h)};var f=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var m=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert"];var v=["<",">","\\langle","\\rangle","/","\\backslash"];var y=[0,1.2,1.8,2.4,3];var x=function(e,t,i,a){if(e==="<"){e="\\langle"}else if(e===">"){e="\\rangle"}if(p.contains(f,e)||p.contains(v,e)){return u(e,t,false,i,a)}else if(p.contains(m,e)){return k(e,y[t],false,i,a)}else{throw new h("Illegal delimiter: '"+e+"'")}};var b=[{type:"small",style:a.SCRIPTSCRIPT},{type:"small",style:a.SCRIPT},{type:"small",style:a.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var _=[{type:"small",style:a.SCRIPTSCRIPT},{type:"small",style:a.SCRIPT},{type:"small",style:a.TEXT},{type:"stack"}];var z=[{type:"small",style:a.SCRIPTSCRIPT},{type:"small",style:a.SCRIPT},{type:"small",style:a.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var S=function(e){if(e.type==="small"){return"Main-Regular"}else if(e.type==="large"){return"Size"+e.size+"-Regular"}else if(e.type==="stack"){return"Size4-Regular"}};var T=function(e,t,i,h){var a=Math.min(2,3-h.style.size);for(var s=a;s<i.length;s++){if(i[s].type==="stack"){break}var r=c(e,S(i[s]));var l=r.height+r.depth;if(i[s].type==="small"){l*=i[s].style.sizeMultiplier}if(l>t){return i[s]}}return i[i.length-1]};var C=function(e,t,i,h,a){if(e==="<"){e="\\langle"}else if(e===">"){e="\\rangle"}var s;if(p.contains(v,e)){s=b
+}else if(p.contains(f,e)){s=z}else{s=_}var r=T(e,t,s,h);if(r.type==="small"){return g(e,r.style,i,h,a)}else if(r.type==="large"){return u(e,r.size,i,h,a)}else if(r.type==="stack"){return k(e,t,i,h,a)}};var M=function(e,t,i,h,a){var s=r.metrics.axisHeight*h.style.sizeMultiplier;var l=901;var p=5/r.metrics.ptPerEm;var n=Math.max(t-s,i+s);var c=Math.max(n/500*l,2*n-p);return C(e,c,true,h,a)};t.exports={sizedDelim:x,customSizedDelim:C,leftRightDelim:M}},{"./ParseError":4,"./Style":6,"./buildCommon":7,"./fontMetrics":11,"./symbols":14,"./utils":15}],10:[function(e,t,i){var h=e("./utils");var a=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(" ")};function s(e,t,i,h,a,s){this.classes=e||[];this.children=t||[];this.height=i||0;this.depth=h||0;this.maxFontSize=a||0;this.style=s||{}}s.prototype.toNode=function(){var e=document.createElement("span");e.className=a(this.classes);for(var t in this.style){if(this.style.hasOwnProperty(t)){e.style[t]=this.style[t]}}for(var i=0;i<this.children.length;i++){e.appendChild(this.children[i].toNode())}return e};s.prototype.toMarkup=function(){var e="<span";if(this.classes.length){e+=' class="';e+=h.escape(a(this.classes));e+='"'}var t="";for(var i in this.style){if(this.style.hasOwnProperty(i)){t+=h.hyphenate(i)+":"+this.style[i]+";"}}if(t){e+=' style="'+h.escape(t)+'"'}e+=">";for(var s=0;s<this.children.length;s++){e+=this.children[s].toMarkup()}e+="</span>";return e};function r(e,t,i,h){this.children=e||[];this.height=t||0;this.depth=i||0;this.maxFontSize=h||0}r.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};r.prototype.toMarkup=function(){var e="";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};function l(e,t,i,h,a,s,r){this.value=e||"";this.height=t||0;this.depth=i||0;this.italic=h||0;this.skew=a||0;this.classes=s||[];this.style=r||{};this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement("span");t.style.marginRight=this.italic+"em"}if(this.classes.length>0){t=t||document.createElement("span");t.className=a(this.classes)}for(var i in this.style){if(this.style.hasOwnProperty(i)){t=t||document.createElement("span");t.style[i]=this.style[i]}}if(t){t.appendChild(e);return t}else{return e}};l.prototype.toMarkup=function(){var e=false;var t="<span";if(this.classes.length){e=true;t+=' class="';t+=h.escape(a(this.classes));t+='"'}var i="";if(this.italic>0){i+="margin-right:"+this.italic+"em;"}for(var s in this.style){if(this.style.hasOwnProperty(s)){i+=h.hyphenate(s)+":"+this.style[s]+";"}}if(i){e=true;t+=' style="'+h.escape(i)+'"'}var r=h.escape(this.value);if(e){t+=">";t+=r;t+="</span>";return t}else{return r}};t.exports={span:s,documentFragment:r,symbolNode:l}},{"./utils":15}],11:[function(e,t,i){var h=e("./Style");var a=.025;var s=0;var r=0;var l=0;var p=.431;var n=1;var c=0;var o=.677;var d=.394;var g=.444;var u=.686;var w=.345;var k=.413;var f=.363;var m=.289;var v=.15;var y=.247;var x=.386;var b=.05;var _=2.39;var z=1.01;var S=.81;var T=.71;var C=.25;var M=0;var L=0;var E=0;var A=0;var P=.431;var R=1;var O=0;var I=.04;var F=.111;var D=.166;var B=.2;var q=.6;var N=.1;var G=10;var H={xHeight:p,quad:n,num1:o,num2:d,num3:g,denom1:u,denom2:w,sup1:k,sup2:f,sup3:m,sub1:v,sub2:y,supDrop:x,subDrop:b,axisHeight:C,defaultRuleThickness:I,bigOpSpacing1:F,bigOpSpacing2:D,bigOpSpacing3:B,bigOpSpacing4:q,bigOpSpacing5:N,ptPerEm:G,delim1:_,getDelim2:function(e){if(e.size===h.TEXT.size){return z}else if(e.size===h.SCRIPT.size){return S}else if(e.size===h.SCRIPTSCRIPT.size){return T}throw new Error("Unexpected style size: "+e.size)}};var X={"AMS-Regular":{10003:{depth:0,height:.69224,italic:0,skew:0},10016:{depth:0,height:.69224,italic:0,skew:0},1008:{depth:0,height:.43056,italic:.04028,skew:0},107:{depth:0,height:.68889,italic:0,skew:0},10731:{depth:.11111,height:.69224,italic:0,skew:0},10846:{depth:.19444,height:.75583,italic:0,skew:0},10877:{depth:.13667,height:.63667,italic:0,skew:0},10878:{depth:.13667,height:.63667,italic:0,skew:0},10885:{depth:.25583,height:.75583,italic:0,skew:0},10886:{depth:.25583,height:.75583,italic:0,skew:0},10887:{depth:.13597,height:.63597,italic:0,skew:0},10888:{depth:.13597,height:.63597,italic:0,skew:0},10889:{depth:.26167,height:.75726,italic:0,skew:0},10890:{depth:.26167,height:.75726,italic:0,skew:0},10891:{depth:.48256,height:.98256,italic:0,skew:0},10892:{depth:.48256,height:.98256,italic:0,skew:0},10901:{depth:.13667,height:.63667,italic:0,skew:0},10902:{depth:.13667,height:.63667,italic:0,skew:0},10933:{depth:.25142,height:.75726,italic:0,skew:0},10934:{depth:.25142,height:.75726,italic:0,skew:0},10935:{depth:.26167,height:.75726,italic:0,skew:0},10936:{depth:.26167,height:.75726,italic:0,skew:0},10937:{depth:.26167,height:.75726,italic:0,skew:0},10938:{depth:.26167,height:.75726,italic:0,skew:0},10949:{depth:.25583,height:.75583,italic:0,skew:0},10950:{depth:.25583,height:.75583,italic:0,skew:0},10955:{depth:.28481,height:.79383,italic:0,skew:0},10956:{depth:.28481,height:.79383,italic:0,skew:0},165:{depth:0,height:.675,italic:.025,skew:0},174:{depth:.15559,height:.69224,italic:0,skew:0},240:{depth:0,height:.68889,italic:0,skew:0},295:{depth:0,height:.68889,italic:0,skew:0},57350:{depth:.08167,height:.58167,italic:0,skew:0},57351:{depth:.08167,height:.58167,italic:0,skew:0},57352:{depth:.08167,height:.58167,italic:0,skew:0},57353:{depth:0,height:.43056,italic:.04028,skew:0},57356:{depth:.25142,height:.75726,italic:0,skew:0},57357:{depth:.25142,height:.75726,italic:0,skew:0},57358:{depth:.41951,height:.91951,italic:0,skew:0},57359:{depth:.30274,height:.79383,italic:0,skew:0},57360:{depth:.30274,height:.79383,italic:0,skew:0},57361:{depth:.41951,height:.91951,italic:0,skew:0},57366:{depth:.25142,height:.75726,italic:0,skew:0},57367:{depth:.25142,height:.75726,italic:0,skew:0},57368:{depth:.25142,height:.75726,italic:0,skew:0},57369:{depth:.25142,height:.75726,italic:0,skew:0},57370:{depth:.13597,height:.63597,italic:0,skew:0},57371:{depth:.13597,height:.63597,italic:0,skew:0},65:{depth:0,height:.68889,italic:0,skew:0},66:{depth:0,height:.68889,italic:0,skew:0},67:{depth:0,height:.68889,italic:0,skew:0},68:{depth:0,height:.68889,italic:0,skew:0},69:{depth:0,height:.68889,italic:0,skew:0},70:{depth:0,height:.68889,italic:0,skew:0},71:{depth:0,height:.68889,italic:0,skew:0},710:{depth:0,height:.825,italic:0,skew:0},72:{depth:0,height:.68889,italic:0,skew:0},73:{depth:0,height:.68889,italic:0,skew:0},732:{depth:0,height:.9,italic:0,skew:0},74:{depth:.16667,height:.68889,italic:0,skew:0},75:{depth:0,height:.68889,italic:0,skew:0},76:{depth:0,height:.68889,italic:0,skew:0},77:{depth:0,height:.68889,italic:0,skew:0},770:{depth:0,height:.825,italic:0,skew:0},771:{depth:0,height:.9,italic:0,skew:0},78:{depth:0,height:.68889,italic:0,skew:0},79:{depth:.16667,height:.68889,italic:0,skew:0},80:{depth:0,height:.68889,italic:0,skew:0},81:{depth:.16667,height:.68889,italic:0,skew:0},82:{depth:0,height:.68889,italic:0,skew:0},8245:{depth:0,height:.54986,italic:0,skew:0},83:{depth:0,height:.68889,italic:0,skew:0},84:{depth:0,height:.68889,italic:0,skew:0},8463:{depth:0,height:.68889,italic:0,skew:0},8487:{depth:0,height:.68889,italic:0,skew:0},8498:{depth:0,height:.68889,italic:0,skew:0},85:{depth:0,height:.68889,italic:0,skew:0},8502:{depth:0,height:.68889,italic:0,skew:0},8503:{depth:0,height:.68889,italic:0,skew:0},8504:{depth:0,height:.68889,italic:0,skew:0},8513:{depth:0,height:.68889,italic:0,skew:0},8592:{depth:-.03598,height:.46402,italic:0,skew:0},8594:{depth:-.03598,height:.46402,italic:0,skew:0},86:{depth:0,height:.68889,italic:0,skew:0},8602:{depth:-.13313,height:.36687,italic:0,skew:0},8603:{depth:-.13313,height:.36687,italic:0,skew:0},8606:{depth:.01354,height:.52239,italic:0,skew:0},8608:{depth:.01354,height:.52239,italic:0,skew:0},8610:{depth:.01354,height:.52239,italic:0,skew:0},8611:{depth:.01354,height:.52239,italic:0,skew:0},8619:{depth:0,height:.54986,italic:0,skew:0},8620:{depth:0,height:.54986,italic:0,skew:0},8621:{depth:-.13313,height:.37788,italic:0,skew:0},8622:{depth:-.13313,height:.36687,italic:0,skew:0},8624:{depth:0,height:.69224,italic:0,skew:0},8625:{depth:0,height:.69224,italic:0,skew:0},8630:{depth:0,height:.43056,italic:0,skew:0},8631:{depth:0,height:.43056,italic:0,skew:0},8634:{depth:.08198,height:.58198,italic:0,skew:0},8635:{depth:.08198,height:.58198,italic:0,skew:0},8638:{depth:.19444,height:.69224,italic:0,skew:0},8639:{depth:.19444,height:.69224,italic:0,skew:0},8642:{depth:.19444,height:.69224,italic:0,skew:0},8643:{depth:.19444,height:.69224,italic:0,skew:0},8644:{depth:.1808,height:.675,italic:0,skew:0},8646:{depth:.1808,height:.675,italic:0,skew:0},8647:{depth:.1808,height:.675,italic:0,skew:0},8648:{depth:.19444,height:.69224,italic:0,skew:0},8649:{depth:.1808,height:.675,italic:0,skew:0},8650:{depth:.19444,height:.69224,italic:0,skew:0},8651:{depth:.01354,height:.52239,italic:0,skew:0},8652:{depth:.01354,height:.52239,italic:0,skew:0},8653:{depth:-.13313,height:.36687,italic:0,skew:0},8654:{depth:-.13313,height:.36687,italic:0,skew:0},8655:{depth:-.13313,height:.36687,italic:0,skew:0},8666:{depth:.13667,height:.63667,italic:0,skew:0},8667:{depth:.13667,height:.63667,italic:0,skew:0},8669:{depth:-.13313,height:.37788,italic:0,skew:0},87:{depth:0,height:.68889,italic:0,skew:0},8705:{depth:0,height:.825,italic:0,skew:0},8708:{depth:0,height:.68889,italic:0,skew:0},8709:{depth:.08167,height:.58167,italic:0,skew:0},8717:{depth:0,height:.43056,italic:0,skew:0},8722:{depth:-.03598,height:.46402,italic:0,skew:0},8724:{depth:.08198,height:.69224,italic:0,skew:0},8726:{depth:.08167,height:.58167,italic:0,skew:0},8733:{depth:0,height:.69224,italic:0,skew:0},8736:{depth:0,height:.69224,italic:0,skew:0},8737:{depth:0,height:.69224,italic:0,skew:0},8738:{depth:.03517,height:.52239,italic:0,skew:0},8739:{depth:.08167,height:.58167,italic:0,skew:0},8740:{depth:.25142,height:.74111,italic:0,skew:0},8741:{depth:.08167,height:.58167,italic:0,skew:0},8742:{depth:.25142,height:.74111,italic:0,skew:0},8756:{depth:0,height:.69224,italic:0,skew:0},8757:{depth:0,height:.69224,italic:0,skew:0},8764:{depth:-.13313,height:.36687,italic:0,skew:0},8765:{depth:-.13313,height:.37788,italic:0,skew:0},8769:{depth:-.13313,height:.36687,italic:0,skew:0},8770:{depth:-.03625,height:.46375,italic:0,skew:0},8774:{depth:.30274,height:.79383,italic:0,skew:0},8776:{depth:-.01688,height:.48312,italic:0,skew:0},8778:{depth:.08167,height:.58167,italic:0,skew:0},8782:{depth:.06062,height:.54986,italic:0,skew:0},8783:{depth:.06062,height:.54986,italic:0,skew:0},8785:{depth:.08198,height:.58198,italic:0,skew:0},8786:{depth:.08198,height:.58198,italic:0,skew:0},8787:{depth:.08198,height:.58198,italic:0,skew:0},8790:{depth:0,height:.69224,italic:0,skew:0},8791:{depth:.22958,height:.72958,italic:0,skew:0},8796:{depth:.08198,height:.91667,italic:0,skew:0},88:{depth:0,height:.68889,italic:0,skew:0},8806:{depth:.25583,height:.75583,italic:0,skew:0},8807:{depth:.25583,height:.75583,italic:0,skew:0},8808:{depth:.25142,height:.75726,italic:0,skew:0},8809:{depth:.25142,height:.75726,italic:0,skew:0},8812:{depth:.25583,height:.75583,italic:0,skew:0},8814:{depth:.20576,height:.70576,italic:0,skew:0},8815:{depth:.20576,height:.70576,italic:0,skew:0},8816:{depth:.30274,height:.79383,italic:0,skew:0},8817:{depth:.30274,height:.79383,italic:0,skew:0},8818:{depth:.22958,height:.72958,italic:0,skew:0},8819:{depth:.22958,height:.72958,italic:0,skew:0},8822:{depth:.1808,height:.675,italic:0,skew:0},8823:{depth:.1808,height:.675,italic:0,skew:0},8828:{depth:.13667,height:.63667,italic:0,skew:0},8829:{depth:.13667,height:.63667,italic:0,skew:0},8830:{depth:.22958,height:.72958,italic:0,skew:0},8831:{depth:.22958,height:.72958,italic:0,skew:0},8832:{depth:.20576,height:.70576,italic:0,skew:0},8833:{depth:.20576,height:.70576,italic:0,skew:0},8840:{depth:.30274,height:.79383,italic:0,skew:0},8841:{depth:.30274,height:.79383,italic:0,skew:0},8842:{depth:.13597,height:.63597,italic:0,skew:0},8843:{depth:.13597,height:.63597,italic:0,skew:0},8847:{depth:.03517,height:.54986,italic:0,skew:0},8848:{depth:.03517,height:.54986,italic:0,skew:0},8858:{depth:.08198,height:.58198,italic:0,skew:0},8859:{depth:.08198,height:.58198,italic:0,skew:0},8861:{depth:.08198,height:.58198,italic:0,skew:0},8862:{depth:0,height:.675,italic:0,skew:0},8863:{depth:0,height:.675,italic:0,skew:0},8864:{depth:0,height:.675,italic:0,skew:0},8865:{depth:0,height:.675,italic:0,skew:0},8872:{depth:0,height:.69224,italic:0,skew:0},8873:{depth:0,height:.69224,italic:0,skew:0},8874:{depth:0,height:.69224,italic:0,skew:0},8876:{depth:0,height:.68889,italic:0,skew:0},8877:{depth:0,height:.68889,italic:0,skew:0},8878:{depth:0,height:.68889,italic:0,skew:0},8879:{depth:0,height:.68889,italic:0,skew:0},8882:{depth:.03517,height:.54986,italic:0,skew:0},8883:{depth:.03517,height:.54986,italic:0,skew:0},8884:{depth:.13667,height:.63667,italic:0,skew:0},8885:{depth:.13667,height:.63667,italic:0,skew:0},8888:{depth:0,height:.54986,italic:0,skew:0},8890:{depth:.19444,height:.43056,italic:0,skew:0},8891:{depth:.19444,height:.69224,italic:0,skew:0},8892:{depth:.19444,height:.69224,italic:0,skew:0},89:{depth:0,height:.68889,italic:0,skew:0},8901:{depth:0,height:.54986,italic:0,skew:0},8903:{depth:.08167,height:.58167,italic:0,skew:0},8905:{depth:.08167,height:.58167,italic:0,skew:0},8906:{depth:.08167,height:.58167,italic:0,skew:0},8907:{depth:0,height:.69224,italic:0,skew:0},8908:{depth:0,height:.69224,italic:0,skew:0},8909:{depth:-.03598,height:.46402,italic:0,skew:0},8910:{depth:0,height:.54986,italic:0,skew:0},8911:{depth:0,height:.54986,italic:0,skew:0},8912:{depth:.03517,height:.54986,italic:0,skew:0},8913:{depth:.03517,height:.54986,italic:0,skew:0},8914:{depth:0,height:.54986,italic:0,skew:0},8915:{depth:0,height:.54986,italic:0,skew:0},8916:{depth:0,height:.69224,italic:0,skew:0},8918:{depth:.0391,height:.5391,italic:0,skew:0},8919:{depth:.0391,height:.5391,italic:0,skew:0},8920:{depth:.03517,height:.54986,italic:0,skew:0},8921:{depth:.03517,height:.54986,italic:0,skew:0},8922:{depth:.38569,height:.88569,italic:0,skew:0},8923:{depth:.38569,height:.88569,italic:0,skew:0},8926:{depth:.13667,height:.63667,italic:0,skew:0},8927:{depth:.13667,height:.63667,italic:0,skew:0},8928:{depth:.30274,height:.79383,italic:0,skew:0},8929:{depth:.30274,height:.79383,italic:0,skew:0},8934:{depth:.23222,height:.74111,italic:0,skew:0},8935:{depth:.23222,height:.74111,italic:0,skew:0},8936:{depth:.23222,height:.74111,italic:0,skew:0},8937:{depth:.23222,height:.74111,italic:0,skew:0},8938:{depth:.20576,height:.70576,italic:0,skew:0},8939:{depth:.20576,height:.70576,italic:0,skew:0},8940:{depth:.30274,height:.79383,italic:0,skew:0},8941:{depth:.30274,height:.79383,italic:0,skew:0},8994:{depth:.19444,height:.69224,italic:0,skew:0},8995:{depth:.19444,height:.69224,italic:0,skew:0},90:{depth:0,height:.68889,italic:0,skew:0},9416:{depth:.15559,height:.69224,italic:0,skew:0},9484:{depth:0,height:.69224,italic:0,skew:0},9488:{depth:0,height:.69224,italic:0,skew:0},9492:{depth:0,height:.37788,italic:0,skew:0},9496:{depth:0,height:.37788,italic:0,skew:0},9585:{depth:.19444,height:.68889,italic:0,skew:0},9586:{depth:.19444,height:.74111,italic:0,skew:0},9632:{depth:0,height:.675,italic:0,skew:0},9633:{depth:0,height:.675,italic:0,skew:0},9650:{depth:0,height:.54986,italic:0,skew:0},9651:{depth:0,height:.54986,italic:0,skew:0},9654:{depth:.03517,height:.54986,italic:0,skew:0},9660:{depth:0,height:.54986,italic:0,skew:0},9661:{depth:0,height:.54986,italic:0,skew:0},9664:{depth:.03517,height:.54986,italic:0,skew:0},9674:{depth:.11111,height:.69224,italic:0,skew:0},9733:{depth:.19444,height:.69224,italic:0,skew:0},989:{depth:.08167,height:.58167,italic:0,skew:0}},"Main-Bold":{100:{depth:0,height:.69444,italic:0,skew:0},101:{depth:0,height:.44444,italic:0,skew:0},102:{depth:0,height:.69444,italic:.10903,skew:0},10216:{depth:.25,height:.75,italic:0,skew:0},10217:{depth:.25,height:.75,italic:0,skew:0},103:{depth:.19444,height:.44444,italic:.01597,skew:0},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.69444,italic:0,skew:0},106:{depth:.19444,height:.69444,italic:0,skew:0},107:{depth:0,height:.69444,italic:0,skew:0},108:{depth:0,height:.69444,italic:0,skew:0},10815:{depth:0,height:.68611,italic:0,skew:0},109:{depth:0,height:.44444,italic:0,skew:0},10927:{depth:.19667,height:.69667,italic:0,skew:0},10928:{depth:.19667,height:.69667,italic:0,skew:0},110:{depth:0,height:.44444,italic:0,skew:0},111:{depth:0,height:.44444,italic:0,skew:0},112:{depth:.19444,height:.44444,italic:0,skew:0},113:{depth:.19444,height:.44444,italic:0,skew:0},114:{depth:0,height:.44444,italic:0,skew:0},115:{depth:0,height:.44444,italic:0,skew:0},116:{depth:0,height:.63492,italic:0,skew:0},117:{depth:0,height:.44444,italic:0,skew:0},118:{depth:0,height:.44444,italic:.01597,skew:0},119:{depth:0,height:.44444,italic:.01597,skew:0},120:{depth:0,height:.44444,italic:0,skew:0},121:{depth:.19444,height:.44444,italic:.01597,skew:0},122:{depth:0,height:.44444,italic:0,skew:0},123:{depth:.25,height:.75,italic:0,skew:0},124:{depth:.25,height:.75,italic:0,skew:0},125:{depth:.25,height:.75,italic:0,skew:0},126:{depth:.35,height:.34444,italic:0,skew:0},168:{depth:0,height:.69444,italic:0,skew:0},172:{depth:0,height:.44444,italic:0,skew:0},175:{depth:0,height:.59611,italic:0,skew:0},176:{depth:0,height:.69444,italic:0,skew:0},177:{depth:.13333,height:.63333,italic:0,skew:0},180:{depth:0,height:.69444,italic:0,skew:0},215:{depth:.13333,height:.63333,italic:0,skew:0},247:{depth:.13333,height:.63333,italic:0,skew:0},305:{depth:0,height:.44444,italic:0,skew:0},33:{depth:0,height:.69444,italic:0,skew:0},34:{depth:0,height:.69444,italic:0,skew:0},35:{depth:.19444,height:.69444,italic:0,skew:0},36:{depth:.05556,height:.75,italic:0,skew:0},37:{depth:.05556,height:.75,italic:0,skew:0},38:{depth:0,height:.69444,italic:0,skew:0},39:{depth:0,height:.69444,italic:0,skew:0},40:{depth:.25,height:.75,italic:0,skew:0},41:{depth:.25,height:.75,italic:0,skew:0},42:{depth:0,height:.75,italic:0,skew:0},43:{depth:.13333,height:.63333,italic:0,skew:0},44:{depth:.19444,height:.15556,italic:0,skew:0},45:{depth:0,height:.44444,italic:0,skew:0},46:{depth:0,height:.15556,italic:0,skew:0},47:{depth:.25,height:.75,italic:0,skew:0},48:{depth:0,height:.64444,italic:0,skew:0},49:{depth:0,height:.64444,italic:0,skew:0},50:{depth:0,height:.64444,italic:0,skew:0},51:{depth:0,height:.64444,italic:0,skew:0},52:{depth:0,height:.64444,italic:0,skew:0},53:{depth:0,height:.64444,italic:0,skew:0},54:{depth:0,height:.64444,italic:0,skew:0},55:{depth:0,height:.64444,italic:0,skew:0},56:{depth:0,height:.64444,italic:0,skew:0},567:{depth:.19444,height:.44444,italic:0,skew:0},57:{depth:0,height:.64444,italic:0,skew:0},58:{depth:0,height:.44444,italic:0,skew:0},59:{depth:.19444,height:.44444,italic:0,skew:0},60:{depth:.08556,height:.58556,italic:0,skew:0},61:{depth:-.10889,height:.39111,italic:0,skew:0},62:{depth:.08556,height:.58556,italic:0,skew:0},63:{depth:0,height:.69444,italic:0,skew:0},64:{depth:0,height:.69444,italic:0,skew:0},65:{depth:0,height:.68611,italic:0,skew:0},66:{depth:0,height:.68611,italic:0,skew:0},67:{depth:0,height:.68611,italic:0,skew:0},68:{depth:0,height:.68611,italic:0,skew:0},69:{depth:0,height:.68611,italic:0,skew:0},70:{depth:0,height:.68611,italic:0,skew:0},71:{depth:0,height:.68611,italic:0,skew:0},710:{depth:0,height:.69444,italic:0,skew:0},711:{depth:0,height:.63194,italic:0,skew:0},713:{depth:0,height:.59611,italic:0,skew:0},714:{depth:0,height:.69444,italic:0,skew:0},715:{depth:0,height:.69444,italic:0,skew:0},72:{depth:0,height:.68611,italic:0,skew:0},728:{depth:0,height:.69444,italic:0,skew:0},729:{depth:0,height:.69444,italic:0,skew:0},73:{depth:0,height:.68611,italic:0,skew:0},730:{depth:0,height:.69444,italic:0,skew:0},732:{depth:0,height:.69444,italic:0,skew:0},74:{depth:0,height:.68611,italic:0,skew:0},75:{depth:0,height:.68611,italic:0,skew:0},76:{depth:0,height:.68611,italic:0,skew:0},768:{depth:0,height:.69444,italic:0,skew:0},769:{depth:0,height:.69444,italic:0,skew:0},77:{depth:0,height:.68611,italic:0,skew:0},770:{depth:0,height:.69444,italic:0,skew:0},771:{depth:0,height:.69444,italic:0,skew:0},772:{depth:0,height:.59611,italic:0,skew:0},774:{depth:0,height:.69444,italic:0,skew:0},775:{depth:0,height:.69444,italic:0,skew:0},776:{depth:0,height:.69444,italic:0,skew:0},778:{depth:0,height:.69444,italic:0,skew:0},779:{depth:0,height:.69444,italic:0,skew:0},78:{depth:0,height:.68611,italic:0,skew:0},780:{depth:0,height:.63194,italic:0,skew:0},79:{depth:0,height:.68611,italic:0,skew:0},80:{depth:0,height:.68611,italic:0,skew:0},81:{depth:.19444,height:.68611,italic:0,skew:0},82:{depth:0,height:.68611,italic:0,skew:0},8211:{depth:0,height:.44444,italic:.03194,skew:0},8212:{depth:0,height:.44444,italic:.03194,skew:0},8216:{depth:0,height:.69444,italic:0,skew:0},8217:{depth:0,height:.69444,italic:0,skew:0},8220:{depth:0,height:.69444,italic:0,skew:0},8221:{depth:0,height:.69444,italic:0,skew:0},8224:{depth:.19444,height:.69444,italic:0,skew:0},8225:{depth:.19444,height:.69444,italic:0,skew:0},824:{depth:.19444,height:.69444,italic:0,skew:0},8242:{depth:0,height:.55556,italic:0,skew:0},83:{depth:0,height:.68611,italic:0,skew:0},84:{depth:0,height:.68611,italic:0,skew:0},8407:{depth:0,height:.72444,italic:.15486,skew:0},8463:{depth:0,height:.69444,italic:0,skew:0},8465:{depth:0,height:.69444,italic:0,skew:0},8467:{depth:0,height:.69444,italic:0,skew:0},8472:{depth:.19444,height:.44444,italic:0,skew:0},8476:{depth:0,height:.69444,italic:0,skew:0},85:{depth:0,height:.68611,italic:0,skew:0},8501:{depth:0,height:.69444,italic:0,skew:0},8592:{depth:-.10889,height:.39111,italic:0,skew:0},8593:{depth:.19444,height:.69444,italic:0,skew:0},8594:{depth:-.10889,height:.39111,italic:0,skew:0},8595:{depth:.19444,height:.69444,italic:0,skew:0},8596:{depth:-.10889,height:.39111,italic:0,skew:0},8597:{depth:.25,height:.75,italic:0,skew:0},8598:{depth:.19444,height:.69444,italic:0,skew:0},8599:{depth:.19444,height:.69444,italic:0,skew:0},86:{depth:0,height:.68611,italic:.01597,skew:0},8600:{depth:.19444,height:.69444,italic:0,skew:0},8601:{depth:.19444,height:.69444,italic:0,skew:0},8636:{depth:-.10889,height:.39111,italic:0,skew:0},8637:{depth:-.10889,height:.39111,italic:0,skew:0},8640:{depth:-.10889,height:.39111,italic:0,skew:0},8641:{depth:-.10889,height:.39111,italic:0,skew:0},8656:{depth:-.10889,height:.39111,italic:0,skew:0},8657:{depth:.19444,height:.69444,italic:0,skew:0},8658:{depth:-.10889,height:.39111,italic:0,skew:0},8659:{depth:.19444,height:.69444,italic:0,skew:0},8660:{depth:-.10889,height:.39111,italic:0,skew:0},8661:{depth:.25,height:.75,italic:0,skew:0},87:{depth:0,height:.68611,italic:.01597,skew:0},8704:{depth:0,height:.69444,italic:0,skew:0},8706:{depth:0,height:.69444,italic:.06389,skew:0},8707:{depth:0,height:.69444,italic:0,skew:0},8709:{depth:.05556,height:.75,italic:0,skew:0},8711:{depth:0,height:.68611,italic:0,skew:0},8712:{depth:.08556,height:.58556,italic:0,skew:0},8715:{depth:.08556,height:.58556,italic:0,skew:0},8722:{depth:.13333,height:.63333,italic:0,skew:0},8723:{depth:.13333,height:.63333,italic:0,skew:0},8725:{depth:.25,height:.75,italic:0,skew:0},8726:{depth:.25,height:.75,italic:0,skew:0},8727:{depth:-.02778,height:.47222,italic:0,skew:0},8728:{depth:-.02639,height:.47361,italic:0,skew:0},8729:{depth:-.02639,height:.47361,italic:0,skew:0},8730:{depth:.18,height:.82,italic:0,skew:0},8733:{depth:0,height:.44444,italic:0,skew:0},8734:{depth:0,height:.44444,italic:0,skew:0},8736:{depth:0,height:.69224,italic:0,skew:0},8739:{depth:.25,height:.75,italic:0,skew:0},8741:{depth:.25,height:.75,italic:0,skew:0},8743:{depth:0,height:.55556,italic:0,skew:0},8744:{depth:0,height:.55556,italic:0,skew:0},8745:{depth:0,height:.55556,italic:0,skew:0},8746:{depth:0,height:.55556,italic:0,skew:0},8747:{depth:.19444,height:.69444,italic:.12778,skew:0},8764:{depth:-.10889,height:.39111,italic:0,skew:0},8768:{depth:.19444,height:.69444,italic:0,skew:0},8771:{depth:.00222,height:.50222,italic:0,skew:0},8776:{depth:.02444,height:.52444,italic:0,skew:0},8781:{depth:.00222,height:.50222,italic:0,skew:0},88:{depth:0,height:.68611,italic:0,skew:0},8801:{depth:.00222,height:.50222,italic:0,skew:0},8804:{depth:.19667,height:.69667,italic:0,skew:0},8805:{depth:.19667,height:.69667,italic:0,skew:0},8810:{depth:.08556,height:.58556,italic:0,skew:0},8811:{depth:.08556,height:.58556,italic:0,skew:0},8826:{depth:.08556,height:.58556,italic:0,skew:0},8827:{depth:.08556,height:.58556,italic:0,skew:0},8834:{depth:.08556,height:.58556,italic:0,skew:0},8835:{depth:.08556,height:.58556,italic:0,skew:0},8838:{depth:.19667,height:.69667,italic:0,skew:0},8839:{depth:.19667,height:.69667,italic:0,skew:0},8846:{depth:0,height:.55556,italic:0,skew:0},8849:{depth:.19667,height:.69667,italic:0,skew:0},8850:{depth:.19667,height:.69667,italic:0,skew:0},8851:{depth:0,height:.55556,italic:0,skew:0},8852:{depth:0,height:.55556,italic:0,skew:0},8853:{depth:.13333,height:.63333,italic:0,skew:0},8854:{depth:.13333,height:.63333,italic:0,skew:0},8855:{depth:.13333,height:.63333,italic:0,skew:0},8856:{depth:.13333,height:.63333,italic:0,skew:0},8857:{depth:.13333,height:.63333,italic:0,skew:0},8866:{depth:0,height:.69444,italic:0,skew:0},8867:{depth:0,height:.69444,italic:0,skew:0},8868:{depth:0,height:.69444,italic:0,skew:0},8869:{depth:0,height:.69444,italic:0,skew:0},89:{depth:0,height:.68611,italic:.02875,skew:0},8900:{depth:-.02639,height:.47361,italic:0,skew:0},8901:{depth:-.02639,height:.47361,italic:0,skew:0},8902:{depth:-.02778,height:.47222,italic:0,skew:0},8968:{depth:.25,height:.75,italic:0,skew:0},8969:{depth:.25,height:.75,italic:0,skew:0},8970:{depth:.25,height:.75,italic:0,skew:0},8971:{depth:.25,height:.75,italic:0,skew:0},8994:{depth:-.13889,height:.36111,italic:0,skew:0},8995:{depth:-.13889,height:.36111,italic:0,skew:0},90:{depth:0,height:.68611,italic:0,skew:0},91:{depth:.25,height:.75,italic:0,skew:0},915:{depth:0,height:.68611,italic:0,skew:0},916:{depth:0,height:.68611,italic:0,skew:0},92:{depth:.25,height:.75,italic:0,skew:0},920:{depth:0,height:.68611,italic:0,skew:0},923:{depth:0,height:.68611,italic:0,skew:0},926:{depth:0,height:.68611,italic:0,skew:0},928:{depth:0,height:.68611,italic:0,skew:0},93:{depth:.25,height:.75,italic:0,skew:0},931:{depth:0,height:.68611,italic:0,skew:0},933:{depth:0,height:.68611,italic:0,skew:0},934:{depth:0,height:.68611,italic:0,skew:0},936:{depth:0,height:.68611,italic:0,skew:0},937:{depth:0,height:.68611,italic:0,skew:0},94:{depth:0,height:.69444,italic:0,skew:0},95:{depth:.31,height:.13444,italic:.03194,skew:0},96:{depth:0,height:.69444,italic:0,skew:0},9651:{depth:.19444,height:.69444,italic:0,skew:0},9657:{depth:-.02778,height:.47222,italic:0,skew:0},9661:{depth:.19444,height:.69444,italic:0,skew:0},9667:{depth:-.02778,height:.47222,italic:0,skew:0},97:{depth:0,height:.44444,italic:0,skew:0},9711:{depth:.19444,height:.69444,italic:0,skew:0},98:{depth:0,height:.69444,italic:0,skew:0},9824:{depth:.12963,height:.69444,italic:0,skew:0},9825:{depth:.12963,height:.69444,italic:0,skew:0},9826:{depth:.12963,height:.69444,italic:0,skew:0},9827:{depth:.12963,height:.69444,italic:0,skew:0},9837:{depth:0,height:.75,italic:0,skew:0},9838:{depth:.19444,height:.69444,italic:0,skew:0},9839:{depth:.19444,height:.69444,italic:0,skew:0},99:{depth:0,height:.44444,italic:0,skew:0}},"Main-Italic":{100:{depth:0,height:.69444,italic:.10333,skew:0},101:{depth:0,height:.43056,italic:.07514,skew:0},102:{depth:.19444,height:.69444,italic:.21194,skew:0},103:{depth:.19444,height:.43056,italic:.08847,skew:0},104:{depth:0,height:.69444,italic:.07671,skew:0},105:{depth:0,height:.65536,italic:.1019,skew:0},106:{depth:.19444,height:.65536,italic:.14467,skew:0},107:{depth:0,height:.69444,italic:.10764,skew:0},108:{depth:0,height:.69444,italic:.10333,skew:0},109:{depth:0,height:.43056,italic:.07671,skew:0},110:{depth:0,height:.43056,italic:.07671,skew:0},111:{depth:0,height:.43056,italic:.06312,skew:0},112:{depth:.19444,height:.43056,italic:.06312,skew:0},113:{depth:.19444,height:.43056,italic:.08847,skew:0},114:{depth:0,height:.43056,italic:.10764,skew:0},115:{depth:0,height:.43056,italic:.08208,skew:0},116:{depth:0,height:.61508,italic:.09486,skew:0},117:{depth:0,height:.43056,italic:.07671,skew:0},118:{depth:0,height:.43056,italic:.10764,skew:0},119:{depth:0,height:.43056,italic:.10764,skew:0},120:{depth:0,height:.43056,italic:.12042,skew:0},121:{depth:.19444,height:.43056,italic:.08847,skew:0},122:{depth:0,height:.43056,italic:.12292,skew:0},126:{depth:.35,height:.31786,italic:.11585,skew:0},163:{depth:0,height:.69444,italic:0,skew:0},305:{depth:0,height:.43056,italic:.07671,skew:0},33:{depth:0,height:.69444,italic:.12417,skew:0},34:{depth:0,height:.69444,italic:.06961,skew:0},35:{depth:.19444,height:.69444,italic:.06616,skew:0},37:{depth:.05556,height:.75,italic:.13639,skew:0},38:{depth:0,height:.69444,italic:.09694,skew:0},39:{depth:0,height:.69444,italic:.12417,skew:0},40:{depth:.25,height:.75,italic:.16194,skew:0},41:{depth:.25,height:.75,italic:.03694,skew:0},42:{depth:0,height:.75,italic:.14917,skew:0},43:{depth:.05667,height:.56167,italic:.03694,skew:0},44:{depth:.19444,height:.10556,italic:0,skew:0},45:{depth:0,height:.43056,italic:.02826,skew:0},46:{depth:0,height:.10556,italic:0,skew:0},47:{depth:.25,height:.75,italic:.16194,skew:0},48:{depth:0,height:.64444,italic:.13556,skew:0},49:{depth:0,height:.64444,italic:.13556,skew:0},50:{depth:0,height:.64444,italic:.13556,skew:0},51:{depth:0,height:.64444,italic:.13556,skew:0},52:{depth:.19444,height:.64444,italic:.13556,skew:0},53:{depth:0,height:.64444,italic:.13556,skew:0},54:{depth:0,height:.64444,italic:.13556,skew:0},55:{depth:.19444,height:.64444,italic:.13556,skew:0},56:{depth:0,height:.64444,italic:.13556,skew:0},567:{depth:.19444,height:.43056,italic:.03736,skew:0},57:{depth:0,height:.64444,italic:.13556,skew:0},58:{depth:0,height:.43056,italic:.0582,skew:0},59:{depth:.19444,height:.43056,italic:.0582,skew:0},61:{depth:-.13313,height:.36687,italic:.06616,skew:0},63:{depth:0,height:.69444,italic:.1225,skew:0},64:{depth:0,height:.69444,italic:.09597,skew:0},65:{depth:0,height:.68333,italic:0,skew:0},66:{depth:0,height:.68333,italic:.10257,skew:0},67:{depth:0,height:.68333,italic:.14528,skew:0},68:{depth:0,height:.68333,italic:.09403,skew:0},69:{depth:0,height:.68333,italic:.12028,skew:0},70:{depth:0,height:.68333,italic:.13305,skew:0},71:{depth:0,height:.68333,italic:.08722,skew:0},72:{depth:0,height:.68333,italic:.16389,skew:0},73:{depth:0,height:.68333,italic:.15806,skew:0},74:{depth:0,height:.68333,italic:.14028,skew:0},75:{depth:0,height:.68333,italic:.14528,skew:0},76:{depth:0,height:.68333,italic:0,skew:0},768:{depth:0,height:.69444,italic:0,skew:0},769:{depth:0,height:.69444,italic:.09694,skew:0},77:{depth:0,height:.68333,italic:.16389,skew:0},770:{depth:0,height:.69444,italic:.06646,skew:0},771:{depth:0,height:.66786,italic:.11585,skew:0},772:{depth:0,height:.56167,italic:.10333,skew:0},774:{depth:0,height:.69444,italic:.10806,skew:0},775:{depth:0,height:.66786,italic:.11752,skew:0},776:{depth:0,height:.66786,italic:.10474,skew:0},778:{depth:0,height:.69444,italic:0,skew:0},779:{depth:0,height:.69444,italic:.1225,skew:0},78:{depth:0,height:.68333,italic:.16389,skew:0},780:{depth:0,height:.62847,italic:.08295,skew:0},79:{depth:0,height:.68333,italic:.09403,skew:0},80:{depth:0,height:.68333,italic:.10257,skew:0},81:{depth:.19444,height:.68333,italic:.09403,skew:0},82:{depth:0,height:.68333,italic:.03868,skew:0},8211:{depth:0,height:.43056,italic:.09208,skew:0},8212:{depth:0,height:.43056,italic:.09208,skew:0},8216:{depth:0,height:.69444,italic:.12417,skew:0},8217:{depth:0,height:.69444,italic:.12417,skew:0},8220:{depth:0,height:.69444,italic:.1685,skew:0},8221:{depth:0,height:.69444,italic:.06961,skew:0},83:{depth:0,height:.68333,italic:.11972,skew:0},84:{depth:0,height:.68333,italic:.13305,skew:0},8463:{depth:0,height:.68889,italic:0,skew:0},85:{depth:0,height:.68333,italic:.16389,skew:0},86:{depth:0,height:.68333,italic:.18361,skew:0},87:{depth:0,height:.68333,italic:.18361,skew:0},88:{depth:0,height:.68333,italic:.15806,skew:0},89:{depth:0,height:.68333,italic:.19383,skew:0},90:{depth:0,height:.68333,italic:.14528,skew:0},91:{depth:.25,height:.75,italic:.1875,skew:0},915:{depth:0,height:.68333,italic:.13305,skew:0},916:{depth:0,height:.68333,italic:0,skew:0},920:{depth:0,height:.68333,italic:.09403,skew:0},923:{depth:0,height:.68333,italic:0,skew:0},926:{depth:0,height:.68333,italic:.15294,skew:0},928:{depth:0,height:.68333,italic:.16389,skew:0},93:{depth:.25,height:.75,italic:.10528,skew:0},931:{depth:0,height:.68333,italic:.12028,skew:0},933:{depth:0,height:.68333,italic:.11111,skew:0},934:{depth:0,height:.68333,italic:.05986,skew:0},936:{depth:0,height:.68333,italic:.11111,skew:0},937:{depth:0,height:.68333,italic:.10257,skew:0},94:{depth:0,height:.69444,italic:.06646,skew:0},95:{depth:.31,height:.12056,italic:.09208,skew:0},97:{depth:0,height:.43056,italic:.07671,skew:0},98:{depth:0,height:.69444,italic:.06312,skew:0},99:{depth:0,height:.43056,italic:.05653,skew:0}},"Main-Regular":{32:{depth:-0,height:0,italic:0,skew:0},160:{depth:-0,height:0,italic:0,skew:0},8230:{depth:-0,height:.12,italic:0,skew:0},8773:{depth:-.022,height:.589,italic:0,skew:0},8800:{depth:.215,height:.716,italic:0,skew:0},8942:{depth:.03,height:.9,italic:0,skew:0},8943:{depth:-.19,height:.31,italic:0,skew:0},8945:{depth:-.1,height:.82,italic:0,skew:0},100:{depth:0,height:.69444,italic:0,skew:0},101:{depth:0,height:.43056,italic:0,skew:0},102:{depth:0,height:.69444,italic:.07778,skew:0},10216:{depth:.25,height:.75,italic:0,skew:0},10217:{depth:.25,height:.75,italic:0,skew:0},103:{depth:.19444,height:.43056,italic:.01389,skew:0},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.66786,italic:0,skew:0},106:{depth:.19444,height:.66786,italic:0,skew:0},107:{depth:0,height:.69444,italic:0,skew:0},108:{depth:0,height:.69444,italic:0,skew:0},10815:{depth:0,height:.68333,italic:0,skew:0},109:{depth:0,height:.43056,italic:0,skew:0},10927:{depth:.13597,height:.63597,italic:0,skew:0},10928:{depth:.13597,height:.63597,italic:0,skew:0},110:{depth:0,height:.43056,italic:0,skew:0},111:{depth:0,height:.43056,italic:0,skew:0},112:{depth:.19444,height:.43056,italic:0,skew:0},113:{depth:.19444,height:.43056,italic:0,skew:0},114:{depth:0,height:.43056,italic:0,skew:0},115:{depth:0,height:.43056,italic:0,skew:0},116:{depth:0,height:.61508,italic:0,skew:0},117:{depth:0,height:.43056,italic:0,skew:0},118:{depth:0,height:.43056,italic:.01389,skew:0},119:{depth:0,height:.43056,italic:.01389,skew:0},120:{depth:0,height:.43056,italic:0,skew:0},121:{depth:.19444,height:.43056,italic:.01389,skew:0},122:{depth:0,height:.43056,italic:0,skew:0},123:{depth:.25,height:.75,italic:0,skew:0},124:{depth:.25,height:.75,italic:0,skew:0},125:{depth:.25,height:.75,italic:0,skew:0},126:{depth:.35,height:.31786,italic:0,skew:0},168:{depth:0,height:.66786,italic:0,skew:0},172:{depth:0,height:.43056,italic:0,skew:0},175:{depth:0,height:.56778,italic:0,skew:0},176:{depth:0,height:.69444,italic:0,skew:0},177:{depth:.08333,height:.58333,italic:0,skew:0},180:{depth:0,height:.69444,italic:0,skew:0},215:{depth:.08333,height:.58333,italic:0,skew:0},247:{depth:.08333,height:.58333,italic:0,skew:0},305:{depth:0,height:.43056,italic:0,skew:0},33:{depth:0,height:.69444,italic:0,skew:0},34:{depth:0,height:.69444,italic:0,skew:0},35:{depth:.19444,height:.69444,italic:0,skew:0},36:{depth:.05556,height:.75,italic:0,skew:0},37:{depth:.05556,height:.75,italic:0,skew:0},38:{depth:0,height:.69444,italic:0,skew:0},39:{depth:0,height:.69444,italic:0,skew:0},40:{depth:.25,height:.75,italic:0,skew:0},41:{depth:.25,height:.75,italic:0,skew:0},42:{depth:0,height:.75,italic:0,skew:0},43:{depth:.08333,height:.58333,italic:0,skew:0},44:{depth:.19444,height:.10556,italic:0,skew:0},45:{depth:0,height:.43056,italic:0,skew:0},46:{depth:0,height:.10556,italic:0,skew:0},47:{depth:.25,height:.75,italic:0,skew:0},48:{depth:0,height:.64444,italic:0,skew:0},49:{depth:0,height:.64444,italic:0,skew:0},50:{depth:0,height:.64444,italic:0,skew:0},51:{depth:0,height:.64444,italic:0,skew:0},52:{depth:0,height:.64444,italic:0,skew:0},53:{depth:0,height:.64444,italic:0,skew:0},54:{depth:0,height:.64444,italic:0,skew:0},55:{depth:0,height:.64444,italic:0,skew:0},56:{depth:0,height:.64444,italic:0,skew:0},567:{depth:.19444,height:.43056,italic:0,skew:0},57:{depth:0,height:.64444,italic:0,skew:0},58:{depth:0,height:.43056,italic:0,skew:0},59:{depth:.19444,height:.43056,italic:0,skew:0},60:{depth:.0391,height:.5391,italic:0,skew:0},61:{depth:-.13313,height:.36687,italic:0,skew:0},62:{depth:.0391,height:.5391,italic:0,skew:0},63:{depth:0,height:.69444,italic:0,skew:0},64:{depth:0,height:.69444,italic:0,skew:0},65:{depth:0,height:.68333,italic:0,skew:0},66:{depth:0,height:.68333,italic:0,skew:0},67:{depth:0,height:.68333,italic:0,skew:0},68:{depth:0,height:.68333,italic:0,skew:0},69:{depth:0,height:.68333,italic:0,skew:0},70:{depth:0,height:.68333,italic:0,skew:0},71:{depth:0,height:.68333,italic:0,skew:0},710:{depth:0,height:.69444,italic:0,skew:0},711:{depth:0,height:.62847,italic:0,skew:0},713:{depth:0,height:.56778,italic:0,skew:0},714:{depth:0,height:.69444,italic:0,skew:0},715:{depth:0,height:.69444,italic:0,skew:0},72:{depth:0,height:.68333,italic:0,skew:0},728:{depth:0,height:.69444,italic:0,skew:0},729:{depth:0,height:.66786,italic:0,skew:0},73:{depth:0,height:.68333,italic:0,skew:0},730:{depth:0,height:.69444,italic:0,skew:0},732:{depth:0,height:.66786,italic:0,skew:0},74:{depth:0,height:.68333,italic:0,skew:0},75:{depth:0,height:.68333,italic:0,skew:0},76:{depth:0,height:.68333,italic:0,skew:0},768:{depth:0,height:.69444,italic:0,skew:0},769:{depth:0,height:.69444,italic:0,skew:0},77:{depth:0,height:.68333,italic:0,skew:0},770:{depth:0,height:.69444,italic:0,skew:0},771:{depth:0,height:.66786,italic:0,skew:0},772:{depth:0,height:.56778,italic:0,skew:0},774:{depth:0,height:.69444,italic:0,skew:0},775:{depth:0,height:.66786,italic:0,skew:0},776:{depth:0,height:.66786,italic:0,skew:0},778:{depth:0,height:.69444,italic:0,skew:0},779:{depth:0,height:.69444,italic:0,skew:0},78:{depth:0,height:.68333,italic:0,skew:0},780:{depth:0,height:.62847,italic:0,skew:0},79:{depth:0,height:.68333,italic:0,skew:0},80:{depth:0,height:.68333,italic:0,skew:0},81:{depth:.19444,height:.68333,italic:0,skew:0},82:{depth:0,height:.68333,italic:0,skew:0},8211:{depth:0,height:.43056,italic:.02778,skew:0},8212:{depth:0,height:.43056,italic:.02778,skew:0},8216:{depth:0,height:.69444,italic:0,skew:0},8217:{depth:0,height:.69444,italic:0,skew:0},8220:{depth:0,height:.69444,italic:0,skew:0},8221:{depth:0,height:.69444,italic:0,skew:0},8224:{depth:.19444,height:.69444,italic:0,skew:0},8225:{depth:.19444,height:.69444,italic:0,skew:0},824:{depth:.19444,height:.69444,italic:0,skew:0},8242:{depth:0,height:.55556,italic:0,skew:0},83:{depth:0,height:.68333,italic:0,skew:0},84:{depth:0,height:.68333,italic:0,skew:0},8407:{depth:0,height:.71444,italic:.15382,skew:0},8463:{depth:0,height:.68889,italic:0,skew:0},8465:{depth:0,height:.69444,italic:0,skew:0},8467:{depth:0,height:.69444,italic:0,skew:.11111},8472:{depth:.19444,height:.43056,italic:0,skew:.11111},8476:{depth:0,height:.69444,italic:0,skew:0},85:{depth:0,height:.68333,italic:0,skew:0},8501:{depth:0,height:.69444,italic:0,skew:0},8592:{depth:-.13313,height:.36687,italic:0,skew:0},8593:{depth:.19444,height:.69444,italic:0,skew:0},8594:{depth:-.13313,height:.36687,italic:0,skew:0},8595:{depth:.19444,height:.69444,italic:0,skew:0},8596:{depth:-.13313,height:.36687,italic:0,skew:0},8597:{depth:.25,height:.75,italic:0,skew:0},8598:{depth:.19444,height:.69444,italic:0,skew:0},8599:{depth:.19444,height:.69444,italic:0,skew:0},86:{depth:0,height:.68333,italic:.01389,skew:0},8600:{depth:.19444,height:.69444,italic:0,skew:0},8601:{depth:.19444,height:.69444,italic:0,skew:0},8636:{depth:-.13313,height:.36687,italic:0,skew:0},8637:{depth:-.13313,height:.36687,italic:0,skew:0},8640:{depth:-.13313,height:.36687,italic:0,skew:0},8641:{depth:-.13313,height:.36687,italic:0,skew:0},8656:{depth:-.13313,height:.36687,italic:0,skew:0},8657:{depth:.19444,height:.69444,italic:0,skew:0},8658:{depth:-.13313,height:.36687,italic:0,skew:0},8659:{depth:.19444,height:.69444,italic:0,skew:0},8660:{depth:-.13313,height:.36687,italic:0,skew:0},8661:{depth:.25,height:.75,italic:0,skew:0},87:{depth:0,height:.68333,italic:.01389,skew:0},8704:{depth:0,height:.69444,italic:0,skew:0},8706:{depth:0,height:.69444,italic:.05556,skew:.08334},8707:{depth:0,height:.69444,italic:0,skew:0},8709:{depth:.05556,height:.75,italic:0,skew:0},8711:{depth:0,height:.68333,italic:0,skew:0},8712:{depth:.0391,height:.5391,italic:0,skew:0},8715:{depth:.0391,height:.5391,italic:0,skew:0},8722:{depth:.08333,height:.58333,italic:0,skew:0},8723:{depth:.08333,height:.58333,italic:0,skew:0},8725:{depth:.25,height:.75,italic:0,skew:0},8726:{depth:.25,height:.75,italic:0,skew:0},8727:{depth:-.03472,height:.46528,italic:0,skew:0},8728:{depth:-.05555,height:.44445,italic:0,skew:0},8729:{depth:-.05555,height:.44445,italic:0,skew:0},8730:{depth:.2,height:.8,italic:0,skew:0},8733:{depth:0,height:.43056,italic:0,skew:0},8734:{depth:0,height:.43056,italic:0,skew:0},8736:{depth:0,height:.69224,italic:0,skew:0},8739:{depth:.25,height:.75,italic:0,skew:0},8741:{depth:.25,height:.75,italic:0,skew:0},8743:{depth:0,height:.55556,italic:0,skew:0},8744:{depth:0,height:.55556,italic:0,skew:0},8745:{depth:0,height:.55556,italic:0,skew:0},8746:{depth:0,height:.55556,italic:0,skew:0},8747:{depth:.19444,height:.69444,italic:.11111,skew:0},8764:{depth:-.13313,height:.36687,italic:0,skew:0},8768:{depth:.19444,height:.69444,italic:0,skew:0},8771:{depth:-.03625,height:.46375,italic:0,skew:0},8776:{depth:-.01688,height:.48312,italic:0,skew:0},8781:{depth:-.03625,height:.46375,italic:0,skew:0},88:{depth:0,height:.68333,italic:0,skew:0},8801:{depth:-.03625,height:.46375,italic:0,skew:0},8804:{depth:.13597,height:.63597,italic:0,skew:0},8805:{depth:.13597,height:.63597,italic:0,skew:0},8810:{depth:.0391,height:.5391,italic:0,skew:0},8811:{depth:.0391,height:.5391,italic:0,skew:0},8826:{depth:.0391,height:.5391,italic:0,skew:0},8827:{depth:.0391,height:.5391,italic:0,skew:0},8834:{depth:.0391,height:.5391,italic:0,skew:0},8835:{depth:.0391,height:.5391,italic:0,skew:0},8838:{depth:.13597,height:.63597,italic:0,skew:0},8839:{depth:.13597,height:.63597,italic:0,skew:0},8846:{depth:0,height:.55556,italic:0,skew:0},8849:{depth:.13597,height:.63597,italic:0,skew:0},8850:{depth:.13597,height:.63597,italic:0,skew:0},8851:{depth:0,height:.55556,italic:0,skew:0},8852:{depth:0,height:.55556,italic:0,skew:0},8853:{depth:.08333,height:.58333,italic:0,skew:0},8854:{depth:.08333,height:.58333,italic:0,skew:0},8855:{depth:.08333,height:.58333,italic:0,skew:0},8856:{depth:.08333,height:.58333,italic:0,skew:0},8857:{depth:.08333,height:.58333,italic:0,skew:0},8866:{depth:0,height:.69444,italic:0,skew:0},8867:{depth:0,height:.69444,italic:0,skew:0},8868:{depth:0,height:.69444,italic:0,skew:0},8869:{depth:0,height:.69444,italic:0,skew:0},89:{depth:0,height:.68333,italic:.025,skew:0},8900:{depth:-.05555,height:.44445,italic:0,skew:0},8901:{depth:-.05555,height:.44445,italic:0,skew:0},8902:{depth:-.03472,height:.46528,italic:0,skew:0},8968:{depth:.25,height:.75,italic:0,skew:0},8969:{depth:.25,height:.75,italic:0,skew:0},8970:{depth:.25,height:.75,italic:0,skew:0},8971:{depth:.25,height:.75,italic:0,skew:0},8994:{depth:-.14236,height:.35764,italic:0,skew:0},8995:{depth:-.14236,height:.35764,italic:0,skew:0},90:{depth:0,height:.68333,italic:0,skew:0},91:{depth:.25,height:.75,italic:0,skew:0},915:{depth:0,height:.68333,italic:0,skew:0},916:{depth:0,height:.68333,italic:0,skew:0},92:{depth:.25,height:.75,italic:0,skew:0},920:{depth:0,height:.68333,italic:0,skew:0},923:{depth:0,height:.68333,italic:0,skew:0},926:{depth:0,height:.68333,italic:0,skew:0},928:{depth:0,height:.68333,italic:0,skew:0},93:{depth:.25,height:.75,italic:0,skew:0},931:{depth:0,height:.68333,italic:0,skew:0},933:{depth:0,height:.68333,italic:0,skew:0},934:{depth:0,height:.68333,italic:0,skew:0},936:{depth:0,height:.68333,italic:0,skew:0},937:{depth:0,height:.68333,italic:0,skew:0},94:{depth:0,height:.69444,italic:0,skew:0},95:{depth:.31,height:.12056,italic:.02778,skew:0},96:{depth:0,height:.69444,italic:0,skew:0},9651:{depth:.19444,height:.69444,italic:0,skew:0},9657:{depth:-.03472,height:.46528,italic:0,skew:0},9661:{depth:.19444,height:.69444,italic:0,skew:0},9667:{depth:-.03472,height:.46528,italic:0,skew:0},97:{depth:0,height:.43056,italic:0,skew:0},9711:{depth:.19444,height:.69444,italic:0,skew:0},98:{depth:0,height:.69444,italic:0,skew:0},9824:{depth:.12963,height:.69444,italic:0,skew:0},9825:{depth:.12963,height:.69444,italic:0,skew:0},9826:{depth:.12963,height:.69444,italic:0,skew:0},9827:{depth:.12963,height:.69444,italic:0,skew:0},9837:{depth:0,height:.75,italic:0,skew:0},9838:{depth:.19444,height:.69444,italic:0,skew:0},9839:{depth:.19444,height:.69444,italic:0,skew:0},99:{depth:0,height:.43056,italic:0,skew:0}},"Math-BoldItalic":{100:{depth:0,height:.69444,italic:0,skew:0},1009:{depth:.19444,height:.44444,italic:0,skew:0},101:{depth:0,height:.44444,italic:0,skew:0},1013:{depth:0,height:.44444,italic:0,skew:0},102:{depth:.19444,height:.69444,italic:.11042,skew:0},103:{depth:.19444,height:.44444,italic:.03704,skew:0},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.69326,italic:0,skew:0},106:{depth:.19444,height:.69326,italic:.0622,skew:0},107:{depth:0,height:.69444,italic:.01852,skew:0},108:{depth:0,height:.69444,italic:.0088,skew:0},109:{depth:0,height:.44444,italic:0,skew:0},110:{depth:0,height:.44444,italic:0,skew:0},111:{depth:0,height:.44444,italic:0,skew:0},112:{depth:.19444,height:.44444,italic:0,skew:0},113:{depth:.19444,height:.44444,italic:.03704,skew:0},114:{depth:0,height:.44444,italic:.03194,skew:0},115:{depth:0,height:.44444,italic:0,skew:0},116:{depth:0,height:.63492,italic:0,skew:0},117:{depth:0,height:.44444,italic:0,skew:0},118:{depth:0,height:.44444,italic:.03704,skew:0},119:{depth:0,height:.44444,italic:.02778,skew:0},120:{depth:0,height:.44444,italic:0,skew:0},121:{depth:.19444,height:.44444,italic:.03704,skew:0},122:{depth:0,height:.44444,italic:.04213,skew:0},47:{depth:.19444,height:.69444,italic:0,skew:0},65:{depth:0,height:.68611,italic:0,skew:0},66:{depth:0,height:.68611,italic:.04835,skew:0},67:{depth:0,height:.68611,italic:.06979,skew:0},68:{depth:0,height:.68611,italic:.03194,skew:0},69:{depth:0,height:.68611,italic:.05451,skew:0},70:{depth:0,height:.68611,italic:.15972,skew:0},71:{depth:0,height:.68611,italic:0,skew:0},72:{depth:0,height:.68611,italic:.08229,skew:0},73:{depth:0,height:.68611,italic:.07778,skew:0},74:{depth:0,height:.68611,italic:.10069,skew:0},75:{depth:0,height:.68611,italic:.06979,skew:0},76:{depth:0,height:.68611,italic:0,skew:0},77:{depth:0,height:.68611,italic:.11424,skew:0},78:{depth:0,height:.68611,italic:.11424,skew:0},79:{depth:0,height:.68611,italic:.03194,skew:0},80:{depth:0,height:.68611,italic:.15972,skew:0},81:{depth:.19444,height:.68611,italic:0,skew:0},82:{depth:0,height:.68611,italic:.00421,skew:0},83:{depth:0,height:.68611,italic:.05382,skew:0},84:{depth:0,height:.68611,italic:.15972,skew:0},85:{depth:0,height:.68611,italic:.11424,skew:0},86:{depth:0,height:.68611,italic:.25555,skew:0},87:{depth:0,height:.68611,italic:.15972,skew:0},88:{depth:0,height:.68611,italic:.07778,skew:0},89:{depth:0,height:.68611,italic:.25555,skew:0},90:{depth:0,height:.68611,italic:.06979,skew:0},915:{depth:0,height:.68611,italic:.15972,skew:0},916:{depth:0,height:.68611,italic:0,skew:0},920:{depth:0,height:.68611,italic:.03194,skew:0},923:{depth:0,height:.68611,italic:0,skew:0},926:{depth:0,height:.68611,italic:.07458,skew:0},928:{depth:0,height:.68611,italic:.08229,skew:0},931:{depth:0,height:.68611,italic:.05451,skew:0},933:{depth:0,height:.68611,italic:.15972,skew:0},934:{depth:0,height:.68611,italic:0,skew:0},936:{depth:0,height:.68611,italic:.11653,skew:0},937:{depth:0,height:.68611,italic:.04835,skew:0},945:{depth:0,height:.44444,italic:0,skew:0},946:{depth:.19444,height:.69444,italic:.03403,skew:0},947:{depth:.19444,height:.44444,italic:.06389,skew:0},948:{depth:0,height:.69444,italic:.03819,skew:0},949:{depth:0,height:.44444,italic:0,skew:0},950:{depth:.19444,height:.69444,italic:.06215,skew:0},951:{depth:.19444,height:.44444,italic:.03704,skew:0},952:{depth:0,height:.69444,italic:.03194,skew:0},953:{depth:0,height:.44444,italic:0,skew:0},954:{depth:0,height:.44444,italic:0,skew:0},955:{depth:0,height:.69444,italic:0,skew:0},956:{depth:.19444,height:.44444,italic:0,skew:0},957:{depth:0,height:.44444,italic:.06898,skew:0},958:{depth:.19444,height:.69444,italic:.03021,skew:0},959:{depth:0,height:.44444,italic:0,skew:0},960:{depth:0,height:.44444,italic:.03704,skew:0},961:{depth:.19444,height:.44444,italic:0,skew:0},962:{depth:.09722,height:.44444,italic:.07917,skew:0},963:{depth:0,height:.44444,italic:.03704,skew:0},964:{depth:0,height:.44444,italic:.13472,skew:0},965:{depth:0,height:.44444,italic:.03704,skew:0},966:{depth:.19444,height:.44444,italic:0,skew:0},967:{depth:.19444,height:.44444,italic:0,skew:0},968:{depth:.19444,height:.69444,italic:.03704,skew:0},969:{depth:0,height:.44444,italic:.03704,skew:0},97:{depth:0,height:.44444,italic:0,skew:0},977:{depth:0,height:.69444,italic:0,skew:0},98:{depth:0,height:.69444,italic:0,skew:0},981:{depth:.19444,height:.69444,italic:0,skew:0},982:{depth:0,height:.44444,italic:.03194,skew:0},99:{depth:0,height:.44444,italic:0,skew:0}},"Math-Italic":{100:{depth:0,height:.69444,italic:0,skew:.16667},1009:{depth:.19444,height:.43056,italic:0,skew:.08334},101:{depth:0,height:.43056,italic:0,skew:.05556},1013:{depth:0,height:.43056,italic:0,skew:.05556},102:{depth:.19444,height:.69444,italic:.10764,skew:.16667},103:{depth:.19444,height:.43056,italic:.03588,skew:.02778},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.65952,italic:0,skew:0},106:{depth:.19444,height:.65952,italic:.05724,skew:0},107:{depth:0,height:.69444,italic:.03148,skew:0},108:{depth:0,height:.69444,italic:.01968,skew:.08334},109:{depth:0,height:.43056,italic:0,skew:0},110:{depth:0,height:.43056,italic:0,skew:0},111:{depth:0,height:.43056,italic:0,skew:.05556},112:{depth:.19444,height:.43056,italic:0,skew:.08334},113:{depth:.19444,height:.43056,italic:.03588,skew:.08334},114:{depth:0,height:.43056,italic:.02778,skew:.05556},115:{depth:0,height:.43056,italic:0,skew:.05556},116:{depth:0,height:.61508,italic:0,skew:.08334},117:{depth:0,height:.43056,italic:0,skew:.02778},118:{depth:0,height:.43056,italic:.03588,skew:.02778},119:{depth:0,height:.43056,italic:.02691,skew:.08334},120:{depth:0,height:.43056,italic:0,skew:.02778},121:{depth:.19444,height:.43056,italic:.03588,skew:.05556},122:{depth:0,height:.43056,italic:.04398,skew:.05556},47:{depth:.19444,height:.69444,italic:0,skew:0},65:{depth:0,height:.68333,italic:0,skew:.13889},66:{depth:0,height:.68333,italic:.05017,skew:.08334},67:{depth:0,height:.68333,italic:.07153,skew:.08334},68:{depth:0,height:.68333,italic:.02778,skew:.05556},69:{depth:0,height:.68333,italic:.05764,skew:.08334},70:{depth:0,height:.68333,italic:.13889,skew:.08334},71:{depth:0,height:.68333,italic:0,skew:.08334},72:{depth:0,height:.68333,italic:.08125,skew:.05556},73:{depth:0,height:.68333,italic:.07847,skew:.11111},74:{depth:0,height:.68333,italic:.09618,skew:.16667},75:{depth:0,height:.68333,italic:.07153,skew:.05556},76:{depth:0,height:.68333,italic:0,skew:.02778},77:{depth:0,height:.68333,italic:.10903,skew:.08334},78:{depth:0,height:.68333,italic:.10903,skew:.08334},79:{depth:0,height:.68333,italic:.02778,skew:.08334},80:{depth:0,height:.68333,italic:.13889,skew:.08334},81:{depth:.19444,height:.68333,italic:0,skew:.08334},82:{depth:0,height:.68333,italic:.00773,skew:.08334},83:{depth:0,height:.68333,italic:.05764,skew:.08334},84:{depth:0,height:.68333,italic:.13889,skew:.08334},85:{depth:0,height:.68333,italic:.10903,skew:.02778},86:{depth:0,height:.68333,italic:.22222,skew:0},87:{depth:0,height:.68333,italic:.13889,skew:0},88:{depth:0,height:.68333,italic:.07847,skew:.08334},89:{depth:0,height:.68333,italic:.22222,skew:0},90:{depth:0,height:.68333,italic:.07153,skew:.08334},915:{depth:0,height:.68333,italic:.13889,skew:.08334},916:{depth:0,height:.68333,italic:0,skew:.16667},920:{depth:0,height:.68333,italic:.02778,skew:.08334},923:{depth:0,height:.68333,italic:0,skew:.16667},926:{depth:0,height:.68333,italic:.07569,skew:.08334},928:{depth:0,height:.68333,italic:.08125,skew:.05556},931:{depth:0,height:.68333,italic:.05764,skew:.08334},933:{depth:0,height:.68333,italic:.13889,skew:.05556},934:{depth:0,height:.68333,italic:0,skew:.08334},936:{depth:0,height:.68333,italic:.11,skew:.05556},937:{depth:0,height:.68333,italic:.05017,skew:.08334},945:{depth:0,height:.43056,italic:.0037,skew:.02778},946:{depth:.19444,height:.69444,italic:.05278,skew:.08334},947:{depth:.19444,height:.43056,italic:.05556,skew:0},948:{depth:0,height:.69444,italic:.03785,skew:.05556},949:{depth:0,height:.43056,italic:0,skew:.08334},950:{depth:.19444,height:.69444,italic:.07378,skew:.08334},951:{depth:.19444,height:.43056,italic:.03588,skew:.05556},952:{depth:0,height:.69444,italic:.02778,skew:.08334},953:{depth:0,height:.43056,italic:0,skew:.05556},954:{depth:0,height:.43056,italic:0,skew:0},955:{depth:0,height:.69444,italic:0,skew:0},956:{depth:.19444,height:.43056,italic:0,skew:.02778},957:{depth:0,height:.43056,italic:.06366,skew:.02778},958:{depth:.19444,height:.69444,italic:.04601,skew:.11111},959:{depth:0,height:.43056,italic:0,skew:.05556},960:{depth:0,height:.43056,italic:.03588,skew:0},961:{depth:.19444,height:.43056,italic:0,skew:.08334},962:{depth:.09722,height:.43056,italic:.07986,skew:.08334},963:{depth:0,height:.43056,italic:.03588,skew:0},964:{depth:0,height:.43056,italic:.1132,skew:.02778},965:{depth:0,height:.43056,italic:.03588,skew:.02778},966:{depth:.19444,height:.43056,italic:0,skew:.08334},967:{depth:.19444,height:.43056,italic:0,skew:.05556},968:{depth:.19444,height:.69444,italic:.03588,skew:.11111},969:{depth:0,height:.43056,italic:.03588,skew:0},97:{depth:0,height:.43056,italic:0,skew:0},977:{depth:0,height:.69444,italic:0,skew:.08334},98:{depth:0,height:.69444,italic:0,skew:0},981:{depth:.19444,height:.69444,italic:0,skew:.08334},982:{depth:0,height:.43056,italic:.02778,skew:0},99:{depth:0,height:.43056,italic:0,skew:.05556}},"Math-Regular":{100:{depth:0,height:.69444,italic:0,skew:.16667},1009:{depth:.19444,height:.43056,italic:0,skew:.08334},101:{depth:0,height:.43056,italic:0,skew:.05556},1013:{depth:0,height:.43056,italic:0,skew:.05556},102:{depth:.19444,height:.69444,italic:.10764,skew:.16667},103:{depth:.19444,height:.43056,italic:.03588,skew:.02778},104:{depth:0,height:.69444,italic:0,skew:0},105:{depth:0,height:.65952,italic:0,skew:0},106:{depth:.19444,height:.65952,italic:.05724,skew:0},107:{depth:0,height:.69444,italic:.03148,skew:0},108:{depth:0,height:.69444,italic:.01968,skew:.08334},109:{depth:0,height:.43056,italic:0,skew:0},110:{depth:0,height:.43056,italic:0,skew:0},111:{depth:0,height:.43056,italic:0,skew:.05556},112:{depth:.19444,height:.43056,italic:0,skew:.08334},113:{depth:.19444,height:.43056,italic:.03588,skew:.08334},114:{depth:0,height:.43056,italic:.02778,skew:.05556},115:{depth:0,height:.43056,italic:0,skew:.05556},116:{depth:0,height:.61508,italic:0,skew:.08334},117:{depth:0,height:.43056,italic:0,skew:.02778},118:{depth:0,height:.43056,italic:.03588,skew:.02778},119:{depth:0,height:.43056,italic:.02691,skew:.08334},120:{depth:0,height:.43056,italic:0,skew:.02778},121:{depth:.19444,height:.43056,italic:.03588,skew:.05556},122:{depth:0,height:.43056,italic:.04398,skew:.05556},65:{depth:0,height:.68333,italic:0,skew:.13889},66:{depth:0,height:.68333,italic:.05017,skew:.08334},67:{depth:0,height:.68333,italic:.07153,skew:.08334},68:{depth:0,height:.68333,italic:.02778,skew:.05556},69:{depth:0,height:.68333,italic:.05764,skew:.08334},70:{depth:0,height:.68333,italic:.13889,skew:.08334},71:{depth:0,height:.68333,italic:0,skew:.08334},72:{depth:0,height:.68333,italic:.08125,skew:.05556},73:{depth:0,height:.68333,italic:.07847,skew:.11111},74:{depth:0,height:.68333,italic:.09618,skew:.16667},75:{depth:0,height:.68333,italic:.07153,skew:.05556},76:{depth:0,height:.68333,italic:0,skew:.02778},77:{depth:0,height:.68333,italic:.10903,skew:.08334},78:{depth:0,height:.68333,italic:.10903,skew:.08334},79:{depth:0,height:.68333,italic:.02778,skew:.08334},80:{depth:0,height:.68333,italic:.13889,skew:.08334},81:{depth:.19444,height:.68333,italic:0,skew:.08334},82:{depth:0,height:.68333,italic:.00773,skew:.08334},83:{depth:0,height:.68333,italic:.05764,skew:.08334},84:{depth:0,height:.68333,italic:.13889,skew:.08334},85:{depth:0,height:.68333,italic:.10903,skew:.02778},86:{depth:0,height:.68333,italic:.22222,skew:0},87:{depth:0,height:.68333,italic:.13889,skew:0},88:{depth:0,height:.68333,italic:.07847,skew:.08334},89:{depth:0,height:.68333,italic:.22222,skew:0},90:{depth:0,height:.68333,italic:.07153,skew:.08334},915:{depth:0,height:.68333,italic:.13889,skew:.08334},916:{depth:0,height:.68333,italic:0,skew:.16667},920:{depth:0,height:.68333,italic:.02778,skew:.08334},923:{depth:0,height:.68333,italic:0,skew:.16667},926:{depth:0,height:.68333,italic:.07569,skew:.08334},928:{depth:0,height:.68333,italic:.08125,skew:.05556},931:{depth:0,height:.68333,italic:.05764,skew:.08334},933:{depth:0,height:.68333,italic:.13889,skew:.05556},934:{depth:0,height:.68333,italic:0,skew:.08334},936:{depth:0,height:.68333,italic:.11,skew:.05556},937:{depth:0,height:.68333,italic:.05017,skew:.08334},945:{depth:0,height:.43056,italic:.0037,skew:.02778},946:{depth:.19444,height:.69444,italic:.05278,skew:.08334},947:{depth:.19444,height:.43056,italic:.05556,skew:0},948:{depth:0,height:.69444,italic:.03785,skew:.05556},949:{depth:0,height:.43056,italic:0,skew:.08334},950:{depth:.19444,height:.69444,italic:.07378,skew:.08334},951:{depth:.19444,height:.43056,italic:.03588,skew:.05556},952:{depth:0,height:.69444,italic:.02778,skew:.08334},953:{depth:0,height:.43056,italic:0,skew:.05556},954:{depth:0,height:.43056,italic:0,skew:0},955:{depth:0,height:.69444,italic:0,skew:0},956:{depth:.19444,height:.43056,italic:0,skew:.02778},957:{depth:0,height:.43056,italic:.06366,skew:.02778},958:{depth:.19444,height:.69444,italic:.04601,skew:.11111},959:{depth:0,height:.43056,italic:0,skew:.05556},960:{depth:0,height:.43056,italic:.03588,skew:0},961:{depth:.19444,height:.43056,italic:0,skew:.08334},962:{depth:.09722,height:.43056,italic:.07986,skew:.08334},963:{depth:0,height:.43056,italic:.03588,skew:0},964:{depth:0,height:.43056,italic:.1132,skew:.02778},965:{depth:0,height:.43056,italic:.03588,skew:.02778},966:{depth:.19444,height:.43056,italic:0,skew:.08334},967:{depth:.19444,height:.43056,italic:0,skew:.05556},968:{depth:.19444,height:.69444,italic:.03588,skew:.11111},969:{depth:0,height:.43056,italic:.03588,skew:0},97:{depth:0,height:.43056,italic:0,skew:0},977:{depth:0,height:.69444,italic:0,skew:.08334},98:{depth:0,height:.69444,italic:0,skew:0},981:{depth:.19444,height:.69444,italic:0,skew:.08334},982:{depth:0,height:.43056,italic:.02778,skew:0},99:{depth:0,height:.43056,italic:0,skew:.05556}},"Size1-Regular":{8748:{depth:.306,height:.805,italic:.19445,skew:0},8749:{depth:.306,height:.805,italic:.19445,skew:0},10216:{depth:.35001,height:.85,italic:0,skew:0},10217:{depth:.35001,height:.85,italic:0,skew:0},10752:{depth:.25001,height:.75,italic:0,skew:0},10753:{depth:.25001,height:.75,italic:0,skew:0},10754:{depth:.25001,height:.75,italic:0,skew:0},10756:{depth:.25001,height:.75,italic:0,skew:0},10758:{depth:.25001,height:.75,italic:0,skew:0},123:{depth:.35001,height:.85,italic:0,skew:0},125:{depth:.35001,height:.85,italic:0,skew:0},40:{depth:.35001,height:.85,italic:0,skew:0},41:{depth:.35001,height:.85,italic:0,skew:0},47:{depth:.35001,height:.85,italic:0,skew:0},710:{depth:0,height:.72222,italic:0,skew:0},732:{depth:0,height:.72222,italic:0,skew:0},770:{depth:0,height:.72222,italic:0,skew:0},771:{depth:0,height:.72222,italic:0,skew:0},8214:{depth:-99e-5,height:.601,italic:0,skew:0},8593:{depth:1e-5,height:.6,italic:0,skew:0},8595:{depth:1e-5,height:.6,italic:0,skew:0},8657:{depth:1e-5,height:.6,italic:0,skew:0},8659:{depth:1e-5,height:.6,italic:0,skew:0},8719:{depth:.25001,height:.75,italic:0,skew:0},8720:{depth:.25001,height:.75,italic:0,skew:0},8721:{depth:.25001,height:.75,italic:0,skew:0},8730:{depth:.35001,height:.85,italic:0,skew:0},8739:{depth:-.00599,height:.606,italic:0,skew:0},8741:{depth:-.00599,height:.606,italic:0,skew:0},8747:{depth:.30612,height:.805,italic:.19445,skew:0},8750:{depth:.30612,height:.805,italic:.19445,skew:0},8896:{depth:.25001,height:.75,italic:0,skew:0},8897:{depth:.25001,height:.75,italic:0,skew:0},8898:{depth:.25001,height:.75,italic:0,skew:0},8899:{depth:.25001,height:.75,italic:0,skew:0},8968:{depth:.35001,height:.85,italic:0,skew:0},8969:{depth:.35001,height:.85,italic:0,skew:0},8970:{depth:.35001,height:.85,italic:0,skew:0},8971:{depth:.35001,height:.85,italic:0,skew:0},91:{depth:.35001,height:.85,italic:0,skew:0},9168:{depth:-99e-5,height:.601,italic:0,skew:0},92:{depth:.35001,height:.85,italic:0,skew:0},93:{depth:.35001,height:.85,italic:0,skew:0}},"Size2-Regular":{8748:{depth:.862,height:1.36,italic:.44445,skew:0},8749:{depth:.862,height:1.36,italic:.44445,skew:0},10216:{depth:.65002,height:1.15,italic:0,skew:0},10217:{depth:.65002,height:1.15,italic:0,skew:0},10752:{depth:.55001,height:1.05,italic:0,skew:0},10753:{depth:.55001,height:1.05,italic:0,skew:0},10754:{depth:.55001,height:1.05,italic:0,skew:0},10756:{depth:.55001,height:1.05,italic:0,skew:0},10758:{depth:.55001,height:1.05,italic:0,skew:0},123:{depth:.65002,height:1.15,italic:0,skew:0},125:{depth:.65002,height:1.15,italic:0,skew:0},40:{depth:.65002,height:1.15,italic:0,skew:0},41:{depth:.65002,height:1.15,italic:0,skew:0},47:{depth:.65002,height:1.15,italic:0,skew:0},710:{depth:0,height:.75,italic:0,skew:0},732:{depth:0,height:.75,italic:0,skew:0},770:{depth:0,height:.75,italic:0,skew:0},771:{depth:0,height:.75,italic:0,skew:0},8719:{depth:.55001,height:1.05,italic:0,skew:0},8720:{depth:.55001,height:1.05,italic:0,skew:0},8721:{depth:.55001,height:1.05,italic:0,skew:0},8730:{depth:.65002,height:1.15,italic:0,skew:0},8747:{depth:.86225,height:1.36,italic:.44445,skew:0},8750:{depth:.86225,height:1.36,italic:.44445,skew:0},8896:{depth:.55001,height:1.05,italic:0,skew:0},8897:{depth:.55001,height:1.05,italic:0,skew:0},8898:{depth:.55001,height:1.05,italic:0,skew:0},8899:{depth:.55001,height:1.05,italic:0,skew:0},8968:{depth:.65002,height:1.15,italic:0,skew:0},8969:{depth:.65002,height:1.15,italic:0,skew:0},8970:{depth:.65002,height:1.15,italic:0,skew:0},8971:{depth:.65002,height:1.15,italic:0,skew:0},91:{depth:.65002,height:1.15,italic:0,skew:0},92:{depth:.65002,height:1.15,italic:0,skew:0},93:{depth:.65002,height:1.15,italic:0,skew:0}},"Size3-Regular":{10216:{depth:.95003,height:1.45,italic:0,skew:0},10217:{depth:.95003,height:1.45,italic:0,skew:0},123:{depth:.95003,height:1.45,italic:0,skew:0},125:{depth:.95003,height:1.45,italic:0,skew:0},40:{depth:.95003,height:1.45,italic:0,skew:0},41:{depth:.95003,height:1.45,italic:0,skew:0},47:{depth:.95003,height:1.45,italic:0,skew:0},710:{depth:0,height:.75,italic:0,skew:0},732:{depth:0,height:.75,italic:0,skew:0},770:{depth:0,height:.75,italic:0,skew:0},771:{depth:0,height:.75,italic:0,skew:0},8730:{depth:.95003,height:1.45,italic:0,skew:0},8968:{depth:.95003,height:1.45,italic:0,skew:0},8969:{depth:.95003,height:1.45,italic:0,skew:0},8970:{depth:.95003,height:1.45,italic:0,skew:0},8971:{depth:.95003,height:1.45,italic:0,skew:0},91:{depth:.95003,height:1.45,italic:0,skew:0},92:{depth:.95003,height:1.45,italic:0,skew:0},93:{depth:.95003,height:1.45,italic:0,skew:0}},"Size4-Regular":{10216:{depth:1.25003,height:1.75,italic:0,skew:0},10217:{depth:1.25003,height:1.75,italic:0,skew:0},123:{depth:1.25003,height:1.75,italic:0,skew:0},125:{depth:1.25003,height:1.75,italic:0,skew:0},40:{depth:1.25003,height:1.75,italic:0,skew:0},41:{depth:1.25003,height:1.75,italic:0,skew:0},47:{depth:1.25003,height:1.75,italic:0,skew:0},57344:{depth:-.00499,height:.605,italic:0,skew:0},57345:{depth:-.00499,height:.605,italic:0,skew:0},57680:{depth:0,height:.12,italic:0,skew:0},57681:{depth:0,height:.12,italic:0,skew:0},57682:{depth:0,height:.12,italic:0,skew:0},57683:{depth:0,height:.12,italic:0,skew:0},710:{depth:0,height:.825,italic:0,skew:0},732:{depth:0,height:.825,italic:0,skew:0},770:{depth:0,height:.825,italic:0,skew:0},771:{depth:0,height:.825,italic:0,skew:0},8730:{depth:1.25003,height:1.75,italic:0,skew:0},8968:{depth:1.25003,height:1.75,italic:0,skew:0},8969:{depth:1.25003,height:1.75,italic:0,skew:0},8970:{depth:1.25003,height:1.75,italic:0,skew:0},8971:{depth:1.25003,height:1.75,italic:0,skew:0},91:{depth:1.25003,height:1.75,italic:0,skew:0},9115:{depth:.64502,height:1.155,italic:0,skew:0},9116:{depth:1e-5,height:.6,italic:0,skew:0},9117:{depth:.64502,height:1.155,italic:0,skew:0},9118:{depth:.64502,height:1.155,italic:0,skew:0},9119:{depth:1e-5,height:.6,italic:0,skew:0},9120:{depth:.64502,height:1.155,italic:0,skew:0},9121:{depth:.64502,height:1.155,italic:0,skew:0},9122:{depth:-99e-5,height:.601,italic:0,skew:0},9123:{depth:.64502,height:1.155,italic:0,skew:0},9124:{depth:.64502,height:1.155,italic:0,skew:0},9125:{depth:-99e-5,height:.601,italic:0,skew:0},9126:{depth:.64502,height:1.155,italic:0,skew:0},9127:{depth:1e-5,height:.9,italic:0,skew:0},9128:{depth:.65002,height:1.15,italic:0,skew:0},9129:{depth:.90001,height:0,italic:0,skew:0},9130:{depth:0,height:.3,italic:0,skew:0},9131:{depth:1e-5,height:.9,italic:0,skew:0},9132:{depth:.65002,height:1.15,italic:0,skew:0},9133:{depth:.90001,height:0,italic:0,skew:0},9143:{depth:.88502,height:.915,italic:0,skew:0},92:{depth:1.25003,height:1.75,italic:0,skew:0},93:{depth:1.25003,height:1.75,italic:0,skew:0}}};
+var K=function(e,t){return X[t][e.charCodeAt(0)]};t.exports={metrics:H,getCharacterMetrics:K}},{"./Style":6}],12:[function(e,t,i){var h=e("./utils");var a=e("./ParseError");var s={"\\sqrt":{numArgs:1,numOptionalArgs:1,handler:function(e,t,i,h){if(t!=null){throw new a("Optional arguments to \\sqrt aren't supported yet",this.lexer,h[1]-1)}return{type:"sqrt",body:i}}},"\\text":{numArgs:1,argTypes:["text"],greediness:2,handler:function(e,t){var i;if(t.type==="ordgroup"){i=t.value}else{i=[t]}return{type:"text",body:i}}},"\\color":{numArgs:2,allowedInText:true,argTypes:["color","original"],handler:function(e,t,i){var h;if(i.type==="ordgroup"){h=i.value}else{h=[i]}return{type:"color",color:t.value,value:h}}},"\\overline":{numArgs:1,handler:function(e,t){return{type:"overline",body:t}}},"\\rule":{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"],handler:function(e,t,i,h){return{type:"rule",shift:t&&t.value,width:i.value,height:h.value}}},"\\KaTeX":{numArgs:0,handler:function(e){return{type:"katex"}}}};var r={"\\bigl":{type:"open",size:1},"\\Bigl":{type:"open",size:2},"\\biggl":{type:"open",size:3},"\\Biggl":{type:"open",size:4},"\\bigr":{type:"close",size:1},"\\Bigr":{type:"close",size:2},"\\biggr":{type:"close",size:3},"\\Biggr":{type:"close",size:4},"\\bigm":{type:"rel",size:1},"\\Bigm":{type:"rel",size:2},"\\biggm":{type:"rel",size:3},"\\Biggm":{type:"rel",size:4},"\\big":{type:"textord",size:1},"\\Big":{type:"textord",size:2},"\\bigg":{type:"textord",size:3},"\\Bigg":{type:"textord",size:4}};var l=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var p=[{funcs:["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple"],data:{numArgs:1,allowedInText:true,handler:function(e,t){var i;if(t.type==="ordgroup"){i=t.value}else{i=[t]}return{type:"color",color:"katex-"+e.slice(1),value:i}}}},{funcs:["\\arcsin","\\arccos","\\arctan","\\arg","\\cos","\\cosh","\\cot","\\coth","\\csc","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\tan","\\tanh"],data:{numArgs:0,handler:function(e){return{type:"op",limits:false,symbol:false,body:e}}}},{funcs:["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],data:{numArgs:0,handler:function(e){return{type:"op",limits:true,symbol:false,body:e}}}},{funcs:["\\int","\\iint","\\iiint","\\oint"],data:{numArgs:0,handler:function(e){return{type:"op",limits:false,symbol:true,body:e}}}},{funcs:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],data:{numArgs:0,handler:function(e){return{type:"op",limits:true,symbol:true,body:e}}}},{funcs:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom"],data:{numArgs:2,greediness:2,handler:function(e,t,i){var h;var a=null;var s=null;var r="auto";switch(e){case"\\dfrac":case"\\frac":case"\\tfrac":h=true;break;case"\\dbinom":case"\\binom":case"\\tbinom":h=false;a="(";s=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e){case"\\dfrac":case"\\dbinom":r="display";break;case"\\tfrac":case"\\tbinom":r="text";break}return{type:"genfrac",numer:t,denom:i,hasBarLine:h,leftDelim:a,rightDelim:s,size:r}}}},{funcs:["\\llap","\\rlap"],data:{numArgs:1,allowedInText:true,handler:function(e,t){return{type:e.slice(1),body:t}}}},{funcs:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg","\\left","\\right"],data:{numArgs:1,handler:function(e,t,i){if(!h.contains(l,t.value)){throw new a("Invalid delimiter: '"+t.value+"' after '"+e+"'",this.lexer,i[1])}if(e==="\\left"||e==="\\right"){return{type:"leftright",value:t.value}}else{return{type:"delimsizing",size:r[e].size,delimType:r[e].type,value:t.value}}}}},{funcs:["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],data:{numArgs:0}},{funcs:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],data:{numArgs:0}},{funcs:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],data:{numArgs:1,handler:function(e,t){return{type:"accent",accent:e,base:t}}}},{funcs:["\\over","\\choose"],data:{numArgs:0,handler:function(e){var t;switch(e){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t}}}}];var n=function(e,t){for(var i=0;i<e.length;i++){s[e[i]]=t}};for(var c=0;c<p.length;c++){n(p[c].funcs,p[c].data)}var o=function(e){if(s[e].greediness===undefined){return 1}else{return s[e].greediness}};for(var d in s){if(s.hasOwnProperty(d)){var g=s[d];s[d]={numArgs:g.numArgs,argTypes:g.argTypes,greediness:g.greediness===undefined?1:g.greediness,allowedInText:g.allowedInText?g.allowedInText:false,numOptionalArgs:g.numOptionalArgs===undefined?0:g.numOptionalArgs,handler:g.handler}}}t.exports={funcs:s,getGreediness:o}},{"./ParseError":4,"./utils":15}],13:[function(e,t,i){var h=e("./Parser");var a=function(e){var t=new h(e);return t.parse()};t.exports=a},{"./Parser":5}],14:[function(e,t,i){var h={math:{"`":{font:"main",group:"textord",replace:"‘"},"\\$":{font:"main",group:"textord",replace:"$"},"\\%":{font:"main",group:"textord",replace:"%"},"\\_":{font:"main",group:"textord",replace:"_"},"\\angle":{font:"main",group:"textord",replace:"∠"},"\\infty":{font:"main",group:"textord",replace:"∞"},"\\prime":{font:"main",group:"textord",replace:"′"},"\\triangle":{font:"main",group:"textord",replace:"△"},"\\Gamma":{font:"main",group:"textord",replace:"Γ"},"\\Delta":{font:"main",group:"textord",replace:"Δ"},"\\Theta":{font:"main",group:"textord",replace:"Θ"},"\\Lambda":{font:"main",group:"textord",replace:"Λ"},"\\Xi":{font:"main",group:"textord",replace:"Ξ"},"\\Pi":{font:"main",group:"textord",replace:"Π"},"\\Sigma":{font:"main",group:"textord",replace:"Σ"},"\\Upsilon":{font:"main",group:"textord",replace:"Υ"},"\\Phi":{font:"main",group:"textord",replace:"Φ"},"\\Psi":{font:"main",group:"textord",replace:"Ψ"},"\\Omega":{font:"main",group:"textord",replace:"Ω"},"\\neg":{font:"main",group:"textord",replace:"¬"},"\\lnot":{font:"main",group:"textord",replace:"¬"},"\\top":{font:"main",group:"textord",replace:"⊤"},"\\bot":{font:"main",group:"textord",replace:"⊥"},"\\emptyset":{font:"main",group:"textord",replace:"∅"},"\\varnothing":{font:"ams",group:"textord",replace:"∅"},"\\alpha":{font:"main",group:"mathord",replace:"α"},"\\beta":{font:"main",group:"mathord",replace:"β"},"\\gamma":{font:"main",group:"mathord",replace:"γ"},"\\delta":{font:"main",group:"mathord",replace:"δ"},"\\epsilon":{font:"main",group:"mathord",replace:"ϵ"},"\\zeta":{font:"main",group:"mathord",replace:"ζ"},"\\eta":{font:"main",group:"mathord",replace:"η"},"\\theta":{font:"main",group:"mathord",replace:"θ"},"\\iota":{font:"main",group:"mathord",replace:"ι"},"\\kappa":{font:"main",group:"mathord",replace:"κ"},"\\lambda":{font:"main",group:"mathord",replace:"λ"},"\\mu":{font:"main",group:"mathord",replace:"μ"},"\\nu":{font:"main",group:"mathord",replace:"ν"},"\\xi":{font:"main",group:"mathord",replace:"ξ"},"\\omicron":{font:"main",group:"mathord",replace:"o"},"\\pi":{font:"main",group:"mathord",replace:"π"},"\\rho":{font:"main",group:"mathord",replace:"ρ"},"\\sigma":{font:"main",group:"mathord",replace:"σ"},"\\tau":{font:"main",group:"mathord",replace:"τ"},"\\upsilon":{font:"main",group:"mathord",replace:"υ"},"\\phi":{font:"main",group:"mathord",replace:"ϕ"},"\\chi":{font:"main",group:"mathord",replace:"χ"},"\\psi":{font:"main",group:"mathord",replace:"ψ"},"\\omega":{font:"main",group:"mathord",replace:"ω"},"\\varepsilon":{font:"main",group:"mathord",replace:"ε"},"\\vartheta":{font:"main",group:"mathord",replace:"ϑ"},"\\varpi":{font:"main",group:"mathord",replace:"ϖ"},"\\varrho":{font:"main",group:"mathord",replace:"ϱ"},"\\varsigma":{font:"main",group:"mathord",replace:"ς"},"\\varphi":{font:"main",group:"mathord",replace:"φ"},"*":{font:"main",group:"bin",replace:"∗"},"+":{font:"main",group:"bin"},"-":{font:"main",group:"bin",replace:"−"},"\\cdot":{font:"main",group:"bin",replace:"⋅"},"\\circ":{font:"main",group:"bin",replace:"∘"},"\\div":{font:"main",group:"bin",replace:"÷"},"\\pm":{font:"main",group:"bin",replace:"±"},"\\times":{font:"main",group:"bin",replace:"×"},"\\cap":{font:"main",group:"bin",replace:"∩"},"\\cup":{font:"main",group:"bin",replace:"∪"},"\\setminus":{font:"main",group:"bin",replace:"∖"},"\\land":{font:"main",group:"bin",replace:"∧"},"\\lor":{font:"main",group:"bin",replace:"∨"},"\\wedge":{font:"main",group:"bin",replace:"∧"},"\\vee":{font:"main",group:"bin",replace:"∨"},"\\surd":{font:"main",group:"textord",replace:"√"},"(":{font:"main",group:"open"},"[":{font:"main",group:"open"},"\\langle":{font:"main",group:"open",replace:"⟨"},"\\lvert":{font:"main",group:"open",replace:"∣"},")":{font:"main",group:"close"},"]":{font:"main",group:"close"},"?":{font:"main",group:"close"},"!":{font:"main",group:"close"},"\\rangle":{font:"main",group:"close",replace:"⟩"},"\\rvert":{font:"main",group:"close",replace:"∣"},"=":{font:"main",group:"rel"},"<":{font:"main",group:"rel"},">":{font:"main",group:"rel"},":":{font:"main",group:"rel"},"\\approx":{font:"main",group:"rel",replace:"≈"},"\\cong":{font:"main",group:"rel",replace:"≅"},"\\ge":{font:"main",group:"rel",replace:"≥"},"\\geq":{font:"main",group:"rel",replace:"≥"},"\\gets":{font:"main",group:"rel",replace:"←"},"\\in":{font:"main",group:"rel",replace:"∈"},"\\notin":{font:"main",group:"rel",replace:"∉"},"\\subset":{font:"main",group:"rel",replace:"⊂"},"\\supset":{font:"main",group:"rel",replace:"⊃"},"\\subseteq":{font:"main",group:"rel",replace:"⊆"},"\\supseteq":{font:"main",group:"rel",replace:"⊇"},"\\nsubseteq":{font:"ams",group:"rel",replace:"⊈"},"\\nsupseteq":{font:"ams",group:"rel",replace:"⊉"},"\\models":{font:"main",group:"rel",replace:"⊨"},"\\leftarrow":{font:"main",group:"rel",replace:"←"},"\\le":{font:"main",group:"rel",replace:"≤"},"\\leq":{font:"main",group:"rel",replace:"≤"},"\\ne":{font:"main",group:"rel",replace:"≠"},"\\neq":{font:"main",group:"rel",replace:"≠"},"\\rightarrow":{font:"main",group:"rel",replace:"→"},"\\to":{font:"main",group:"rel",replace:"→"},"\\ngeq":{font:"ams",group:"rel",replace:"≱"},"\\nleq":{font:"ams",group:"rel",replace:"≰"},"\\!":{font:"main",group:"spacing"},"\\ ":{font:"main",group:"spacing",replace:" "},"~":{font:"main",group:"spacing",replace:" "},"\\,":{font:"main",group:"spacing"},"\\:":{font:"main",group:"spacing"},"\\;":{font:"main",group:"spacing"},"\\enspace":{font:"main",group:"spacing"},"\\qquad":{font:"main",group:"spacing"},"\\quad":{font:"main",group:"spacing"},"\\space":{font:"main",group:"spacing",replace:" "},",":{font:"main",group:"punct"},";":{font:"main",group:"punct"},"\\colon":{font:"main",group:"punct",replace:":"},"\\barwedge":{font:"ams",group:"textord",replace:"⊼"},"\\veebar":{font:"ams",group:"textord",replace:"⊻"},"\\odot":{font:"main",group:"textord",replace:"⊙"},"\\oplus":{font:"main",group:"textord",replace:"⊕"},"\\otimes":{font:"main",group:"textord",replace:"⊗"},"\\partial":{font:"main",group:"textord",replace:"∂"},"\\oslash":{font:"main",group:"textord",replace:"⊘"},"\\circledcirc":{font:"ams",group:"textord",replace:"⊚"},"\\boxdot":{font:"ams",group:"textord",replace:"⊡"},"\\bigtriangleup":{font:"main",group:"textord",replace:"△"},"\\bigtriangledown":{font:"main",group:"textord",replace:"▽"},"\\dagger":{font:"main",group:"textord",replace:"†"},"\\diamond":{font:"main",group:"textord",replace:"⋄"},"\\star":{font:"main",group:"textord",replace:"⋆"},"\\triangleleft":{font:"main",group:"textord",replace:"◃"},"\\triangleright":{font:"main",group:"textord",replace:"▹"},"\\{":{font:"main",group:"open",replace:"{"},"\\}":{font:"main",group:"close",replace:"}"},"\\lbrace":{font:"main",group:"open",replace:"{"},"\\rbrace":{font:"main",group:"close",replace:"}"},"\\lbrack":{font:"main",group:"open",replace:"["},"\\rbrack":{font:"main",group:"close",replace:"]"},"\\lfloor":{font:"main",group:"open",replace:"⌊"},"\\rfloor":{font:"main",group:"close",replace:"⌋"},"\\lceil":{font:"main",group:"open",replace:"⌈"},"\\rceil":{font:"main",group:"close",replace:"⌉"},"\\backslash":{font:"main",group:"textord",replace:"\\"},"|":{font:"main",group:"textord",replace:"∣"},"\\vert":{font:"main",group:"textord",replace:"∣"},"\\|":{font:"main",group:"textord",replace:"∥"},"\\Vert":{font:"main",group:"textord",replace:"∥"},"\\uparrow":{font:"main",group:"textord",replace:"↑"},"\\Uparrow":{font:"main",group:"textord",replace:"⇑"},"\\downarrow":{font:"main",group:"textord",replace:"↓"},"\\Downarrow":{font:"main",group:"textord",replace:"⇓"},"\\updownarrow":{font:"main",group:"textord",replace:"↕"},"\\Updownarrow":{font:"main",group:"textord",replace:"⇕"},"\\coprod":{font:"math",group:"op",replace:"∐"},"\\bigvee":{font:"math",group:"op",replace:"⋁"},"\\bigwedge":{font:"math",group:"op",replace:"⋀"},"\\biguplus":{font:"math",group:"op",replace:"⨄"},"\\bigcap":{font:"math",group:"op",replace:"⋂"},"\\bigcup":{font:"math",group:"op",replace:"⋃"},"\\int":{font:"math",group:"op",replace:"∫"},"\\intop":{font:"math",group:"op",replace:"∫"},"\\iint":{font:"math",group:"op",replace:"∬"},"\\iiint":{font:"math",group:"op",replace:"∭"},"\\prod":{font:"math",group:"op",replace:"∏"},"\\sum":{font:"math",group:"op",replace:"∑"},"\\bigotimes":{font:"math",group:"op",replace:"⨂"},"\\bigoplus":{font:"math",group:"op",replace:"⨁"},"\\bigodot":{font:"math",group:"op",replace:"⨀"},"\\oint":{font:"math",group:"op",replace:"∮"},"\\bigsqcup":{font:"math",group:"op",replace:"⨆"},"\\smallint":{font:"math",group:"op",replace:"∫"},"\\ldots":{font:"main",group:"punct",replace:"…"},"\\cdots":{font:"main",group:"inner",replace:"⋯"},"\\ddots":{font:"main",group:"inner",replace:"⋱"},"\\vdots":{font:"main",group:"textord",replace:"⋮"},"\\acute":{font:"main",group:"accent",replace:"´"},"\\grave":{font:"main",group:"accent",replace:"`"},"\\ddot":{font:"main",group:"accent",replace:"¨"},"\\tilde":{font:"main",group:"accent",replace:"~"},"\\bar":{font:"main",group:"accent",replace:"¯"},"\\breve":{font:"main",group:"accent",replace:"˘"},"\\check":{font:"main",group:"accent",replace:"ˇ"},"\\hat":{font:"main",group:"accent",replace:"^"},"\\vec":{font:"main",group:"accent",replace:"⃗"},"\\dot":{font:"main",group:"accent",replace:"˙"}},text:{"\\ ":{font:"main",group:"spacing",replace:" "}," ":{font:"main",group:"spacing",replace:" "},"~":{font:"main",group:"spacing",replace:" "}}};var a='0123456789/@."';for(var s=0;s<a.length;s++){var r=a.charAt(s);h.math[r]={font:"main",group:"textord"}}var l="0123456789`!@*()-=+[]'\";:?/.,";for(var s=0;s<l.length;s++){var r=l.charAt(s);h.text[r]={font:"main",group:"textord"}}var p="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var s=0;s<p.length;s++){var r=p.charAt(s);h.math[r]={font:"main",group:"mathord"};h.text[r]={font:"main",group:"textord"}}t.exports=h},{}],15:[function(e,t,i){var h=Array.prototype.indexOf;var a=function(e,t){if(e==null){return-1}if(h&&e.indexOf===h){return e.indexOf(t)}var i=0,a=e.length;for(;i<a;i++){if(e[i]===t){return i}}return-1};var s=function(e,t){return a(e,t)!==-1};var r=/([A-Z])/g;var l=function(e){return e.replace(r,"-$1").toLowerCase()};var p={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"};var n=/[&><"']/g;function c(e){return p[e]}function o(e){return(""+e).replace(n,c)}var d;if(typeof document!=="undefined"){var g=document.createElement("span");if("textContent"in g){d=function(e,t){e.textContent=t}}else{d=function(e,t){e.innerText=t}}}function u(e){d(e,"")}t.exports={contains:s,escape:o,hyphenate:l,indexOf:a,setTextContent:d,clearNode:u}},{}],16:[function(e,t,i){var h=e("./src/ParseError");var a=e("./src/Lexer");var s=e("./src/Parser");var r=e("./src/Renderer");t.exports={ParseError:h,renderToString:function(e,t){if(e===null||e===undefined)throw"input cannot be empty";var i=new a(e);var h=new s(i);var l=new r(h,t);return l.toMarkup()},render:function(e,t,i){if(e===null||e===undefined)throw"input cannot be empty";var h=new a(e);var l=new s(h);var p=new r(l,i);var n=p.toDOM();if(t)t.appendChild(n);return n}}},{"./src/Lexer":17,"./src/ParseError":18,"./src/Parser":19,"./src/Renderer":20}],17:[function(e,t,i){var h=e("./utils");var a=e("./ParseError");var s=function(e){this._input=e;this._remain=e;this._pos=0;this._nextAtom=this._currentAtom=null;this._next()};s.prototype.accept=function(e,t){if(this._nextAtom.type===e&&this._matchText(t)){this._next();return this._currentAtom.text}return null};s.prototype.expect=function(e,t){var i=this._nextAtom;if(i.type!==e)throw new a("Expect an atom of "+e+" but received "+i.type,this._pos,this._input);if(!this._matchText(t))throw new a("Expect `"+t+"` but received `"+i.text+"`",this._pos,this._input);this._next();return this._currentAtom.text};s.prototype.get=function(){return this._currentAtom};var r={exec:function(e){var t=[{start:"$",end:"$"},{start:"\\(",end:"\\)"}];var i=e.length;for(var h=0;h<t.length;h++){var s=t[h].start;if(e.indexOf(s)!==0)continue;var r=t[h].end;var l=s.length;var p=e.slice(l);while(l<i){var n=p.indexOf(r);if(n<0)throw new a("Math environment is not closed",this._pos,this._input);if(n>0&&p[n-1]==="\\"){var c=n+r.length;p=p.slice(c);l+=c;continue}var o=[e.slice(0,l+n+r.length),e.slice(s.length,l+n)];return o}}return null}};var l={special:/^(\\\\|\\{|\\}|\\\$|\\&|\\#|\\%|\\_)/,math:r,func:/^\\([a-zA-Z]+)/,open:/^\{/,close:/^\}/,quote:/^(`|``|'|'')/,ordinary:/^[^\\{}$&#%_\s]+/};var p=/^%.*/;var n=/^\s+/;s.prototype._skip=function(e){this._pos+=e;this._remain=this._remain.slice(e)};s.prototype._next=function(){var e=false;while(1){var t=n.exec(this._remain);if(t){e=true;var i=t[0].length;this._skip(i)}var h=p.exec(this._remain);if(!h)break;var s=h[0].length;this._skip(s)}this._currentAtom=this._nextAtom;if(this._remain===""){this._nextAtom={type:"EOF",text:null,whitespace:false};return false}for(var r in l){var c=l[r];var o=c.exec(this._remain);if(!o)continue;var d=o[0];var g=o[1]?o[1]:d;this._nextAtom={type:r,text:g,whitespace:e};this._pos+=d.length;this._remain=this._remain.slice(o[0].length);return true}throw new a("Unrecoganizable atom",this._pos,this._input)};s.prototype._matchText=function(e){if(e===null||e===undefined)return true;if(h.isString(e))return e.toLowerCase()===this._nextAtom.text.toLowerCase();else{e=e.map(function(e){return e.toLowerCase()});return e.indexOf(this._nextAtom.text.toLowerCase())>=0}};t.exports=s},{"./ParseError":18,"./utils":21}],18:[function(e,t,i){function h(e,t,i){var h="Error: "+e;if(t!==undefined&&i!==undefined){h+=" at position "+t+": `";i=i.slice(0,t)+"↱"+i.slice(t);var a=Math.max(0,t-15);var s=t+15;h+=i.slice(a,s)+"`"}this.message=h}h.prototype=Object.create(Error.prototype);h.prototype.constructor=h;t.exports=h},{}],19:[function(e,t,i){var h=e("./utils");var a=function(e,t){this.type=e;this.value=t;this.children=[]};a.prototype.toString=function(e){if(!e)e=0;var t="";for(var i=0;i<e;i++)t+="  ";var a=t+"<"+this.type+">";if(this.value)a+=" ("+h.toString(this.value)+")";a+="\n";if(this.children){for(var s=0;s<this.children.length;s++){var r=this.children[s];a+=r.toString(e+1)}}return a};a.prototype.addChild=function(e){if(!e)throw"argument cannot be null";this.children.push(e)};var s=function(e,t,i){this.type=e;this.value=t;this.children=null;this.whitespace=!!i};s.prototype=a.prototype;var r=function(e){this._lexer=e};r.prototype.parse=function(){var e=new a("root");while(true){var t=this._acceptEnvironment();if(t===null)break;var i;if(t==="algorithm")i=this._parseAlgorithmInner();else if(t==="algorithmic")i=this._parseAlgorithmicInner();else throw new ParseError("Unexpected environment "+t);this._closeEnvironment(t);e.addChild(i)}this._lexer.expect("EOF");return e};r.prototype._acceptEnvironment=function(){var e=this._lexer;if(!e.accept("func","begin"))return null;e.expect("open");var t=e.expect("ordinary");e.expect("close");return t};r.prototype._closeEnvironment=function(e){var t=this._lexer;t.expect("func","end");t.expect("open");t.expect("ordinary",e);t.expect("close")};r.prototype._parseAlgorithmInner=function(){var e=new a("algorithm");while(true){var t=this._acceptEnvironment();if(t!==null){if(t!=="algorithmic")throw new ParseError("Unexpected environment "+t);var i=this._parseAlgorithmicInner();this._closeEnvironment();e.addChild(i);continue}var h=this._parseCaption();if(h){e.addChild(h);continue}break}return e};r.prototype._parseAlgorithmicInner=function(){var e=new a("algorithmic");var t;while(true){t=this._parseCommand(l);if(t){e.addChild(t);continue}t=this._parseBlock();if(t.children.length>0){e.addChild(t);continue}break}return e};r.prototype._parseCaption=function(){var e=this._lexer;if(!e.accept("func","caption"))return null;var t=new a("caption");e.expect("open");t.addChild(this._parseCloseText());e.expect("close");return t};r.prototype._parseBlock=function(){var e=new a("block");while(true){var t=this._parseControl();if(t){e.addChild(t);continue}var i=this._parseFunction();if(i){e.addChild(i);continue}var h=this._parseCommand(p);if(h){e.addChild(h);continue}var s=this._parseComment();if(s){e.addChild(s);continue}break}return e};r.prototype._parseControl=function(){var e;if(e=this._parseIf())return e;if(e=this._parseLoop())return e};r.prototype._parseFunction=function(){var e=this._lexer;if(!e.accept("func",["function","procedure"]))return null;var t=this._lexer.get().text;e.expect("open");var i=e.expect("ordinary");e.expect("close");e.expect("open");var h=this._parseCloseText();e.expect("close");var s=this._parseBlock();e.expect("func","end"+t);var r=new a("function",{type:t,name:i});r.addChild(h);r.addChild(s);return r};r.prototype._parseIf=function(){if(!this._lexer.accept("func","if"))return null;var e=new a("if");this._lexer.expect("open");e.addChild(this._parseCond());this._lexer.expect("close");e.addChild(this._parseBlock());var t=0;while(this._lexer.accept("func",["elif","elsif","elseif"])){this._lexer.expect("open");e.addChild(this._parseCond());this._lexer.expect("close");e.addChild(this._parseBlock());t++}var i=false;if(this._lexer.accept("func","else")){i=true;e.addChild(this._parseBlock())}this._lexer.expect("func","endif");e.value={numElif:t,hasElse:i};return e};r.prototype._parseLoop=function(){if(!this._lexer.accept("func",["FOR","FORALL","WHILE"]))return null;var e=this._lexer.get().text.toLowerCase();var t=new a("loop",e);this._lexer.expect("open");t.addChild(this._parseCond());this._lexer.expect("close");t.addChild(this._parseBlock());var i=e!=="forall"?"end"+e:"endfor";this._lexer.expect("func",i);return t};var l=["ensure","require"];var p=["state","print","return"];r.prototype._parseCommand=function(e){if(!this._lexer.accept("func",e))return null;var t=this._lexer.get().text.toLowerCase();var i=new a("command",t);i.addChild(this._parseOpenText());return i};r.prototype._parseComment=function(){if(!this._lexer.accept("func","comment"))return null;var e=new a("comment");this._lexer.expect("open");e.addChild(this._parseCloseText());this._lexer.expect("close");return e};r.prototype._parseCall=function(){var e=this._lexer;if(!e.accept("func","call"))return null;var t=e.get().whitespace;e.expect("open");var i=e.expect("ordinary");e.expect("close");var h=new a("call");h.whitespace=t;h.value=i;e.expect("open");var s=this._parseCloseText();h.addChild(s);e.expect("close");return h};r.prototype._parseCond=r.prototype._parseCloseText=function(){return this._parseText("close")};r.prototype._parseOpenText=function(){return this._parseText("open")};r.prototype._parseText=function(e){var t=new a(e+"-text");var i=false;var h;while(true){h=this._parseAtom()||this._parseCall();if(h){if(i)h.whitespace|=i;t.addChild(h);continue}if(this._lexer.accept("open")){h=this._parseCloseText();i=this._lexer.get().whitespace;h.whitespace=i;t.addChild(h);this._lexer.expect("close");i=this._lexer.get().whitespace;continue}break}return t};var n={ordinary:{tokenType:"ordinary"},math:{tokenType:"math"},special:{tokenType:"special"},"cond-symbol":{tokenType:"func",tokenValues:["and","or","not","true","false","to"]},"quote-symbol":{tokenType:"quote"},"sizing-dclr":{tokenType:"func",tokenValues:["tiny","scriptsize","footnotesize","small","normalsize","large","Large","LARGE","huge","Huge"]},"font-dclr":{tokenType:"func",tokenValues:["normalfont","rmfamily","sffamily","ttfamily","upshape","itshape","slshape","scshape","bfseries","mdseries","lfseries"]},"font-cmd":{tokenType:"func",tokenValues:["textnormal","textrm","textsf","texttt","textup","textit","textsl","textsc","uppercase","lowercase","textbf","textmd","textlf"]},"text-symbol":{tokenType:"func",tokenValues:["textbackslash"]}};r.prototype._parseAtom=function(){for(var e in n){var t=n[e];var i=this._lexer.accept(t.tokenType,t.tokenValues);if(i===null)continue;var h=this._lexer.get().whitespace;return new s(e,i.toLowerCase(),h)}return null};t.exports=r},{"./utils":21}],20:[function(e,t,i){var h=e("katex");var a=e("./utils");function s(e){this._css={};this._fontSize=this._outerFontSize=e!==undefined?e:1}s.prototype.outerFontSize=function(e){if(e!==undefined)this._outerFontSize=e;return this._outerFontSize};s.prototype.fontSize=function(){return this._fontSize};s.prototype._fontCommandTable={normalfont:{"font-family":"KaTeX_Main"},rmfamily:{"font-family":"KaTeX_Main"},sffamily:{"font-family":"KaTeX_SansSerif"},ttfamily:{"font-family":"KaTeX_Typewriter"},bfseries:{"font-weight":"bold"},mdseries:{"font-weight":"medium"},lfseries:{"font-weight":"lighter"},upshape:{"font-style":"normal","font-variant":"normal"},itshape:{"font-style":"italic","font-variant":"normal"},scshape:{"font-style":"normal","font-variant":"small-caps"},slshape:{"font-style":"oblique","font-variant":"normal"},textnormal:{"font-family":"KaTeX_Main"},textrm:{"font-family":"KaTeX_Main"},textsf:{"font-family":"KaTeX_SansSerif"},texttt:{"font-family":"KaTeX_Typewriter"},textbf:{"font-weight":"bold"},textmd:{"font-weight":"medium"},textlf:{"font-weight":"lighter"},textup:{"font-style":"normal","font-variant":"normal"},textit:{"font-style":"italic","font-variant":"normal"},textsc:{"font-style":"normal","font-variant":"small-caps"},textsl:{"font-style":"oblique","font-variant":"normal"},uppercase:{"text-transform":"uppercase"},lowercase:{"text-transform":"lowercase"}};s.prototype._sizingScalesTable={tiny:.68,scriptsize:.8,footnotesize:.85,small:.92,normalsize:1,large:1.17,Large:1.41,LARGE:1.58,huge:1.9,Huge:2.28};s.prototype.updateByCommand=function(e){var t=this._fontCommandTable[e];if(t!==undefined){for(var i in t)this._css[i]=t[i];return}var h=this._sizingScalesTable[e];if(h!==undefined){this._outerFontSize=this._fontSize;this._fontSize=h;return}throw new ParserError("unrecogniazed text-style command")};s.prototype.toCSS=function(){var e="";for(var t in this._css){var i=this._css[t];if(i===undefined)continue;e+=t+":"+i+";"}if(this._fontSize!==this._outerFontSize){e+="font-size:"+this._fontSize/this._outerFontSize+"em;"}return e};function r(e,t){this._nodes=e;this._textStyle=t}r.prototype._renderCloseText=function(e){var t=new s(this._textStyle.fontSize());var i=new r(e.children,t);if(e.whitespace)this._html.putText(" ");this._html.putSpan(i.renderToHTML())};r.prototype.renderToHTML=function(){this._html=new l;var e;while((e=this._nodes.shift())!==undefined){var t=e.type;var i=e.value;if(e.whitespace)this._html.putText(" ");switch(t){case"ordinary":this._html.putText(i);break;case"math":var a=h.renderToString(i);this._html.putSpan(a);break;case"cond-symbol":this._html.beginSpan("ps-keyword").putText(i.toLowerCase()).endSpan();break;case"special":if(i==="\\\\"){this._html.putHTML("<br/>");break}var p={"\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_"};var n=p[i];this._html.putText(n);break;case"text-symbol":var c={textbackslash:"\\"};var o=c[i];this._html.putText(o);break;case"quote-symbol":var d={"`":"‘","``":"“","'":"’","''":"”"};var g=d[i];this._html.putText(g);break;case"call":this._html.beginSpan("ps-funcname").putText(i).endSpan();this._html.write("(");var u=e.children[0];this._renderCloseText(u);this._html.write(")");break;case"close-text":this._renderCloseText(e);break;case"font-dclr":case"sizing-dclr":this._textStyle.updateByCommand(i);this._html.beginSpan(null,this._textStyle.toCSS());var w=new r(this._nodes,this._textStyle);this._html.putSpan(w.renderToHTML());this._html.endSpan();break;case"font-cmd":var k=this._nodes[0];if(k.type!=="close-text")continue;var f=new s(this._textStyle.fontSize());f.updateByCommand(i);this._html.beginSpan(null,f.toCSS());var m=new r(k.children,f);this._html.putSpan(m.renderToHTML());this._html.endSpan();break;default:throw new ParseError("Unexpected ParseNode of type "+e.type)}}return this._html.toMarkup()};function l(){this._body=[];this._textBuf=[]}l.prototype.beginDiv=function(e,t,i){this._beginTag("div",e,t,i);this._body.push("\n");return this};l.prototype.endDiv=function(){this._endTag("div");this._body.push("\n");return this};l.prototype.beginP=function(e,t,i){this._beginTag("p",e,t,i);this._body.push("\n");return this};l.prototype.endP=function(){this._flushText();this._endTag("p");this._body.push("\n");return this};l.prototype.beginSpan=function(e,t,i){this._flushText();return this._beginTag("span",e,t,i)};l.prototype.endSpan=function(){this._flushText();return this._endTag("span")};l.prototype.putHTML=l.prototype.putSpan=function(e){this._flushText();this._body.push(e);return this};l.prototype.putText=function(e){this._textBuf.push(e);return this};l.prototype.write=function(e){this._body.push(e)};l.prototype.toMarkup=function(){this._flushText();var e=this._body.join("");return e.trim()};l.prototype.toDOM=function(){var e=this.toMarkup();var t=document.createElement("div");t.innerHTML=e;return t.firstChild};l.prototype._flushText=function(){if(this._textBuf.length===0)return;var e=this._textBuf.join("");this._body.push(this._escapeHtml(e));this._textBuf=[]};l.prototype._beginTag=function(e,t,i,h){var s="<"+e;if(t)s+=' class="'+t+'"';if(i){var r;if(a.isString(i))r=i;else{r="";for(var l in i){attrVal=i[l];r+=l+":"+attrVal+";"}}if(h)r+=h;s+=' style="'+r+'"'}s+=">";this._body.push(s);return this};l.prototype._endTag=function(e){this._body.push("</"+e+">");return this};var p={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};l.prototype._escapeHtml=function(e){return String(e).replace(/[&<>"'\/]/g,function(e){return p[e]})};function n(e){e=e||{};this.indentSize=e.indentSize?this._parseEmVal(e.indentSize):1.2;this.commentDelimiter=e.commentDelimiter||" // ";this.lineNumberPunc=e.lineNumberPunc||":";this.lineNumber=e.lineNumber!==undefined?e.lineNumber:false;this.noEnd=e.noEnd!==undefined?e.noEnd:false;if(e.captionCount!==undefined)c.captionCount=e.captionCount}n.prototype._parseEmVal=function(e){e=e.trim();if(e.indexOf("em")!==e.length-2)throw"option unit error; no `em` found";return Number(e.substring(0,e.length-2))};function c(e,t){this._root=e.parse();this._options=new n(t);this._openLine=false;this._blockLevel=0;this._textLevel=-1;this._globalTextStyle=new s}c.captionCount=0;c.prototype.toMarkup=function(){var e=this._html=new l;this._buildTree(this._root);delete this._html;return e.toMarkup()};c.prototype.toDOM=function(){var e=this.toMarkup();var t=document.createElement("div");t.innerHTML=e;return t.firstChild};c.prototype._beginGroup=function(e,t,i){this._closeLineIfAny();this._html.beginDiv("ps-"+e+(t?" "+t:""),i)};c.prototype._endGroup=function(e){this._closeLineIfAny();this._html.endDiv()};c.prototype._beginBlock=function(){var e=this._options.lineNumber&&this._blockLevel===0?.6:0;var t=this._options.indentSize+e;this._beginGroup("block",null,{"margin-left":t+"em"});
+this._blockLevel++};c.prototype._endBlock=function(){this._closeLineIfAny();this._endGroup();this._blockLevel--};c.prototype._newLine=function(){this._closeLineIfAny();this._openLine=true;this._globalTextStyle.outerFontSize(1);var e=this._options.indentSize;if(this._blockLevel>0){this._numLOC++;this._html.beginP("ps-line ps-code",this._globalTextStyle.toCSS());if(this._options.lineNumber){this._html.beginSpan("ps-linenum",{left:-((this._blockLevel-1)*(e*1.25))+"em"}).putText(this._numLOC+this._options.lineNumberPunc).endSpan()}}else{this._html.beginP("ps-line",{"text-indent":-e+"em","padding-left":e+"em"},this._globalTextStyle.toCSS())}};c.prototype._closeLineIfAny=function(){if(!this._openLine)return;this._html.endP();this._openLine=false};c.prototype._typeKeyword=function(e){this._html.beginSpan("ps-keyword").putText(e).endSpan()};c.prototype._typeFuncName=function(e){this._html.beginSpan("ps-funcname").putText(e).endSpan()};c.prototype._typeText=function(e){this._html.write(e)};c.prototype._buildTreeForAllChildren=function(e){var t=e.children;for(var i=0;i<t.length;i++)this._buildTree(t[i])};c.prototype._buildCommentsFromBlock=function(e){var t=e.children;while(t.length>0&&t[0].type==="comment"){var i=t.shift();this._buildTree(i)}};c.prototype._buildTree=function(e){var t,i,h;switch(e.type){case"root":this._beginGroup("root");this._buildTreeForAllChildren(e);this._endGroup();break;case"algorithm":var a;for(t=0;t<e.children.length;t++){i=e.children[t];if(i.type!=="caption")continue;a=i;c.captionCount++}if(a){this._beginGroup("algorithm","with-caption");this._buildTree(a)}else{this._beginGroup("algorithm")}for(t=0;t<e.children.length;t++){i=e.children[t];if(i.type==="caption")continue;this._buildTree(i)}this._endGroup();break;case"algorithmic":if(this._options.lineNumber){this._beginGroup("algorithmic","with-linenum");this._numLOC=0}else{this._beginGroup("algorithmic")}this._buildTreeForAllChildren(e);this._endGroup();break;case"block":this._beginBlock();this._buildTreeForAllChildren(e);this._endBlock();break;case"function":var l=e.value.type.toLowerCase();var p=e.value.name;h=e.children[0];var n=e.children[1];this._newLine();this._typeKeyword(l+" ");this._typeFuncName(p);this._typeText("(");this._buildTree(h);this._typeText(")");this._buildCommentsFromBlock(n);this._buildTree(n);if(!this._options.noEnd){this._newLine();this._typeKeyword("end "+l)}break;case"if":this._newLine();this._typeKeyword("if ");ifCond=e.children[0];this._buildTree(ifCond);this._typeKeyword(" then");var o=e.children[1];this._buildCommentsFromBlock(o);this._buildTree(o);var d=e.value.numElif;for(var g=0;g<d;g++){this._newLine();this._typeKeyword("else if ");var u=e.children[2+2*g];this._buildTree(u);this._typeKeyword(" then");var w=e.children[2+2*g+1];this._buildCommentsFromBlock(w);this._buildTree(w)}var k=e.value.hasElse;if(k){this._newLine();this._typeKeyword("else");var f=e.children[e.children.length-1];this._buildCommentsFromBlock(f);this._buildTree(f)}if(!this._options.noEnd){this._newLine();this._typeKeyword("end if")}break;case"loop":this._newLine();var m=e.value;var v={"for":"for",forall:"for all","while":"while"};this._typeKeyword(v[m]+" ");var y=e.children[0];this._buildTree(y);this._typeKeyword(" do");var x=e.children[1];this._buildCommentsFromBlock(x);this._buildTree(x);if(!this._options.noEnd){this._newLine();var b=m==="while"?"end while":"end for";this._typeKeyword(b)}break;case"command":var _=e.value;var z={state:"",ensure:"Ensure: ",require:"Require: ",print:"print ","return":"return "}[_];this._newLine();if(z)this._typeKeyword(z);h=e.children[0];this._buildTree(h);break;case"caption":this._newLine();this._typeKeyword("Algorithm ");h=e.children[0];this._buildTree(h);break;case"comment":h=e.children[0];this._html.beginSpan("ps-comment");this._html.putText(this._options.commentDelimiter);this._buildTree(h);this._html.endSpan();break;case"open-text":var S=new r(e.children,this._globalTextStyle);this._html.putSpan(S.renderToHTML());break;case"close-text":var T=this._globalTextStyle.fontSize();var C=new s(T);var M=new r(e.children,C);this._html.putSpan(M.renderToHTML());break;default:throw new ParseError("Unexpected ParseNode of type "+e.type)}};t.exports=c},{"./utils":21,katex:1}],21:[function(e,t,i){function h(e){return typeof e==="string"||e instanceof String}function a(e){return typeof e==="object"&&e instanceof Object}function s(e){if(!a(e))return e+"";var t=[];for(var i in e)t.push(i+": "+s(e[i]));return t.join(", ")}t.exports={isString:h,isObject:a,toString:s}},{}]},{},[16])(16)});
\ No newline at end of file
diff --git a/source/javascripts/skel.min.js b/source/javascripts/skel.min.js
new file mode 100644
index 0000000..4f6a674
--- /dev/null
+++ b/source/javascripts/skel.min.js
@@ -0,0 +1,2 @@
+/* skel.js v3.0.0 | (c) n33 | skel.io | MIT licensed */
+var skel=function(){"use strict";var t={breakpointIds:null,events:{},isInit:!1,obj:{attachments:{},breakpoints:{},head:null,states:{}},sd:"/",state:null,stateHandlers:{},stateId:"",vars:{},DOMReady:null,indexOf:null,isArray:null,iterate:null,matchesMedia:null,extend:function(e,n){t.iterate(n,function(i){t.isArray(n[i])?(t.isArray(e[i])||(e[i]=[]),t.extend(e[i],n[i])):"object"==typeof n[i]?("object"!=typeof e[i]&&(e[i]={}),t.extend(e[i],n[i])):e[i]=n[i]})},newStyle:function(t){var e=document.createElement("style");return e.type="text/css",e.innerHTML=t,e},_canUse:null,canUse:function(e){t._canUse||(t._canUse=document.createElement("div"));var n=t._canUse.style,i=e.charAt(0).toUpperCase()+e.slice(1);return e in n||"Moz"+i in n||"Webkit"+i in n||"O"+i in n||"ms"+i in n},on:function(e,n){var i=e.split(/[\s]+/);return t.iterate(i,function(e){var a=i[e];if(t.isInit){if("init"==a)return void n();if("change"==a)n();else{var r=a.charAt(0);if("+"==r||"!"==r){var o=a.substring(1);if(o in t.obj.breakpoints)if("+"==r&&t.obj.breakpoints[o].active)n();else if("!"==r&&!t.obj.breakpoints[o].active)return void n()}}}t.events[a]||(t.events[a]=[]),t.events[a].push(n)}),t},trigger:function(e){return t.events[e]&&0!=t.events[e].length?(t.iterate(t.events[e],function(n){t.events[e][n]()}),t):void 0},breakpoint:function(e){return t.obj.breakpoints[e]},breakpoints:function(e){function n(t,e){this.name=this.id=t,this.media=e,this.active=!1,this.wasActive=!1}return n.prototype.matches=function(){return t.matchesMedia(this.media)},n.prototype.sync=function(){this.wasActive=this.active,this.active=this.matches()},t.iterate(e,function(i){t.obj.breakpoints[i]=new n(i,e[i])}),window.setTimeout(function(){t.poll()},0),t},addStateHandler:function(e,n){t.stateHandlers[e]=n},callStateHandler:function(e){var n=t.stateHandlers[e]();t.iterate(n,function(e){t.state.attachments.push(n[e])})},changeState:function(e){t.iterate(t.obj.breakpoints,function(e){t.obj.breakpoints[e].sync()}),t.vars.lastStateId=t.stateId,t.stateId=e,t.breakpointIds=t.stateId===t.sd?[]:t.stateId.substring(1).split(t.sd),t.obj.states[t.stateId]?t.state=t.obj.states[t.stateId]:(t.obj.states[t.stateId]={attachments:[]},t.state=t.obj.states[t.stateId],t.iterate(t.stateHandlers,t.callStateHandler)),t.detachAll(t.state.attachments),t.attachAll(t.state.attachments),t.vars.stateId=t.stateId,t.vars.state=t.state,t.trigger("change"),t.iterate(t.obj.breakpoints,function(e){t.obj.breakpoints[e].active?t.obj.breakpoints[e].wasActive||t.trigger("+"+e):t.obj.breakpoints[e].wasActive&&t.trigger("-"+e)})},generateStateConfig:function(e,n){var i={};return t.extend(i,e),t.iterate(t.breakpointIds,function(e){t.extend(i,n[t.breakpointIds[e]])}),i},getStateId:function(){var e="";return t.iterate(t.obj.breakpoints,function(n){var i=t.obj.breakpoints[n];i.matches()&&(e+=t.sd+i.id)}),e},poll:function(){var e="";e=t.getStateId(),""===e&&(e=t.sd),e!==t.stateId&&t.changeState(e)},_attach:null,attach:function(e){var n=t.obj.head,i=e.element;return i.parentNode&&i.parentNode.tagName?!1:(t._attach||(t._attach=n.firstChild),n.insertBefore(i,t._attach.nextSibling),e.permanent&&(t._attach=i),!0)},attachAll:function(e){var n=[];t.iterate(e,function(t){n[e[t].priority]||(n[e[t].priority]=[]),n[e[t].priority].push(e[t])}),n.reverse(),t.iterate(n,function(e){t.iterate(n[e],function(i){t.attach(n[e][i])})})},detach:function(t){var e=t.element;return t.permanent||!e.parentNode||e.parentNode&&!e.parentNode.tagName?!1:(e.parentNode.removeChild(e),!0)},detachAll:function(e){var n={};t.iterate(e,function(t){n[e[t].id]=!0}),t.iterate(t.obj.attachments,function(e){e in n||t.detach(t.obj.attachments[e])})},attachment:function(e){return e in t.obj.attachments?t.obj.attachments[e]:null},newAttachment:function(e,n,i,a){return t.obj.attachments[e]={id:e,element:n,priority:i,permanent:a}},init:function(){t.initMethods(),t.initVars(),t.initEvents(),t.obj.head=document.getElementsByTagName("head")[0],t.isInit=!0,t.trigger("init")},initEvents:function(){t.on("resize",function(){t.poll()}),t.on("orientationChange",function(){t.poll()}),t.DOMReady(function(){t.trigger("ready")}),window.onload&&t.on("load",window.onload),window.onload=function(){t.trigger("load")},window.onresize&&t.on("resize",window.onresize),window.onresize=function(){t.trigger("resize")},window.onorientationchange&&t.on("orientationChange",window.onorientationchange),window.onorientationchange=function(){t.trigger("orientationChange")}},initMethods:function(){document.addEventListener?!function(e,n){t.DOMReady=n()}("domready",function(){function t(t){for(r=1;t=n.shift();)t()}var e,n=[],i=document,a="DOMContentLoaded",r=/^loaded|^c/.test(i.readyState);return i.addEventListener(a,e=function(){i.removeEventListener(a,e),t()}),function(t){r?t():n.push(t)}}):!function(e,n){t.DOMReady=n()}("domready",function(t){function e(t){for(h=1;t=i.shift();)t()}var n,i=[],a=!1,r=document,o=r.documentElement,s=o.doScroll,c="DOMContentLoaded",d="addEventListener",u="onreadystatechange",l="readyState",f=s?/^loaded|^c/:/^loaded|c/,h=f.test(r[l]);return r[d]&&r[d](c,n=function(){r.removeEventListener(c,n,a),e()},a),s&&r.attachEvent(u,n=function(){/^c/.test(r[l])&&(r.detachEvent(u,n),e())}),t=s?function(e){self!=top?h?e():i.push(e):function(){try{o.doScroll("left")}catch(n){return setTimeout(function(){t(e)},50)}e()}()}:function(t){h?t():i.push(t)}}),Array.prototype.indexOf?t.indexOf=function(t,e){return t.indexOf(e)}:t.indexOf=function(t,e){if("string"==typeof t)return t.indexOf(e);var n,i,a=e?e:0;if(!this)throw new TypeError;if(i=this.length,0===i||a>=i)return-1;for(0>a&&(a=i-Math.abs(a)),n=a;i>n;n++)if(this[n]===t)return n;return-1},Array.isArray?t.isArray=function(t){return Array.isArray(t)}:t.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)},Object.keys?t.iterate=function(t,e){if(!t)return[];var n,i=Object.keys(t);for(n=0;i[n]&&e(i[n],t[i[n]])!==!1;n++);}:t.iterate=function(t,e){if(!t)return[];var n;for(n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(n,t[n])===!1)break},window.matchMedia?t.matchesMedia=function(t){return""==t?!0:window.matchMedia(t).matches}:window.styleMedia||window.media?t.matchesMedia=function(t){if(""==t)return!0;var e=window.styleMedia||window.media;return e.matchMedium(t||"all")}:window.getComputedStyle?t.matchesMedia=function(t){if(""==t)return!0;var e=document.createElement("style"),n=document.getElementsByTagName("script")[0],i=null;e.type="text/css",e.id="matchmediajs-test",n.parentNode.insertBefore(e,n),i="getComputedStyle"in window&&window.getComputedStyle(e,null)||e.currentStyle;var a="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return e.styleSheet?e.styleSheet.cssText=a:e.textContent=a,"1px"===i.width}:t.matchesMedia=function(t){if(""==t)return!0;var e,n,i,a,r={"min-width":null,"max-width":null},o=!1;for(i=t.split(/\s+and\s+/),e=0;e<i.length;e++)n=i[e],"("==n.charAt(0)&&(n=n.substring(1,n.length-1),a=n.split(/:\s+/),2==a.length&&(r[a[0].replace(/^\s+|\s+$/g,"")]=parseInt(a[1]),o=!0));if(!o)return!1;var s=document.documentElement.clientWidth,c=document.documentElement.clientHeight;return null!==r["min-width"]&&s<r["min-width"]||null!==r["max-width"]&&s>r["max-width"]||null!==r["min-height"]&&c<r["min-height"]||null!==r["max-height"]&&c>r["max-height"]?!1:!0},navigator.userAgent.match(/MSIE ([0-9]+)/)&&RegExp.$1<9&&(t.newStyle=function(t){var e=document.createElement("span");return e.innerHTML='&nbsp;<style type="text/css">'+t+"</style>",e})},initVars:function(){var e,n,i,a=navigator.userAgent;e="other",n=0,i=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],t.iterate(i,function(t,i){return a.match(i[1])?(e=i[0],n=parseFloat(RegExp.$1),!1):void 0}),t.vars.browser=e,t.vars.browserVersion=n,e="other",n=0,i=[["ios",/([0-9_]+) like Mac OS X/,function(t){return t.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(t){return 0}],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(t){return t.replace("_",".").replace("_","")}],["wp",/Windows Phone ([0-9\.]+)/,null],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null]],t.iterate(i,function(t,i){return a.match(i[1])?(e=i[0],n=parseFloat(i[2]?i[2](RegExp.$1):RegExp.$1),!1):void 0}),t.vars.os=e,t.vars.osVersion=n,t.vars.IEVersion="ie"==t.vars.browser?t.vars.browserVersion:99,t.vars.touch="wp"==t.vars.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),t.vars.mobile="wp"==t.vars.os||"android"==t.vars.os||"ios"==t.vars.os||"bb"==t.vars.os}};return t.init(),t}();!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.skel=e()}(this,function(){return skel});
diff --git a/source/javascripts/util.js b/source/javascripts/util.js
new file mode 100644
index 0000000..ecf7b37
--- /dev/null
+++ b/source/javascripts/util.js
@@ -0,0 +1,587 @@
+(function($) {
+
+	/**
+	 * Generate an indented list of links from a nav. Meant for use with panel().
+	 * @return {jQuery} jQuery object.
+	 */
+	$.fn.navList = function() {
+
+		var	$this = $(this);
+			$a = $this.find('a'),
+			b = [];
+
+		$a.each(function() {
+
+			var	$this = $(this),
+				indent = Math.max(0, $this.parents('li').length - 1),
+				href = $this.attr('href'),
+				target = $this.attr('target');
+
+			b.push(
+				'<a ' +
+					'class="link depth-' + indent + '"' +
+					( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
+					( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
+				'>' +
+					'<span class="indent-' + indent + '"></span>' +
+					$this.text() +
+				'</a>'
+			);
+
+		});
+
+		return b.join('');
+
+	};
+
+	/**
+	 * Panel-ify an element.
+	 * @param {object} userConfig User config.
+	 * @return {jQuery} jQuery object.
+	 */
+	$.fn.panel = function(userConfig) {
+
+		// No elements?
+			if (this.length == 0)
+				return $this;
+
+		// Multiple elements?
+			if (this.length > 1) {
+
+				for (var i=0; i < this.length; i++)
+					$(this[i]).panel(userConfig);
+
+				return $this;
+
+			}
+
+		// Vars.
+			var	$this = $(this),
+				$body = $('body'),
+				$window = $(window),
+				id = $this.attr('id'),
+				config;
+
+		// Config.
+			config = $.extend({
+
+				// Delay.
+					delay: 0,
+
+				// Hide panel on link click.
+					hideOnClick: false,
+
+				// Hide panel on escape keypress.
+					hideOnEscape: false,
+
+				// Hide panel on swipe.
+					hideOnSwipe: false,
+
+				// Reset scroll position on hide.
+					resetScroll: false,
+
+				// Reset forms on hide.
+					resetForms: false,
+
+				// Side of viewport the panel will appear.
+					side: null,
+
+				// Target element for "class".
+					target: $this,
+
+				// Class to toggle.
+					visibleClass: 'visible'
+
+			}, userConfig);
+
+			// Expand "target" if it's not a jQuery object already.
+				if (typeof config.target != 'jQuery')
+					config.target = $(config.target);
+
+		// Panel.
+
+			// Methods.
+				$this._hide = function(event) {
+
+					// Already hidden? Bail.
+						if (!config.target.hasClass(config.visibleClass))
+							return;
+
+					// If an event was provided, cancel it.
+						if (event) {
+
+							event.preventDefault();
+							event.stopPropagation();
+
+						}
+
+					// Hide.
+						config.target.removeClass(config.visibleClass);
+
+					// Post-hide stuff.
+						window.setTimeout(function() {
+
+							// Reset scroll position.
+								if (config.resetScroll)
+									$this.scrollTop(0);
+
+							// Reset forms.
+								if (config.resetForms)
+									$this.find('form').each(function() {
+										this.reset();
+									});
+
+						}, config.delay);
+
+				};
+
+			// Vendor fixes.
+				$this
+					.css('-ms-overflow-style', '-ms-autohiding-scrollbar')
+					.css('-webkit-overflow-scrolling', 'touch');
+
+			// Hide on click.
+				if (config.hideOnClick) {
+
+					$this.find('a')
+						.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
+
+					$this
+						.on('click', 'a', function(event) {
+
+							var $a = $(this),
+								href = $a.attr('href'),
+								target = $a.attr('target');
+
+							if (!href || href == '#' || href == '' || href == '#' + id)
+								return;
+
+							// Cancel original event.
+								event.preventDefault();
+								event.stopPropagation();
+
+							// Hide panel.
+								$this._hide();
+
+							// Redirect to href.
+								window.setTimeout(function() {
+
+									if (target == '_blank')
+										window.open(href);
+									else
+										window.location.href = href;
+
+								}, config.delay + 10);
+
+						});
+
+				}
+
+			// Event: Touch stuff.
+				$this.on('touchstart', function(event) {
+
+					$this.touchPosX = event.originalEvent.touches[0].pageX;
+					$this.touchPosY = event.originalEvent.touches[0].pageY;
+
+				})
+
+				$this.on('touchmove', function(event) {
+
+					if ($this.touchPosX === null
+					||	$this.touchPosY === null)
+						return;
+
+					var	diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
+						diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
+						th = $this.outerHeight(),
+						ts = ($this.get(0).scrollHeight - $this.scrollTop());
+
+					// Hide on swipe?
+						if (config.hideOnSwipe) {
+
+							var result = false,
+								boundary = 20,
+								delta = 50;
+
+							switch (config.side) {
+
+								case 'left':
+									result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
+									break;
+
+								case 'right':
+									result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
+									break;
+
+								case 'top':
+									result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
+									break;
+
+								case 'bottom':
+									result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
+									break;
+
+								default:
+									break;
+
+							}
+
+							if (result) {
+
+								$this.touchPosX = null;
+								$this.touchPosY = null;
+								$this._hide();
+
+								return false;
+
+							}
+
+						}
+
+					// Prevent vertical scrolling past the top or bottom.
+						if (($this.scrollTop() < 0 && diffY < 0)
+						|| (ts > (th - 2) && ts < (th + 2) && diffY > 0)) {
+
+							event.preventDefault();
+							event.stopPropagation();
+
+						}
+
+				});
+
+			// Event: Prevent certain events inside the panel from bubbling.
+				$this.on('click touchend touchstart touchmove', function(event) {
+					event.stopPropagation();
+				});
+
+			// Event: Hide panel if a child anchor tag pointing to its ID is clicked.
+				$this.on('click', 'a[href="#' + id + '"]', function(event) {
+
+					event.preventDefault();
+					event.stopPropagation();
+
+					config.target.removeClass(config.visibleClass);
+
+				});
+
+		// Body.
+
+			// Event: Hide panel on body click/tap.
+				$body.on('click touchend', function(event) {
+					$this._hide(event);
+				});
+
+			// Event: Toggle.
+				$body.on('click', 'a[href="#' + id + '"]', function(event) {
+
+					event.preventDefault();
+					event.stopPropagation();
+
+					config.target.toggleClass(config.visibleClass);
+
+				});
+
+		// Window.
+
+			// Event: Hide on ESC.
+				if (config.hideOnEscape)
+					$window.on('keydown', function(event) {
+
+						if (event.keyCode == 27)
+							$this._hide(event);
+
+					});
+
+		return $this;
+
+	};
+
+	/**
+	 * Apply "placeholder" attribute polyfill to one or more forms.
+	 * @return {jQuery} jQuery object.
+	 */
+	$.fn.placeholder = function() {
+
+		// Browser natively supports placeholders? Bail.
+			if (typeof (document.createElement('input')).placeholder != 'undefined')
+				return $(this);
+
+		// No elements?
+			if (this.length == 0)
+				return $this;
+
+		// Multiple elements?
+			if (this.length > 1) {
+
+				for (var i=0; i < this.length; i++)
+					$(this[i]).placeholder();
+
+				return $this;
+
+			}
+
+		// Vars.
+			var $this = $(this);
+
+		// Text, TextArea.
+			$this.find('input[type=text],textarea')
+				.each(function() {
+
+					var i = $(this);
+
+					if (i.val() == ''
+					||  i.val() == i.attr('placeholder'))
+						i
+							.addClass('polyfill-placeholder')
+							.val(i.attr('placeholder'));
+
+				})
+				.on('blur', function() {
+
+					var i = $(this);
+
+					if (i.attr('name').match(/-polyfill-field$/))
+						return;
+
+					if (i.val() == '')
+						i
+							.addClass('polyfill-placeholder')
+							.val(i.attr('placeholder'));
+
+				})
+				.on('focus', function() {
+
+					var i = $(this);
+
+					if (i.attr('name').match(/-polyfill-field$/))
+						return;
+
+					if (i.val() == i.attr('placeholder'))
+						i
+							.removeClass('polyfill-placeholder')
+							.val('');
+
+				});
+
+		// Password.
+			$this.find('input[type=password]')
+				.each(function() {
+
+					var i = $(this);
+					var x = $(
+								$('<div>')
+									.append(i.clone())
+									.remove()
+									.html()
+									.replace(/type="password"/i, 'type="text"')
+									.replace(/type=password/i, 'type=text')
+					);
+
+					if (i.attr('id') != '')
+						x.attr('id', i.attr('id') + '-polyfill-field');
+
+					if (i.attr('name') != '')
+						x.attr('name', i.attr('name') + '-polyfill-field');
+
+					x.addClass('polyfill-placeholder')
+						.val(x.attr('placeholder')).insertAfter(i);
+
+					if (i.val() == '')
+						i.hide();
+					else
+						x.hide();
+
+					i
+						.on('blur', function(event) {
+
+							event.preventDefault();
+
+							var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
+
+							if (i.val() == '') {
+
+								i.hide();
+								x.show();
+
+							}
+
+						});
+
+					x
+						.on('focus', function(event) {
+
+							event.preventDefault();
+
+							var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
+
+							x.hide();
+
+							i
+								.show()
+								.focus();
+
+						})
+						.on('keypress', function(event) {
+
+							event.preventDefault();
+							x.val('');
+
+						});
+
+				});
+
+		// Events.
+			$this
+				.on('submit', function() {
+
+					$this.find('input[type=text],input[type=password],textarea')
+						.each(function(event) {
+
+							var i = $(this);
+
+							if (i.attr('name').match(/-polyfill-field$/))
+								i.attr('name', '');
+
+							if (i.val() == i.attr('placeholder')) {
+
+								i.removeClass('polyfill-placeholder');
+								i.val('');
+
+							}
+
+						});
+
+				})
+				.on('reset', function(event) {
+
+					event.preventDefault();
+
+					$this.find('select')
+						.val($('option:first').val());
+
+					$this.find('input,textarea')
+						.each(function() {
+
+							var i = $(this),
+								x;
+
+							i.removeClass('polyfill-placeholder');
+
+							switch (this.type) {
+
+								case 'submit':
+								case 'reset':
+									break;
+
+								case 'password':
+									i.val(i.attr('defaultValue'));
+
+									x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
+
+									if (i.val() == '') {
+										i.hide();
+										x.show();
+									}
+									else {
+										i.show();
+										x.hide();
+									}
+
+									break;
+
+								case 'checkbox':
+								case 'radio':
+									i.attr('checked', i.attr('defaultValue'));
+									break;
+
+								case 'text':
+								case 'textarea':
+									i.val(i.attr('defaultValue'));
+
+									if (i.val() == '') {
+										i.addClass('polyfill-placeholder');
+										i.val(i.attr('placeholder'));
+									}
+
+									break;
+
+								default:
+									i.val(i.attr('defaultValue'));
+									break;
+
+							}
+						});
+
+				});
+
+		return $this;
+
+	};
+
+	/**
+	 * Moves elements to/from the first positions of their respective parents.
+	 * @param {jQuery} $elements Elements (or selector) to move.
+	 * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
+	 */
+	$.prioritize = function($elements, condition) {
+
+		var key = '__prioritize';
+
+		// Expand $elements if it's not already a jQuery object.
+			if (typeof $elements != 'jQuery')
+				$elements = $($elements);
+
+		// Step through elements.
+			$elements.each(function() {
+
+				var	$e = $(this), $p,
+					$parent = $e.parent();
+
+				// No parent? Bail.
+					if ($parent.length == 0)
+						return;
+
+				// Not moved? Move it.
+					if (!$e.data(key)) {
+
+						// Condition is false? Bail.
+							if (!condition)
+								return;
+
+						// Get placeholder (which will serve as our point of reference for when this element needs to move back).
+							$p = $e.prev();
+
+							// Couldn't find anything? Means this element's already at the top, so bail.
+								if ($p.length == 0)
+									return;
+
+						// Move element to top of parent.
+							$e.prependTo($parent);
+
+						// Mark element as moved.
+							$e.data(key, $p);
+
+					}
+
+				// Moved already?
+					else {
+
+						// Condition is true? Bail.
+							if (condition)
+								return;
+
+						$p = $e.data(key);
+
+						// Move element back to its original location (using our placeholder).
+							$e.insertAfter($p);
+
+						// Unmark element as moved.
+							$e.removeData(key);
+
+					}
+
+			});
+
+	};
+
+})(jQuery);
\ No newline at end of file
diff --git a/source/layouts/layout.haml b/source/layouts/layout.haml
index 8e0555c..9b50857 100644
--- a/source/layouts/layout.haml
+++ b/source/layouts/layout.haml
@@ -1,67 +1,3 @@
--#!!! 5
--#%html
--#  %head
--#    %title= page_title
--#    %meta{name: :description, content: page_description}
--#    %meta{charset: 'utf-8'}
--#    %meta{name: :viewport, content: 'width=device-width, initial-scale=1.0'}
--#    %meta{'http-equiv' => 'X-UA-Compatible', content: 'IE=edge'}
--#    %meta{name: 'HandheldFriendly', content: 'True'}
--#
--#    -# Open Graph Tags
--#    %meta{property: "og:site_name", content: blog_settings.name}
--#    %meta{property: "og:type", content: og_type}
--#    - if og_title.present?
--#      %meta{property: "og:title", content: og_title}
--#    %meta{property: "og:description", content: page_description}
--#    %meta{property: "og:url", content: URI.join(blog_settings.url, current_page.url)}
--#    - if cover?
--#      %meta{property: "og:image", content: URI.join(blog_settings.url, image_path(current_page.data.cover))}
--#    - if is_blog_article?
--#      %meta{property: "article:published_time", content: current_article.date.strftime('%Y-%m-%d')}
--#
--#    -# Twitter Card Tags
--#    %meta{name: "twitter:card", content: "summary"}
--#    - if blog_author.twitter.present?
--#      %meta{name: "twitter:site", content: blog_author.twitter}
--#    - if twitter_title.present?
--#      %meta{name: "twitter:title", content: twitter_title}
--#    %meta{name: "twitter:description", content: page_description}
--#    %meta{name: "twitter:url", content: URI.join(blog_settings.url, current_page.url)}
--#    - if cover?
--#      %meta{name: "twitter:image:src", content: URI.join(blog_settings.url, image_path(current_page.data.cover))}
--#
--#    = feed_tag :atom, "#{blog.options.prefix.to_s}/feed.xml", title: "Atom Feed"
--#    = favicon_tag 'images/favicon.ico'
--#    %link{rel: :stylesheet, type: 'text/css', href: '//fonts.googleapis.com/css?family=Merriweather:300,700,700italic,300italic|Open+Sans:700,400'}
--#    = stylesheet_link_tag :application
--#  %body{class: "#{page_class} nav-closed"}
--#
--#    = partial('shared/navigation')
--#
--#    .site-wrapper
--#      = yield
--#
--#      %footer.site-footer.clearfix
--#        %section.copyright
--#          %a{href: home_path}= blog_settings.name
--#          &copy;
--#          = Time.now.year
--#        %section.poweredby
--#          -#
--#            Proudly published with
--#            %a{href: 'http://middlemanapp.com'} Middleman
--#          Casper theme powered by
--#          %a{href: 'https://ghost.org'} Ghost
--#
--#    = javascript_include_tag :application
-
-
-
-
-
-
-
 !!! 5
 %html
   %head
@@ -73,6 +9,8 @@
     %meta{:content => "True", :name => "HandheldFriendly"}
     %meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}
     = favicon_tag 'images/favicon.ico'
+    = stylesheet_link_tag :katex
+    = stylesheet_link_tag :pseudocode
     = stylesheet_link_tag :application
     = feed_tag :atom, "#{blog.options.prefix.to_s}/feed.xml", title: "Atom Feed"
     %meta{name: 'HandheldFriendly', content: 'True'}
@@ -135,4 +73,30 @@
             %a{href: 'https://github.com/Syncleus/middleman-ghoststa'} Ghoststa theme
             by
             %a{href: 'http://syncleus.com'} Syncleus
-    = javascript_include_tag :application
+    = javascript_include_tag :ghoststa_vendor
+    = javascript_include_tag :ghoststa
+    = javascript_include_tag :katex
+    = javascript_include_tag :pseudocode
+    %script{:src => "//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML", :type => "text/javascript"}
+
+    :javascript
+      var blocks = document.getElementsByClassName("pseudocode");
+      for(var blockId = 0; blockId < blocks.length; blockId++) {
+        var block = blocks[blockId];
+
+        var code = block.textContent;
+        var options = {
+          lineNumber: true
+        };
+
+        var outputEl = document.createElement('div');
+        outputEl.className += " pseudocode-out";
+        block.parentNode.insertBefore(outputEl, block.nextSibling);
+
+        pseudocode.render(code, outputEl, options);
+      }
+
+      while( blocks[0]) {
+        blocks[0].parentNode.removeChild(blocks[0]);
+      }
+
diff --git a/source/layouts/page.haml b/source/layouts/page.haml
index cc085f9..10b153d 100644
--- a/source/layouts/page.haml
+++ b/source/layouts/page.haml
@@ -5,7 +5,7 @@
         = current_page.data.title
   %main#content.container
     .row
-      .col-md-9
+      .col-md-12
         %article.post
           %section.post-content= yield
         %section.share.text-center
@@ -20,4 +20,4 @@
           %a.share-google-plus{:href => "https://plus.google.com/share?url=#{URI.join(blog_settings.url, current_page.url)}", :onclick => "window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;", :true => ""}
             %span.fa-stack.fa-lg
               %i.fa.fa-circle.fa-stack-2x
-              %i.fa.fa-google.fa-stack-1x.fa-inverse
+              %i.fa.fa-google.fa-stack-1x.fa-inverse
\ No newline at end of file
diff --git a/source/layouts/post.haml b/source/layouts/post.haml
index b9b3374..4d53625 100644
--- a/source/layouts/post.haml
+++ b/source/layouts/post.haml
@@ -1,82 +1,9 @@
--#= wrap_layout :layout do
--#  %header.main-header.post-head{cover}
--#    %nav.main-nav.clearfix{class: cover? ? 'overlay' : nil}
--#      - if blog_settings.logo.present?
--#        %a.blog-logo{href: home_path}
--#          = image_tag blog_settings.logo, alt: blog_settings.name
--#      - if blog_settings.navigation
--#        %a.menu-button.icon-menu{href: '#'}
--#          %span.word Menu
--#
--#  %main.content{role: :main}
--#    %article.post
--#      %header.post-header
--#        %h1.post-title= current_article.title
--#        %section.post-meta
--#          %time.post-date{datetime: current_article.date.strftime('%Y-%m-%d')}
--#            = current_article.date.strftime(blog_settings.date_format)
--#          - if tags?
--#            on #{tags}
--#
--#      %section.post-content= yield
--#
--#      %footer.post-footer
--#        - if gravatar?
--#          %figure.author-image
--#            %a.img{href: author_path, style: "background-image: url(#{gravatar})"}
--#              %span.hidden #{blog_author.name}'s Picture
--#        %section.author
--#          %h4
--#            %a{href: author_path}= blog_author.name
--#
--#          %p
--#          - if blog_author.bio.present?
--#            = blog_author.bio
--#          - else
--#            Read
--#            %a{href: author_path} more posts
--#            by this author.
--#
--#          - if blog_author.location.present? || blog_author.website.present?
--#            .author-meta
--#              - if blog_author.location.present?
--#                %span.author-location.icon-location= blog_author.location
--#              - if blog_author.website.present?
--#                %span.author-link.icon-link
--#                  %a{href: blog_author.website}= blog_author.website
--#
--#        %section.share
--#          %h4 Share this post
--#          %a.icon-twitter{href: twitter_url, onclick: "window.open(this.href, 'twitter-share', 'width=550,height=235');return false;"}
--#            %span.hidden Twitter
--#          %a.icon-facebook{href: facebook_url, onclick: "window.open(this.href, 'facebook-share','width=580,height=296');return false;"}
--#            %span.hidden Facebook
--#          %a.icon-google-plus{href: google_plus_url, onclick: "window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;"}
--#            %span.hidden Google+
--#
--#  %aside.read-next
--#    - if prev_article = current_article.previous_article
--#      - attributes = { href: prev_article.url }.merge(cover(prev_article))
--#      %a.read-next-story{attributes}
--#        %section.post
--#          %h2= prev_article.title
--#          %p #{read_next_summary(prev_article, 19)}&hellip;
--#    - if next_article = current_article.next_article
--#      - attributes = { href: next_article.url }.merge(cover(next_article))
--#      %a.read-next-story.prev{attributes}
--#        %section.post
--#          %h2= next_article.title
--#          %p #{read_next_summary(next_article, 19)}&hellip;
-
-
-
-
 = wrap_layout :layout do
   %header.subheader
     .container
       %h2.page-title
         %small
-          %a{:href => "/"}
+          %a{:href => "/blog"}
             %i.fa.fa-chevron-left
         = current_article.title
   %main#content.container
@@ -116,6 +43,8 @@
             %span.fa-stack.fa-lg
               %i.fa.fa-circle.fa-stack-2x
               %i.fa.fa-google.fa-stack-1x.fa-inverse
+        %section.disqus.text-center
+          = partial('shared/disqus')
       .col-md-3
         = partial('shared/recent_nav',
                   locals: { page_articles: page_articles, paginate: paginate })
diff --git a/source/shared/_article.haml b/source/shared/_article.haml
index 951e98d..ed1e87f 100644
--- a/source/shared/_article.haml
+++ b/source/shared/_article.haml
@@ -21,4 +21,4 @@
             #{tags(article)}
 
   %section.post-content
-    = article.body
+    = article.body
\ No newline at end of file
diff --git a/source/shared/_disqus.haml b/source/shared/_disqus.haml
new file mode 100644
index 0000000..c41c86f
--- /dev/null
+++ b/source/shared/_disqus.haml
@@ -0,0 +1,21 @@
+#disqus_thread
+:javascript
+  /**
+  *  RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
+  *  LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
+  /*
+  var disqus_config = function () {
+  this.page.url = #{current_page.url};  // Replace PAGE_URL with your page's canonical URL variable
+  };
+  */
+  (function() { // DON'T EDIT BELOW THIS LINE
+  var d = document, s = d.createElement('script');
+  s.src = 'https://jeffreyfreeman.disqus.com/embed.js';
+  s.setAttribute('data-timestamp', +new Date());
+  (d.head || d.body).appendChild(s);
+  })();
+%noscript
+  Please enable JavaScript to view the
+  %a{:href => "https://disqus.com/?ref_noscript"} comments powered by Disqus.
+
+%script#dsq-count-scr{:async => "", :src => "//jeffreyfreeman.disqus.com/count.js"}
diff --git a/source/shared/_navigation.haml b/source/shared/_navigation.haml
index e081db5..2b128a7 100644
--- a/source/shared/_navigation.haml
+++ b/source/shared/_navigation.haml
@@ -1,17 +1,3 @@
--#.nav
--#  %h3.nav-title Menu
--#  %a.nav-close{href: '#'}
--#    %span.hidden Close
--#  %ul
--#    - navigation.try(:each) do |label, href|
--#      - css_class = %W(nav-#{label.parameterize})
--#      - css_class << "nav-current" if current_page.url == href
--#      %li{class: css_class.join(' ')}
--#        %a{href: href}= label
--#  %a.subscribe-button.icon-feed{href: feed_path} Subscribe
--#%span.nav-cover
-
-
 %nav.navbar.navbar-default
   .container
     .navbar-header
diff --git a/source/shared/_page_articles.haml b/source/shared/_page_articles.haml
index af2274c..9062f29 100644
--- a/source/shared/_page_articles.haml
+++ b/source/shared/_page_articles.haml
@@ -1,28 +1,3 @@
--#.extra-pagination.inner
--#  = partial('shared/pagination') if paginate
--#
--#- page_articles.each do |article|
--#  %article.post
--#    %header.post-header
--#      %h2.post-title= link_to article.title, article
--#    %section.post-excerpt
--#      %p
--#        = summary(article)
--#        = link_to '&raquo;', article, class: 'read-more'
--#    %footer.post-meta
--#      - if gravatar?
--#        %img.author-thumb{src: gravatar(24), alt: blog_author.name, nopin: 'nopin'}
--#      %a{href: author_path}= blog_author.name
--#      - if tags?(article)
--#        on #{tags(article)}
--#      %time.post-date{datetime: article.date.strftime('%Y-%m-%d')}
--#        = article.date.strftime(blog_settings.date_format)
--#
--#= partial('shared/pagination') if paginate
-
-
-
-
 .extra-pagination.inner
   = partial('shared/pagination') if paginate
 
diff --git a/source/shared/_tags_nav.haml b/source/shared/_tags_nav.haml
index 0917224..f0ebf4d 100644
--- a/source/shared/_tags_nav.haml
+++ b/source/shared/_tags_nav.haml
@@ -1,8 +1,8 @@
 %nav.menu.tags
   - if selected_tag == 'all'
-    %a.menu-item.selected{"data-slug" => "all", :href => "/"} All posts
+    %a.menu-item.selected{"data-slug" => "all", :href => "/blog"} All posts
   - else
-    %a.menu-item{"data-slug" => "all", :href => "/"} All posts
+    %a.menu-item{"data-slug" => "all", :href => "/blog"} All posts
 
   - blog.tags.each do |tag, articles|
     - if selected_tag == tag
diff --git a/source/stylesheets/application.css.scss b/source/stylesheets/application.css.scss
index e491fcf..e6bd66a 100644
--- a/source/stylesheets/application.css.scss
+++ b/source/stylesheets/application.css.scss
@@ -215,4 +215,35 @@ code {
 
 @import 'vendor/primer-css/buttons';
 @import 'vendor/primer-css/forms';
-@import 'vendor/primer-css/menu';
\ No newline at end of file
+@import 'vendor/primer-css/menu';
+
+.highlight, .highlight .w {
+  color: #fdfdfd;
+  background-color: #000000;
+}
+
+// ----------------------------------------------------------
+// KaTeX Overloads
+// ----------------------------------------------------------
+.ps-root {
+  font-size: 1.5em;
+}
+
+// ----------------------------------------------------------
+// Youtube videos
+// ----------------------------------------------------------
+.video-container {
+  position: relative;
+  padding-bottom: 56.25%;
+  padding-top: 30px; height: 0; overflow: hidden;
+}
+
+.video-container iframe,
+.video-container object,
+.video-container embed {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
\ No newline at end of file
diff --git a/source/stylesheets/font-awesome.min.css b/source/stylesheets/font-awesome.min.css
new file mode 100644
index 0000000..ee4e978
--- /dev/null
+++ b/source/stylesheets/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ *  Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
+ *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}
diff --git a/source/stylesheets/images/arrow.svg b/source/stylesheets/images/arrow.svg
new file mode 100644
index 0000000..a76c07e
--- /dev/null
+++ b/source/stylesheets/images/arrow.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30px" height="30px" viewBox="0 0 30 30" zoomAndPan="disable" preserveAspectRatio="none">
+    <style type="text/css"><![CDATA[ line { stroke: #ffffff; stroke-width: 3; } ]]></style>
+	<line x1="0" y1="15" x2="15" y2="30" />
+	<line x1="30" y1="15" x2="15" y2="30" />
+	<line x1="15" y1="30" x2="15" y2="0" />
+</svg>
\ No newline at end of file
diff --git a/source/stylesheets/images/bars.svg b/source/stylesheets/images/bars.svg
new file mode 100644
index 0000000..467fb97
--- /dev/null
+++ b/source/stylesheets/images/bars.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" viewBox="0 0 16 16" zoomAndPan="disable" preserveAspectRatio="none">
+    <style type="text/css"><![CDATA[ line { stroke: #ffffff; stroke-width: 2; } ]]></style>
+	<line x1="0" y1="1" x2="16" y2="1" />
+	<line x1="0" y1="7" x2="16" y2="7" />
+	<line x1="0" y1="13" x2="16" y2="13" />
+</svg>
\ No newline at end of file
diff --git a/source/stylesheets/images/close.svg b/source/stylesheets/images/close.svg
new file mode 100644
index 0000000..f80a2a3
--- /dev/null
+++ b/source/stylesheets/images/close.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" viewBox="0 0 16 16" zoomAndPan="disable" preserveAspectRatio="none">
+    <style type="text/css"><![CDATA[ line { stroke: #ffffff; stroke-width: 2; } ]]></style>
+	<line x1="0" y1="0" x2="16" y2="16" />
+	<line x1="16" y1="0" x2="0" y2="16" />
+</svg>
\ No newline at end of file
diff --git a/source/stylesheets/katex.css b/source/stylesheets/katex.css
new file mode 100644
index 0000000..f3137ef
--- /dev/null
+++ b/source/stylesheets/katex.css
@@ -0,0 +1,976 @@
+@font-face {
+  font-family: 'KaTeX_AMS';
+  src: url('/fonts/KaTeX_AMS-Regular.eot');
+  src: url('/fonts/KaTeX_AMS-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_AMS-Regular.woff2') format('woff2'), url('/fonts/KaTeX_AMS-Regular.woff') format('woff'), url('/fonts/KaTeX_AMS-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Caligraphic';
+  src: url('/fonts/KaTeX_Caligraphic-Bold.eot');
+  src: url('/fonts/KaTeX_Caligraphic-Bold.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Caligraphic-Bold.woff2') format('woff2'), url('/fonts/KaTeX_Caligraphic-Bold.woff') format('woff'), url('/fonts/KaTeX_Caligraphic-Bold.ttf') format('truetype');
+  font-weight: bold;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Caligraphic';
+  src: url('/fonts/KaTeX_Caligraphic-Regular.eot');
+  src: url('/fonts/KaTeX_Caligraphic-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Caligraphic-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Caligraphic-Regular.woff') format('woff'), url('/fonts/KaTeX_Caligraphic-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Fraktur';
+  src: url('/fonts/KaTeX_Fraktur-Bold.eot');
+  src: url('/fonts/KaTeX_Fraktur-Bold.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Fraktur-Bold.woff2') format('woff2'), url('/fonts/KaTeX_Fraktur-Bold.woff') format('woff'), url('/fonts/KaTeX_Fraktur-Bold.ttf') format('truetype');
+  font-weight: bold;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Fraktur';
+  src: url('/fonts/KaTeX_Fraktur-Regular.eot');
+  src: url('/fonts/KaTeX_Fraktur-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Fraktur-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Fraktur-Regular.woff') format('woff'), url('/fonts/KaTeX_Fraktur-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Main';
+  src: url('/fonts/KaTeX_Main-Bold.eot');
+  src: url('/fonts/KaTeX_Main-Bold.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Main-Bold.woff2') format('woff2'), url('/fonts/KaTeX_Main-Bold.woff') format('woff'), url('/fonts/KaTeX_Main-Bold.ttf') format('truetype');
+  font-weight: bold;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Main';
+  src: url('/fonts/KaTeX_Main-Italic.eot');
+  src: url('/fonts/KaTeX_Main-Italic.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Main-Italic.woff2') format('woff2'), url('/fonts/KaTeX_Main-Italic.woff') format('woff'), url('/fonts/KaTeX_Main-Italic.ttf') format('truetype');
+  font-weight: normal;
+  font-style: italic;
+}
+@font-face {
+  font-family: 'KaTeX_Main';
+  src: url('/fonts/KaTeX_Main-Regular.eot');
+  src: url('/fonts/KaTeX_Main-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Main-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Main-Regular.woff') format('woff'), url('/fonts/KaTeX_Main-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Math';
+  src: url('/fonts/KaTeX_Math-Italic.eot');
+  src: url('/fonts/KaTeX_Math-Italic.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Math-Italic.woff2') format('woff2'), url('/fonts/KaTeX_Math-Italic.woff') format('woff'), url('/fonts/KaTeX_Math-Italic.ttf') format('truetype');
+  font-weight: normal;
+  font-style: italic;
+}
+@font-face {
+  font-family: 'KaTeX_SansSerif';
+  src: url('/fonts/KaTeX_SansSerif-Regular.eot');
+  src: url('/fonts/KaTeX_SansSerif-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_SansSerif-Regular.woff2') format('woff2'), url('/fonts/KaTeX_SansSerif-Regular.woff') format('woff'), url('/fonts/KaTeX_SansSerif-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Script';
+  src: url('/fonts/KaTeX_Script-Regular.eot');
+  src: url('/fonts/KaTeX_Script-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Script-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Script-Regular.woff') format('woff'), url('/fonts/KaTeX_Script-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Size1';
+  src: url('/fonts/KaTeX_Size1-Regular.eot');
+  src: url('/fonts/KaTeX_Size1-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Size1-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Size1-Regular.woff') format('woff'), url('/fonts/KaTeX_Size1-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Size2';
+  src: url('/fonts/KaTeX_Size2-Regular.eot');
+  src: url('/fonts/KaTeX_Size2-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Size2-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Size2-Regular.woff') format('woff'), url('/fonts/KaTeX_Size2-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Size3';
+  src: url('/fonts/KaTeX_Size3-Regular.eot');
+  src: url('/fonts/KaTeX_Size3-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Size3-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Size3-Regular.woff') format('woff'), url('/fonts/KaTeX_Size3-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Size4';
+  src: url('/fonts/KaTeX_Size4-Regular.eot');
+  src: url('/fonts/KaTeX_Size4-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Size4-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Size4-Regular.woff') format('woff'), url('/fonts/KaTeX_Size4-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'KaTeX_Typewriter';
+  src: url('/fonts/KaTeX_Typewriter-Regular.eot');
+  src: url('/fonts/KaTeX_Typewriter-Regular.eot#iefix') format('embedded-opentype'), url('/fonts/KaTeX_Typewriter-Regular.woff2') format('woff2'), url('/fonts/KaTeX_Typewriter-Regular.woff') format('woff'), url('/fonts/KaTeX_Typewriter-Regular.ttf') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+.katex-display {
+  display: block;
+  margin: 1em 0;
+  text-align: center;
+}
+.katex-display > .katex {
+  display: inline-block;
+  text-align: initial;
+}
+.katex {
+  font: normal 1.21em KaTeX_Main, Times New Roman, serif;
+  line-height: 1.2;
+  white-space: nowrap;
+  text-indent: 0;
+}
+.katex .katex-html {
+  display: inline-block;
+}
+.katex .katex-mathml {
+  position: absolute;
+  clip: rect(1px, 1px, 1px, 1px);
+  padding: 0;
+  border: 0;
+  height: 1px;
+  width: 1px;
+  overflow: hidden;
+}
+.katex .base {
+  display: inline-block;
+}
+.katex .strut {
+  display: inline-block;
+}
+.katex .mathrm {
+  font-style: normal;
+}
+.katex .textit {
+  font-style: italic;
+}
+.katex .mathit {
+  font-family: KaTeX_Math;
+  font-style: italic;
+}
+.katex .mathbf {
+  font-family: KaTeX_Main;
+  font-weight: bold;
+}
+.katex .amsrm {
+  font-family: KaTeX_AMS;
+}
+.katex .mathbb {
+  font-family: KaTeX_AMS;
+}
+.katex .mathcal {
+  font-family: KaTeX_Caligraphic;
+}
+.katex .mathfrak {
+  font-family: KaTeX_Fraktur;
+}
+.katex .mathtt {
+  font-family: KaTeX_Typewriter;
+}
+.katex .mathscr {
+  font-family: KaTeX_Script;
+}
+.katex .mathsf {
+  font-family: KaTeX_SansSerif;
+}
+.katex .mainit {
+  font-family: KaTeX_Main;
+  font-style: italic;
+}
+.katex .mord + .mop {
+  margin-left: 0.16667em;
+}
+.katex .mord + .mbin {
+  margin-left: 0.22222em;
+}
+.katex .mord + .mrel {
+  margin-left: 0.27778em;
+}
+.katex .mord + .minner {
+  margin-left: 0.16667em;
+}
+.katex .mop + .mord {
+  margin-left: 0.16667em;
+}
+.katex .mop + .mop {
+  margin-left: 0.16667em;
+}
+.katex .mop + .mrel {
+  margin-left: 0.27778em;
+}
+.katex .mop + .minner {
+  margin-left: 0.16667em;
+}
+.katex .mbin + .mord {
+  margin-left: 0.22222em;
+}
+.katex .mbin + .mop {
+  margin-left: 0.22222em;
+}
+.katex .mbin + .mopen {
+  margin-left: 0.22222em;
+}
+.katex .mbin + .minner {
+  margin-left: 0.22222em;
+}
+.katex .mrel + .mord {
+  margin-left: 0.27778em;
+}
+.katex .mrel + .mop {
+  margin-left: 0.27778em;
+}
+.katex .mrel + .mopen {
+  margin-left: 0.27778em;
+}
+.katex .mrel + .minner {
+  margin-left: 0.27778em;
+}
+.katex .mclose + .mop {
+  margin-left: 0.16667em;
+}
+.katex .mclose + .mbin {
+  margin-left: 0.22222em;
+}
+.katex .mclose + .mrel {
+  margin-left: 0.27778em;
+}
+.katex .mclose + .minner {
+  margin-left: 0.16667em;
+}
+.katex .mpunct + .mord {
+  margin-left: 0.16667em;
+}
+.katex .mpunct + .mop {
+  margin-left: 0.16667em;
+}
+.katex .mpunct + .mrel {
+  margin-left: 0.16667em;
+}
+.katex .mpunct + .mopen {
+  margin-left: 0.16667em;
+}
+.katex .mpunct + .mclose {
+  margin-left: 0.16667em;
+}
+.katex .mpunct + .mpunct {
+  margin-left: 0.16667em;
+}
+.katex .mpunct + .minner {
+  margin-left: 0.16667em;
+}
+.katex .minner + .mord {
+  margin-left: 0.16667em;
+}
+.katex .minner + .mop {
+  margin-left: 0.16667em;
+}
+.katex .minner + .mbin {
+  margin-left: 0.22222em;
+}
+.katex .minner + .mrel {
+  margin-left: 0.27778em;
+}
+.katex .minner + .mopen {
+  margin-left: 0.16667em;
+}
+.katex .minner + .mpunct {
+  margin-left: 0.16667em;
+}
+.katex .minner + .minner {
+  margin-left: 0.16667em;
+}
+.katex .mord.mtight {
+  margin-left: 0;
+}
+.katex .mop.mtight {
+  margin-left: 0;
+}
+.katex .mbin.mtight {
+  margin-left: 0;
+}
+.katex .mrel.mtight {
+  margin-left: 0;
+}
+.katex .mopen.mtight {
+  margin-left: 0;
+}
+.katex .mclose.mtight {
+  margin-left: 0;
+}
+.katex .mpunct.mtight {
+  margin-left: 0;
+}
+.katex .minner.mtight {
+  margin-left: 0;
+}
+.katex .mord + .mop.mtight {
+  margin-left: 0.16667em;
+}
+.katex .mop + .mord.mtight {
+  margin-left: 0.16667em;
+}
+.katex .mop + .mop.mtight {
+  margin-left: 0.16667em;
+}
+.katex .mclose + .mop.mtight {
+  margin-left: 0.16667em;
+}
+.katex .minner + .mop.mtight {
+  margin-left: 0.16667em;
+}
+.katex .reset-textstyle.textstyle {
+  font-size: 1em;
+}
+.katex .reset-textstyle.scriptstyle {
+  font-size: 0.7em;
+}
+.katex .reset-textstyle.scriptscriptstyle {
+  font-size: 0.5em;
+}
+.katex .reset-scriptstyle.textstyle {
+  font-size: 1.42857em;
+}
+.katex .reset-scriptstyle.scriptstyle {
+  font-size: 1em;
+}
+.katex .reset-scriptstyle.scriptscriptstyle {
+  font-size: 0.71429em;
+}
+.katex .reset-scriptscriptstyle.textstyle {
+  font-size: 2em;
+}
+.katex .reset-scriptscriptstyle.scriptstyle {
+  font-size: 1.4em;
+}
+.katex .reset-scriptscriptstyle.scriptscriptstyle {
+  font-size: 1em;
+}
+.katex .style-wrap {
+  position: relative;
+}
+.katex .vlist {
+  display: inline-block;
+}
+.katex .vlist > span {
+  display: block;
+  height: 0;
+  position: relative;
+}
+.katex .vlist > span > span {
+  display: inline-block;
+}
+.katex .vlist .baseline-fix {
+  display: inline-table;
+  table-layout: fixed;
+}
+.katex .msupsub {
+  text-align: left;
+}
+.katex .mfrac > span > span {
+  text-align: center;
+}
+.katex .mfrac .frac-line {
+  width: 100%;
+}
+.katex .mfrac .frac-line:before {
+  border-bottom-style: solid;
+  border-bottom-width: 1px;
+  content: "";
+  display: block;
+}
+.katex .mfrac .frac-line:after {
+  border-bottom-style: solid;
+  border-bottom-width: 0.04em;
+  content: "";
+  display: block;
+  margin-top: -1px;
+}
+.katex .mspace {
+  display: inline-block;
+}
+.katex .mspace.negativethinspace {
+  margin-left: -0.16667em;
+}
+.katex .mspace.thinspace {
+  width: 0.16667em;
+}
+.katex .mspace.negativemediumspace {
+  margin-left: -0.22222em;
+}
+.katex .mspace.mediumspace {
+  width: 0.22222em;
+}
+.katex .mspace.thickspace {
+  width: 0.27778em;
+}
+.katex .mspace.sixmuspace {
+  width: 0.333333em;
+}
+.katex .mspace.eightmuspace {
+  width: 0.444444em;
+}
+.katex .mspace.enspace {
+  width: 0.5em;
+}
+.katex .mspace.twelvemuspace {
+  width: 0.666667em;
+}
+.katex .mspace.quad {
+  width: 1em;
+}
+.katex .mspace.qquad {
+  width: 2em;
+}
+.katex .llap,
+.katex .rlap {
+  width: 0;
+  position: relative;
+}
+.katex .llap > .inner,
+.katex .rlap > .inner {
+  position: absolute;
+}
+.katex .llap > .fix,
+.katex .rlap > .fix {
+  display: inline-block;
+}
+.katex .llap > .inner {
+  right: 0;
+}
+.katex .rlap > .inner {
+  left: 0;
+}
+.katex .katex-logo .a {
+  font-size: 0.75em;
+  margin-left: -0.32em;
+  position: relative;
+  top: -0.2em;
+}
+.katex .katex-logo .t {
+  margin-left: -0.23em;
+}
+.katex .katex-logo .e {
+  margin-left: -0.1667em;
+  position: relative;
+  top: 0.2155em;
+}
+.katex .katex-logo .x {
+  margin-left: -0.125em;
+}
+.katex .rule {
+  display: inline-block;
+  border: solid 0;
+  position: relative;
+}
+.katex .overline .overline-line,
+.katex .underline .underline-line {
+  width: 100%;
+}
+.katex .overline .overline-line:before,
+.katex .underline .underline-line:before {
+  border-bottom-style: solid;
+  border-bottom-width: 1px;
+  content: "";
+  display: block;
+}
+.katex .overline .overline-line:after,
+.katex .underline .underline-line:after {
+  border-bottom-style: solid;
+  border-bottom-width: 0.04em;
+  content: "";
+  display: block;
+  margin-top: -1px;
+}
+.katex .sqrt > .sqrt-sign {
+  position: relative;
+}
+.katex .sqrt .sqrt-line {
+  width: 100%;
+}
+.katex .sqrt .sqrt-line:before {
+  border-bottom-style: solid;
+  border-bottom-width: 1px;
+  content: "";
+  display: block;
+}
+.katex .sqrt .sqrt-line:after {
+  border-bottom-style: solid;
+  border-bottom-width: 0.04em;
+  content: "";
+  display: block;
+  margin-top: -1px;
+}
+.katex .sqrt > .root {
+  margin-left: 0.27777778em;
+  margin-right: -0.55555556em;
+}
+.katex .sizing,
+.katex .fontsize-ensurer {
+  display: inline-block;
+}
+.katex .sizing.reset-size1.size1,
+.katex .fontsize-ensurer.reset-size1.size1 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size1.size2,
+.katex .fontsize-ensurer.reset-size1.size2 {
+  font-size: 1.4em;
+}
+.katex .sizing.reset-size1.size3,
+.katex .fontsize-ensurer.reset-size1.size3 {
+  font-size: 1.6em;
+}
+.katex .sizing.reset-size1.size4,
+.katex .fontsize-ensurer.reset-size1.size4 {
+  font-size: 1.8em;
+}
+.katex .sizing.reset-size1.size5,
+.katex .fontsize-ensurer.reset-size1.size5 {
+  font-size: 2em;
+}
+.katex .sizing.reset-size1.size6,
+.katex .fontsize-ensurer.reset-size1.size6 {
+  font-size: 2.4em;
+}
+.katex .sizing.reset-size1.size7,
+.katex .fontsize-ensurer.reset-size1.size7 {
+  font-size: 2.88em;
+}
+.katex .sizing.reset-size1.size8,
+.katex .fontsize-ensurer.reset-size1.size8 {
+  font-size: 3.46em;
+}
+.katex .sizing.reset-size1.size9,
+.katex .fontsize-ensurer.reset-size1.size9 {
+  font-size: 4.14em;
+}
+.katex .sizing.reset-size1.size10,
+.katex .fontsize-ensurer.reset-size1.size10 {
+  font-size: 4.98em;
+}
+.katex .sizing.reset-size2.size1,
+.katex .fontsize-ensurer.reset-size2.size1 {
+  font-size: 0.71428571em;
+}
+.katex .sizing.reset-size2.size2,
+.katex .fontsize-ensurer.reset-size2.size2 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size2.size3,
+.katex .fontsize-ensurer.reset-size2.size3 {
+  font-size: 1.14285714em;
+}
+.katex .sizing.reset-size2.size4,
+.katex .fontsize-ensurer.reset-size2.size4 {
+  font-size: 1.28571429em;
+}
+.katex .sizing.reset-size2.size5,
+.katex .fontsize-ensurer.reset-size2.size5 {
+  font-size: 1.42857143em;
+}
+.katex .sizing.reset-size2.size6,
+.katex .fontsize-ensurer.reset-size2.size6 {
+  font-size: 1.71428571em;
+}
+.katex .sizing.reset-size2.size7,
+.katex .fontsize-ensurer.reset-size2.size7 {
+  font-size: 2.05714286em;
+}
+.katex .sizing.reset-size2.size8,
+.katex .fontsize-ensurer.reset-size2.size8 {
+  font-size: 2.47142857em;
+}
+.katex .sizing.reset-size2.size9,
+.katex .fontsize-ensurer.reset-size2.size9 {
+  font-size: 2.95714286em;
+}
+.katex .sizing.reset-size2.size10,
+.katex .fontsize-ensurer.reset-size2.size10 {
+  font-size: 3.55714286em;
+}
+.katex .sizing.reset-size3.size1,
+.katex .fontsize-ensurer.reset-size3.size1 {
+  font-size: 0.625em;
+}
+.katex .sizing.reset-size3.size2,
+.katex .fontsize-ensurer.reset-size3.size2 {
+  font-size: 0.875em;
+}
+.katex .sizing.reset-size3.size3,
+.katex .fontsize-ensurer.reset-size3.size3 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size3.size4,
+.katex .fontsize-ensurer.reset-size3.size4 {
+  font-size: 1.125em;
+}
+.katex .sizing.reset-size3.size5,
+.katex .fontsize-ensurer.reset-size3.size5 {
+  font-size: 1.25em;
+}
+.katex .sizing.reset-size3.size6,
+.katex .fontsize-ensurer.reset-size3.size6 {
+  font-size: 1.5em;
+}
+.katex .sizing.reset-size3.size7,
+.katex .fontsize-ensurer.reset-size3.size7 {
+  font-size: 1.8em;
+}
+.katex .sizing.reset-size3.size8,
+.katex .fontsize-ensurer.reset-size3.size8 {
+  font-size: 2.1625em;
+}
+.katex .sizing.reset-size3.size9,
+.katex .fontsize-ensurer.reset-size3.size9 {
+  font-size: 2.5875em;
+}
+.katex .sizing.reset-size3.size10,
+.katex .fontsize-ensurer.reset-size3.size10 {
+  font-size: 3.1125em;
+}
+.katex .sizing.reset-size4.size1,
+.katex .fontsize-ensurer.reset-size4.size1 {
+  font-size: 0.55555556em;
+}
+.katex .sizing.reset-size4.size2,
+.katex .fontsize-ensurer.reset-size4.size2 {
+  font-size: 0.77777778em;
+}
+.katex .sizing.reset-size4.size3,
+.katex .fontsize-ensurer.reset-size4.size3 {
+  font-size: 0.88888889em;
+}
+.katex .sizing.reset-size4.size4,
+.katex .fontsize-ensurer.reset-size4.size4 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size4.size5,
+.katex .fontsize-ensurer.reset-size4.size5 {
+  font-size: 1.11111111em;
+}
+.katex .sizing.reset-size4.size6,
+.katex .fontsize-ensurer.reset-size4.size6 {
+  font-size: 1.33333333em;
+}
+.katex .sizing.reset-size4.size7,
+.katex .fontsize-ensurer.reset-size4.size7 {
+  font-size: 1.6em;
+}
+.katex .sizing.reset-size4.size8,
+.katex .fontsize-ensurer.reset-size4.size8 {
+  font-size: 1.92222222em;
+}
+.katex .sizing.reset-size4.size9,
+.katex .fontsize-ensurer.reset-size4.size9 {
+  font-size: 2.3em;
+}
+.katex .sizing.reset-size4.size10,
+.katex .fontsize-ensurer.reset-size4.size10 {
+  font-size: 2.76666667em;
+}
+.katex .sizing.reset-size5.size1,
+.katex .fontsize-ensurer.reset-size5.size1 {
+  font-size: 0.5em;
+}
+.katex .sizing.reset-size5.size2,
+.katex .fontsize-ensurer.reset-size5.size2 {
+  font-size: 0.7em;
+}
+.katex .sizing.reset-size5.size3,
+.katex .fontsize-ensurer.reset-size5.size3 {
+  font-size: 0.8em;
+}
+.katex .sizing.reset-size5.size4,
+.katex .fontsize-ensurer.reset-size5.size4 {
+  font-size: 0.9em;
+}
+.katex .sizing.reset-size5.size5,
+.katex .fontsize-ensurer.reset-size5.size5 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size5.size6,
+.katex .fontsize-ensurer.reset-size5.size6 {
+  font-size: 1.2em;
+}
+.katex .sizing.reset-size5.size7,
+.katex .fontsize-ensurer.reset-size5.size7 {
+  font-size: 1.44em;
+}
+.katex .sizing.reset-size5.size8,
+.katex .fontsize-ensurer.reset-size5.size8 {
+  font-size: 1.73em;
+}
+.katex .sizing.reset-size5.size9,
+.katex .fontsize-ensurer.reset-size5.size9 {
+  font-size: 2.07em;
+}
+.katex .sizing.reset-size5.size10,
+.katex .fontsize-ensurer.reset-size5.size10 {
+  font-size: 2.49em;
+}
+.katex .sizing.reset-size6.size1,
+.katex .fontsize-ensurer.reset-size6.size1 {
+  font-size: 0.41666667em;
+}
+.katex .sizing.reset-size6.size2,
+.katex .fontsize-ensurer.reset-size6.size2 {
+  font-size: 0.58333333em;
+}
+.katex .sizing.reset-size6.size3,
+.katex .fontsize-ensurer.reset-size6.size3 {
+  font-size: 0.66666667em;
+}
+.katex .sizing.reset-size6.size4,
+.katex .fontsize-ensurer.reset-size6.size4 {
+  font-size: 0.75em;
+}
+.katex .sizing.reset-size6.size5,
+.katex .fontsize-ensurer.reset-size6.size5 {
+  font-size: 0.83333333em;
+}
+.katex .sizing.reset-size6.size6,
+.katex .fontsize-ensurer.reset-size6.size6 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size6.size7,
+.katex .fontsize-ensurer.reset-size6.size7 {
+  font-size: 1.2em;
+}
+.katex .sizing.reset-size6.size8,
+.katex .fontsize-ensurer.reset-size6.size8 {
+  font-size: 1.44166667em;
+}
+.katex .sizing.reset-size6.size9,
+.katex .fontsize-ensurer.reset-size6.size9 {
+  font-size: 1.725em;
+}
+.katex .sizing.reset-size6.size10,
+.katex .fontsize-ensurer.reset-size6.size10 {
+  font-size: 2.075em;
+}
+.katex .sizing.reset-size7.size1,
+.katex .fontsize-ensurer.reset-size7.size1 {
+  font-size: 0.34722222em;
+}
+.katex .sizing.reset-size7.size2,
+.katex .fontsize-ensurer.reset-size7.size2 {
+  font-size: 0.48611111em;
+}
+.katex .sizing.reset-size7.size3,
+.katex .fontsize-ensurer.reset-size7.size3 {
+  font-size: 0.55555556em;
+}
+.katex .sizing.reset-size7.size4,
+.katex .fontsize-ensurer.reset-size7.size4 {
+  font-size: 0.625em;
+}
+.katex .sizing.reset-size7.size5,
+.katex .fontsize-ensurer.reset-size7.size5 {
+  font-size: 0.69444444em;
+}
+.katex .sizing.reset-size7.size6,
+.katex .fontsize-ensurer.reset-size7.size6 {
+  font-size: 0.83333333em;
+}
+.katex .sizing.reset-size7.size7,
+.katex .fontsize-ensurer.reset-size7.size7 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size7.size8,
+.katex .fontsize-ensurer.reset-size7.size8 {
+  font-size: 1.20138889em;
+}
+.katex .sizing.reset-size7.size9,
+.katex .fontsize-ensurer.reset-size7.size9 {
+  font-size: 1.4375em;
+}
+.katex .sizing.reset-size7.size10,
+.katex .fontsize-ensurer.reset-size7.size10 {
+  font-size: 1.72916667em;
+}
+.katex .sizing.reset-size8.size1,
+.katex .fontsize-ensurer.reset-size8.size1 {
+  font-size: 0.28901734em;
+}
+.katex .sizing.reset-size8.size2,
+.katex .fontsize-ensurer.reset-size8.size2 {
+  font-size: 0.40462428em;
+}
+.katex .sizing.reset-size8.size3,
+.katex .fontsize-ensurer.reset-size8.size3 {
+  font-size: 0.46242775em;
+}
+.katex .sizing.reset-size8.size4,
+.katex .fontsize-ensurer.reset-size8.size4 {
+  font-size: 0.52023121em;
+}
+.katex .sizing.reset-size8.size5,
+.katex .fontsize-ensurer.reset-size8.size5 {
+  font-size: 0.57803468em;
+}
+.katex .sizing.reset-size8.size6,
+.katex .fontsize-ensurer.reset-size8.size6 {
+  font-size: 0.69364162em;
+}
+.katex .sizing.reset-size8.size7,
+.katex .fontsize-ensurer.reset-size8.size7 {
+  font-size: 0.83236994em;
+}
+.katex .sizing.reset-size8.size8,
+.katex .fontsize-ensurer.reset-size8.size8 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size8.size9,
+.katex .fontsize-ensurer.reset-size8.size9 {
+  font-size: 1.19653179em;
+}
+.katex .sizing.reset-size8.size10,
+.katex .fontsize-ensurer.reset-size8.size10 {
+  font-size: 1.43930636em;
+}
+.katex .sizing.reset-size9.size1,
+.katex .fontsize-ensurer.reset-size9.size1 {
+  font-size: 0.24154589em;
+}
+.katex .sizing.reset-size9.size2,
+.katex .fontsize-ensurer.reset-size9.size2 {
+  font-size: 0.33816425em;
+}
+.katex .sizing.reset-size9.size3,
+.katex .fontsize-ensurer.reset-size9.size3 {
+  font-size: 0.38647343em;
+}
+.katex .sizing.reset-size9.size4,
+.katex .fontsize-ensurer.reset-size9.size4 {
+  font-size: 0.43478261em;
+}
+.katex .sizing.reset-size9.size5,
+.katex .fontsize-ensurer.reset-size9.size5 {
+  font-size: 0.48309179em;
+}
+.katex .sizing.reset-size9.size6,
+.katex .fontsize-ensurer.reset-size9.size6 {
+  font-size: 0.57971014em;
+}
+.katex .sizing.reset-size9.size7,
+.katex .fontsize-ensurer.reset-size9.size7 {
+  font-size: 0.69565217em;
+}
+.katex .sizing.reset-size9.size8,
+.katex .fontsize-ensurer.reset-size9.size8 {
+  font-size: 0.83574879em;
+}
+.katex .sizing.reset-size9.size9,
+.katex .fontsize-ensurer.reset-size9.size9 {
+  font-size: 1em;
+}
+.katex .sizing.reset-size9.size10,
+.katex .fontsize-ensurer.reset-size9.size10 {
+  font-size: 1.20289855em;
+}
+.katex .sizing.reset-size10.size1,
+.katex .fontsize-ensurer.reset-size10.size1 {
+  font-size: 0.20080321em;
+}
+.katex .sizing.reset-size10.size2,
+.katex .fontsize-ensurer.reset-size10.size2 {
+  font-size: 0.2811245em;
+}
+.katex .sizing.reset-size10.size3,
+.katex .fontsize-ensurer.reset-size10.size3 {
+  font-size: 0.32128514em;
+}
+.katex .sizing.reset-size10.size4,
+.katex .fontsize-ensurer.reset-size10.size4 {
+  font-size: 0.36144578em;
+}
+.katex .sizing.reset-size10.size5,
+.katex .fontsize-ensurer.reset-size10.size5 {
+  font-size: 0.40160643em;
+}
+.katex .sizing.reset-size10.size6,
+.katex .fontsize-ensurer.reset-size10.size6 {
+  font-size: 0.48192771em;
+}
+.katex .sizing.reset-size10.size7,
+.katex .fontsize-ensurer.reset-size10.size7 {
+  font-size: 0.57831325em;
+}
+.katex .sizing.reset-size10.size8,
+.katex .fontsize-ensurer.reset-size10.size8 {
+  font-size: 0.69477912em;
+}
+.katex .sizing.reset-size10.size9,
+.katex .fontsize-ensurer.reset-size10.size9 {
+  font-size: 0.8313253em;
+}
+.katex .sizing.reset-size10.size10,
+.katex .fontsize-ensurer.reset-size10.size10 {
+  font-size: 1em;
+}
+.katex .delimsizing.size1 {
+  font-family: KaTeX_Size1;
+}
+.katex .delimsizing.size2 {
+  font-family: KaTeX_Size2;
+}
+.katex .delimsizing.size3 {
+  font-family: KaTeX_Size3;
+}
+.katex .delimsizing.size4 {
+  font-family: KaTeX_Size4;
+}
+.katex .delimsizing.mult .delim-size1 > span {
+  font-family: KaTeX_Size1;
+}
+.katex .delimsizing.mult .delim-size4 > span {
+  font-family: KaTeX_Size4;
+}
+.katex .nulldelimiter {
+  display: inline-block;
+  width: 0.12em;
+}
+.katex .op-symbol {
+  position: relative;
+}
+.katex .op-symbol.small-op {
+  font-family: KaTeX_Size1;
+}
+.katex .op-symbol.large-op {
+  font-family: KaTeX_Size2;
+}
+.katex .op-limits > .vlist > span {
+  text-align: center;
+}
+.katex .accent > .vlist > span {
+  text-align: center;
+}
+.katex .accent .accent-body > span {
+  width: 0;
+}
+.katex .accent .accent-body.accent-vec > span {
+  position: relative;
+  left: 0.326em;
+}
+.katex .mtable .vertical-separator {
+  display: inline-block;
+  margin: 0 -0.025em;
+  border-right: 0.05em solid black;
+}
+.katex .mtable .arraycolsep {
+  display: inline-block;
+}
+.katex .mtable .col-align-c > .vlist {
+  text-align: center;
+}
+.katex .mtable .col-align-l > .vlist {
+  text-align: left;
+}
+.katex .mtable .col-align-r > .vlist {
+  text-align: right;
+}
diff --git a/source/stylesheets/pseudocode.css b/source/stylesheets/pseudocode.css
new file mode 100644
index 0000000..1db441d
--- /dev/null
+++ b/source/stylesheets/pseudocode.css
@@ -0,0 +1 @@
+@font-face{font-family:KaTeX_Typewriter_Replace;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('ttf');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_SansSerif_Replace;src:url(fonts/KaTeX_SansSerif-Bold.eot);src:url(fonts/KaTeX_SansSerif-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Bold.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Bold.woff) format('woff'),url(fonts/KaTeX_SansSerif-Bold.ttf) format('ttf');font-weight:700;font-style:normal}.ps-root{font-family:KaTeX_Main,'Times New Roman',Times,serif;font-size:1em;font-weight:100;-webkit-font-smoothing:antialiased!important}.ps-root .ps-algorithm{margin:.8em 0;border-top:3px solid #000;border-bottom:2px solid #000}.ps-root .ps-algorithm.with-caption>.ps-line:first-child{border-bottom:2px solid #000}.ps-root .katex{text-indent:0;font-size:1em}.ps-root .ps-line{margin:0;padding:0;line-height:1.2}.ps-root .ps-funcname{font-family:KaTeX_Main,'Times New Roman',Times,serif;font-weight:400;font-variant:small-caps;font-style:normal;text-transform:none}.ps-root .ps-keyword{font-family:KaTeX_Main,'Times New Roman',Times,serif;font-weight:700;font-variant:normal;font-style:normal;text-transform:none}.ps-root .ps-comment{font-family:KaTeX_Main,'Times New Roman',Times,serif;font-weight:400;font-variant:normal;font-style:normal;text-transform:none}.ps-root .ps-linenum{font-size:.8em;line-height:1em;width:1.6em;text-align:right;display:inline-block;position:relative;padding-right:.3em}.ps-root .ps-algorithmic.with-linenum .ps-line.ps-code{text-indent:-1.6em}.ps-root .ps-algorithmic.with-linenum .ps-line.ps-code>span{text-indent:0}
\ No newline at end of file
diff --git a/source/tag.html.haml b/source/tag.html.haml
index 1eef8d3..35013b1 100644
--- a/source/tag.html.haml
+++ b/source/tag.html.haml
@@ -3,28 +3,6 @@ pageable: true
 per_page: 6
 ---
 
--#%header.main-header.tag-head{cover}
--#  %nav.main-nav.overlay.clearfix
--#    - if blog_settings.logo.present?
--#      %a.blog-logo{href: home_path}
--#        = image_tag blog_settings.logo, alt: blog_settings.name
--#    - if blog_settings.navigation
--#      %a.menu-button.icon-menu{href: '#'}
--#        %span.word Menu
--#  .vertical
--#    .main-header-content.inner
--#      %h1.page-title= tagname
--#      %h2.page-description A #{page_articles.count}-post collection
--#
--#%main#content.content{role: :main}
--#  = partial('shared/page_articles',
--#            locals: { page_articles: page_articles, paginate: paginate })
-
-
-
-
-
-
 %header.subheader
   .container
     %h2.page-title
-- 
GitLab